Hello, On 02/02/2022 20:17:30-0600, Samuel Holland wrote: > This patch series adds a CCU driver for the RTC in the H616, R329 and > D1. The extra patch at the end of this series shows how it would be > explanded to additional hardware variants. > > The driver is intended to support the existing binding used for the H6, > but also an updated binding which includes all RTC input clocks. > > A future patch series could add functionality to the driver to manage > IOSC calibration at boot and during suspend/resume. > > It may be possible to support all of these hardware variants without > adding this new driver, by adding them to the existing RTC clock > provider, but I'm concerned about the complexity there, without any of > the CCU abstraction. > > Changes in v3: > - Add/fix several maxItems attributes for clocks and clock-items > - Drop the SUNXI_CCU_MUX_HW_WITH_KEY macro, since it is no longer used. > - Also drop the patch adding the SUNXI_CCU_MUX_DATA_WITH_GATE macro. > - Rebase on v5.17-rc2 (CCU module support series was merged). > - Move IOSC calibration control to prepare/unprepare operations. > - Declare several `struct clk_init_data`s as static variables (instead > of as anonymous) so they can be modified from the probe function > without casting away const. > - Instead of creating two copies of clocks which may or may not have > muxes, change the number of parents to 1 in the non-mux case. > - Use a single CCU description for all variants. > - Use IS_REACHABLE to guard the call to sun6i_rtc_ccu_probe. > - Allow the driver to be built on !ARM64 (i.e. RISCV). > - Rebase example on top of driver changes, and drop the second example. > > Changes in v2: > - Combine "const"s to "enum" in the DT binding compatible property. > - Properly update the DT binding clocks and clock-names properties. > - Rebase on v2 of the CCU module support series. > - Load the CCU driver from the RTC driver, not as an OF provider. > > Samuel Holland (6): > dt-bindings: rtc: sun6i: Clean up repetition > dt-bindings: rtc: sun6i: Add H616, R329, and D1 support > rtc: sun6i: Enable the bus clock when provided I've now applied 1-3/6, thanks! > clk: sunxi-ng: mux: Allow muxes to have keys > clk: sunxi-ng: Add support for the sun6i RTC clocks > [DO NOT MERGE] clk: sunxi-ng: sun6i-rtc: Add support for H6 > > .../bindings/rtc/allwinner,sun6i-a31-rtc.yaml | 84 +++- > drivers/clk/sunxi-ng/Kconfig | 5 + > drivers/clk/sunxi-ng/Makefile | 2 + > drivers/clk/sunxi-ng/ccu-sun6i-rtc.c | 393 ++++++++++++++++++ > drivers/clk/sunxi-ng/ccu-sun6i-rtc.h | 15 + > drivers/clk/sunxi-ng/ccu_common.h | 1 + > drivers/clk/sunxi-ng/ccu_mux.c | 7 + > drivers/rtc/rtc-sun6i.c | 48 ++- > include/dt-bindings/clock/sun6i-rtc.h | 10 + > include/linux/clk/sunxi-ng.h | 2 + > 10 files changed, 538 insertions(+), 29 deletions(-) > create mode 100644 drivers/clk/sunxi-ng/ccu-sun6i-rtc.c > create mode 100644 drivers/clk/sunxi-ng/ccu-sun6i-rtc.h > create mode 100644 include/dt-bindings/clock/sun6i-rtc.h > > -- > 2.33.1 > -- Alexandre Belloni, co-owner and COO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com