]> git.baikalelectronics.ru Git - kernel.git/commit
clk: sunxi-ng: Add support for the sun6i RTC clocks
authorSamuel Holland <samuel@sholland.org>
Thu, 3 Feb 2022 02:17:35 +0000 (20:17 -0600)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Wed, 23 Mar 2022 18:58:38 +0000 (19:58 +0100)
commitf8ed99dcdaafb4a277505bc06ec8a2bf7cb1fe91
tree7eba8348e3214a8a9423b52fb13de6e9fd7a5a2e
parent830a959efb39cfe8d4f7b2b768b195b735e17da8
clk: sunxi-ng: Add support for the sun6i RTC clocks

The RTC power domain in sun6i and newer SoCs manages the 16 MHz RC
oscillator (called "IOSC" or "osc16M") and the optional 32 kHz crystal
oscillator (called "LOSC" or "osc32k"). Starting with the H6, this power
domain also handles the 24 MHz DCXO (called variously "HOSC", "dcxo24M",
or "osc24M") as well. The H6 also adds a calibration circuit for IOSC.

Later SoCs introduce further variations on the design:
 - H616 adds an additional mux for the 32 kHz fanout source.
 - R329 adds an additional mux for the RTC timekeeping clock, a clock
   for the SPI bus between power domains inside the RTC, and removes the
   IOSC calibration functionality.

Take advantage of the CCU framework to handle this increased complexity.
This driver is intended to be a drop-in replacement for the existing RTC
clock provider. So some runtime adjustment of the clock parents is
needed, both to handle hardware differences, and to support the old
binding which omitted some of the input clocks.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Acked-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Link: https://lore.kernel.org/r/20220203021736.13434-6-samuel@sholland.org
drivers/clk/sunxi-ng/Kconfig
drivers/clk/sunxi-ng/Makefile
drivers/clk/sunxi-ng/ccu-sun6i-rtc.c [new file with mode: 0644]
drivers/clk/sunxi-ng/ccu-sun6i-rtc.h [new file with mode: 0644]
drivers/rtc/rtc-sun6i.c
include/linux/clk/sunxi-ng.h