mbox series

[v2,0/9] clk: sunxi-ng: Add a RTC CCU driver

Message ID 20210928080335.36706-1-samuel@sholland.org
Headers show
Series clk: sunxi-ng: Add a RTC CCU driver | expand

Message

Samuel Holland Sept. 28, 2021, 8:03 a.m. UTC
This patch series adds a CCU driver for the RTC in the H616, R329 and
D1. The extra patches at the end of this series show 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 in the
existing RTC clock driver and avoid some duplicate code, but I'm
concerned about the complexity there, without any of the CCU
abstraction.

This series is currently based on top of the other series I just sent
("[PATCH v2 0/4] clk: sunxi-ng: Module support"), but I can rebase it
elsewhere.

Changes since v1:
  - Rebase on v2 of the module support series.
  - Combine "const"s to "enum" in the DT binding compatible property.
  - Properly update the DT binding clocks and clock-names properties.
  - Load the CCU driver from the RTC driver, not as an OF provider.

Samuel Holland (9):
  dt-bindings: rtc: sun6i: Clean up repetition
  dt-bindings: rtc: sun6i: Add H616, R329, and D1 support
  clk: sunxi-ng: div: Add macro using CLK_HW_INIT_FW_NAME
  clk: sunxi-ng: mux: Add macro using CLK_HW_INIT_PARENTS_DATA
  clk: sunxi-ng: mux: Allow muxes to have keys
  rtc: sun6i: Allow probing without an early clock provider
  clk: sunxi-ng: Add support for the sun6i RTC clocks
  [DO NOT MERGE] clk: sunxi-ng: sun6i-rtc: Add support for H6
  [DO NOT MERGE] clk: sunxi-ng: sun6i-rtc: Add support for T5

 .../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          | 467 ++++++++++++++++++
 drivers/clk/sunxi-ng/ccu-sun6i-rtc.h          |  16 +
 drivers/clk/sunxi-ng/ccu_common.h             |   1 +
 drivers/clk/sunxi-ng/ccu_div.h                |  14 +
 drivers/clk/sunxi-ng/ccu_gate.c               |   3 +
 drivers/clk/sunxi-ng/ccu_mux.c                |   7 +
 drivers/clk/sunxi-ng/ccu_mux.h                |  28 ++
 drivers/rtc/rtc-sun6i.c                       |  35 +-
 include/dt-bindings/clock/sun6i-rtc.h         |  10 +
 include/linux/clk/sunxi-ng.h                  |   9 +
 13 files changed, 648 insertions(+), 33 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