clocksource: dw_apb_timer: add infrastructure to handle quirks

The dw_apb_timer as Synopsis-Designware component is prone to
the licensees modifying the IP to their needs.

Therefore add infrastructure to handle notify the driver of
hardware-quirks.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
clocksource: dw_apb_timer: make registers flexible

There exists variants of the apb-timer that use slightly different
register position. To accomodate this, add elements to the timer struct
to hold the actual register offsets.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
clocksource: dw_apb_timer: add quirk for variants with two value registers

This adds a quirk for IP variants containing two load_count and value
registers that are used to provide for example 64bit accuracy on 32bit
systems.
The added accuracy is currently not used, the driver is only adapted to
handle the different register layout and make it work on affected devices.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
clocksource: dw_apb_timer_of: add quirk handling

timer_get_base_and_rate now also can extract informations about present
hardware-quirks from the devicetree node and transmit it to the
clocksource / clockevent init function.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
clocksource: dw_apb_timer: add special variant for rockchip rk3188 timers

The rk3188 uses a variant of the timer containing two registers for load_count
and current_values.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
add debug output to verify what if the two registers behave as expected