linux-stable/drivers/clk/sunxi-ng
Samuel Holland d91612d7f0 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
2022-03-23 19:58:38 +01:00
..
ccu-sun4i-a10.c clk: sunxi-ng: Convert early providers to platform drivers 2021-11-23 10:29:05 +01:00
ccu-sun4i-a10.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
ccu-sun5i.c clk: sunxi-ng: Unregister clocks/resets when unbinding 2021-09-13 09:03:20 +02:00
ccu-sun5i.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
ccu-sun6i-a31.c clk: sunxi-ng: Convert early providers to platform drivers 2021-11-23 10:29:05 +01:00
ccu-sun6i-a31.h clk: sunxi: a31: Export the MIPI PLL 2020-01-04 09:45:09 +01:00
ccu-sun6i-rtc.c clk: sunxi-ng: Add support for the sun6i RTC clocks 2022-03-23 19:58:38 +01:00
ccu-sun6i-rtc.h clk: sunxi-ng: Add support for the sun6i RTC clocks 2022-03-23 19:58:38 +01:00
ccu-sun8i-a23-a33.h clk: sunxi: a23/a33: Export the MIPI PLL 2020-01-04 09:45:19 +01:00
ccu-sun8i-a23.c clk: sunxi-ng: Convert early providers to platform drivers 2021-11-23 10:29:05 +01:00
ccu-sun8i-a33.c clk: sunxi-ng: Convert early providers to platform drivers 2021-11-23 10:29:05 +01:00
ccu-sun8i-a83t.c clk: sunxi-ng: Allow drivers to be built as modules 2021-11-22 10:02:21 +01:00
ccu-sun8i-a83t.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
ccu-sun8i-de2.c clk: sunxi-ng: Allow drivers to be built as modules 2021-11-22 10:02:21 +01:00
ccu-sun8i-de2.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
ccu-sun8i-h3.c clk: sunxi-ng: Convert early providers to platform drivers 2021-11-23 10:29:05 +01:00
ccu-sun8i-h3.h dt-bindings: clock: sunxi: Export CLK_DRAM for devfreq 2021-11-23 11:29:35 +01:00
ccu-sun8i-r.c clk: sunxi-ng: Convert early providers to platform drivers 2021-11-23 10:29:05 +01:00
ccu-sun8i-r.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
ccu-sun8i-r40.c clk: sunxi-ng: Allow drivers to be built as modules 2021-11-22 10:02:21 +01:00
ccu-sun8i-r40.h clk: sunxi-ng: r40: Export MBUS clock 2020-01-03 10:37:14 +01:00
ccu-sun8i-v3s.c clk: sunxi-ng: Convert early providers to platform drivers 2021-11-23 10:29:05 +01:00
ccu-sun8i-v3s.h clk: sunxi-ng: v3s: Fix incorrect number of hw_clks. 2019-12-09 08:49:31 +01:00
ccu-sun9i-a80-de.c clk: sunxi-ng: Allow drivers to be built as modules 2021-11-22 10:02:21 +01:00
ccu-sun9i-a80-de.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
ccu-sun9i-a80-usb.c clk: sunxi-ng: Allow drivers to be built as modules 2021-11-22 10:02:21 +01:00
ccu-sun9i-a80-usb.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
ccu-sun9i-a80.c clk: sunxi-ng: Allow drivers to be built as modules 2021-11-22 10:02:21 +01:00
ccu-sun9i-a80.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
ccu-sun20i-d1-r.c clk: sunxi-ng: Add support for the D1 SoC clocks 2021-11-23 10:29:05 +01:00
ccu-sun20i-d1-r.h clk: sunxi-ng: Add support for the D1 SoC clocks 2021-11-23 10:29:05 +01:00
ccu-sun20i-d1.c clk: sunxi-ng: Add support for the D1 SoC clocks 2021-11-23 10:29:05 +01:00
ccu-sun20i-d1.h clk: sunxi-ng: Add support for the D1 SoC clocks 2021-11-23 10:29:05 +01:00
ccu-sun50i-a64.c clk: sunxi-ng: Allow drivers to be built as modules 2021-11-22 10:02:21 +01:00
ccu-sun50i-a64.h dt-bindings: clock: sunxi: Export CLK_DRAM for devfreq 2021-11-23 11:29:35 +01:00
ccu-sun50i-a100-r.c clk: sunxi-ng: Allow drivers to be built as modules 2021-11-22 10:02:21 +01:00
ccu-sun50i-a100-r.h clk: sunxi-ng: add support for the Allwinner A100 CCU 2020-08-25 10:52:18 +02:00
ccu-sun50i-a100.c clk: sunxi-ng: Allow drivers to be built as modules 2021-11-22 10:02:21 +01:00
ccu-sun50i-a100.h clk: sunxi-ng: add support for the Allwinner A100 CCU 2020-08-25 10:52:18 +02:00
ccu-sun50i-h6-r.c clk: sunxi-ng: Convert early providers to platform drivers 2021-11-23 10:29:05 +01:00
ccu-sun50i-h6-r.h clk: sunxi-ng: h6-r: Add R_APB2_RSB clock and reset 2021-01-06 19:34:29 +08:00
ccu-sun50i-h6.c clk: sunxi-ng: Allow drivers to be built as modules 2021-11-22 10:02:21 +01:00
ccu-sun50i-h6.h clk: sunxi-ng: Use the correct style for SPDX License Identifier 2019-05-01 13:01:26 -07:00
ccu-sun50i-h616.c clk: sunxi-ng: Convert early providers to platform drivers 2021-11-23 10:29:05 +01:00
ccu-sun50i-h616.h clk: sunxi-ng: Add support for the Allwinner H616 CCU 2021-01-28 11:14:35 +01:00
ccu-suniv-f1c100s.c clk: sunxi-ng: Convert early providers to platform drivers 2021-11-23 10:29:05 +01:00
ccu-suniv-f1c100s.h clk: sunxi-ng: Use the correct style for SPDX License Identifier 2019-05-01 13:01:26 -07:00
ccu_common.c clk: sunxi-ng: Allow the CCU core to be built as a module 2021-11-23 10:29:05 +01:00
ccu_common.h clk: sunxi-ng: mux: Allow muxes to have keys 2022-03-23 19:58:38 +01:00
ccu_div.c clk: sunxi-ng: Export symbols used by CCU drivers 2021-11-22 10:02:21 +01:00
ccu_div.h clk: sunxi-ng: div: Add macros using clk_parent_data and clk_hw 2021-11-23 10:29:05 +01:00
ccu_frac.c clk: sunxi-ng: Export symbols used by CCU drivers 2021-11-22 10:02:21 +01:00
ccu_frac.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
ccu_gate.c clk: sunxi-ng: Export symbols used by CCU drivers 2021-11-22 10:02:21 +01:00
ccu_gate.h clk: sunxi-ng: gate: Add macros for gates with fixed dividers 2021-11-23 10:29:05 +01:00
ccu_mmc_timing.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
ccu_mp.c clk: sunxi-ng: Export symbols used by CCU drivers 2021-11-22 10:02:21 +01:00
ccu_mp.h clk: sunxi-ng: mp: Add macros using clk_parent_data and clk_hw 2021-11-23 10:29:05 +01:00
ccu_mult.c clk: sunxi-ng: Export symbols used by CCU drivers 2021-11-22 10:02:21 +01:00
ccu_mult.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ccu_mux.c clk: sunxi-ng: mux: Allow muxes to have keys 2022-03-23 19:58:38 +01:00
ccu_mux.h clk: sunxi-ng: mux: Add macros using clk_parent_data and clk_hw 2021-11-23 10:29:05 +01:00
ccu_nk.c clk: sunxi-ng: Export symbols used by CCU drivers 2021-11-22 10:02:21 +01:00
ccu_nk.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
ccu_nkm.c clk: sunxi-ng: Export symbols used by CCU drivers 2021-11-22 10:02:21 +01:00
ccu_nkm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
ccu_nkmp.c clk: sunxi-ng: Export symbols used by CCU drivers 2021-11-22 10:02:21 +01:00
ccu_nkmp.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
ccu_nm.c clk: sunxi-ng: Export symbols used by CCU drivers 2021-11-22 10:02:21 +01:00
ccu_nm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
ccu_phase.c clk: sunxi-ng: Export symbols used by CCU drivers 2021-11-22 10:02:21 +01:00
ccu_phase.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
ccu_reset.c clk: sunxi-ng: Export symbols used by CCU drivers 2021-11-22 10:02:21 +01:00
ccu_reset.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
ccu_sdm.c clk: sunxi-ng: Export symbols used by CCU drivers 2021-11-22 10:02:21 +01:00
ccu_sdm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
Kconfig clk: sunxi-ng: Add support for the sun6i RTC clocks 2022-03-23 19:58:38 +01:00
Makefile clk: sunxi-ng: Add support for the sun6i RTC clocks 2022-03-23 19:58:38 +01:00