[PATCH net-next v5 0/3] dpll: add SiTime SiT9531x DPLL clock driver
Ali Rouhi <[email protected]>
| Newsgroups | org.kernel.vger.netdev,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
This series adds a DPLL subsystem driver for the SiTime SiT95316 and SiT95317 I2C clock generators. Each device integrates four PLLs with automatic/manual reference selection and on-chip TDC phase-offset measurement, and is used for synchronization in telecom, networking, and data-center timing. The series contains the device-tree binding, the driver under drivers/dpll/sit9531x/, and the MAINTAINERS entry. v1: https://lore.kernel.org/netdev/[email protected]/ v2: https://lore.kernel.org/netdev/[email protected]/ v3: https://lore.kernel.org/netdev/[email protected]/ v4: https://lore.kernel.org/netdev/[email protected]/ Changes since v4 (address Krzysztof Kozlowski's review): Binding: - Rename sitime,sit9531x.yaml to sitime,sit95316.yaml, naming the file after the first compatible rather than a wildcard the parts do not carry, and drop "SiT9531x" from the title for the same reason. - Correct the input count: both parts expose eight selectable references (four differential pairs whose lanes can also be driven separately as single-ended inputs). - Drop the clock-frequency fallback and the schema branch that allowed it; the oscillator is always described through the clock framework, so clocks/clock-names are now required. - Explain why sitime,pll-fvco carries no unit suffix (the values exceed the 32 bits "-hz" allows and are not whole megahertz), and add it, together with sitime,output-pll-map, to the example. - Keep a single example. Driver: - Drop the debugfs interface and the orphaned DCO steering backend that only fed it. - Rework the DPLL init/teardown so the error path unwinds explicitly instead of probing internal state, registering the managed cleanup action only after every field it touches is initialized. - Drop the clock-frequency fallback for the XO rate; the clock is required, so devm_clk_get_enabled() replaces the _optional_ variant. - Drop the i2c_device_id table; the OF table alone suffices. - Take dev_err_probe()'s return value directly. - Say nothing on success; an unknown dpll-types string becomes a warning rather than an info log. - Move DPLL registration next to probe, drop the kernel-doc formalism from internal helpers, and cut the narration out of the comments. - Name the page-0 status registers after what they hold (register 0x06 is outer loss-of-lock, not holdover) and remove the register defines left with nothing to define after the DCO/SYSREF removals. - Rebased onto current net-next; base-commit recorded below. Ali Rouhi (3): dt-bindings: vendor-prefixes: add SiTime Corporation dt-bindings: dpll: add SiTime SiT95316 clock generator dpll: add SiTime SiT9531x DPLL clock driver .../bindings/dpll/sitime,sit95316.yaml | 171 + .../devicetree/bindings/vendor-prefixes.yaml | 2 + MAINTAINERS | 7 + drivers/dpll/Kconfig | 1 + drivers/dpll/Makefile | 1 + drivers/dpll/sit9531x/Kconfig | 17 + drivers/dpll/sit9531x/Makefile | 4 + drivers/dpll/sit9531x/core.c | 2939 +++++++++++++++++ drivers/dpll/sit9531x/core.h | 367 ++ drivers/dpll/sit9531x/dpll.c | 1151 +++++++ drivers/dpll/sit9531x/dpll.h | 69 + drivers/dpll/sit9531x/prop.c | 397 +++ drivers/dpll/sit9531x/prop.h | 39 + drivers/dpll/sit9531x/regs.h | 318 ++ 14 files changed, 5483 insertions(+) create mode 100644 Documentation/devicetree/bindings/dpll/sitime,sit95316.yaml create mode 100644 drivers/dpll/sit9531x/Kconfig create mode 100644 drivers/dpll/sit9531x/Makefile create mode 100644 drivers/dpll/sit9531x/core.c create mode 100644 drivers/dpll/sit9531x/core.h create mode 100644 drivers/dpll/sit9531x/dpll.c create mode 100644 drivers/dpll/sit9531x/dpll.h create mode 100644 drivers/dpll/sit9531x/prop.c create mode 100644 drivers/dpll/sit9531x/prop.h create mode 100644 drivers/dpll/sit9531x/regs.h base-commit: 001b5d347d8ba39b2dccaefcc57967b18caec8fe -- 2.43.0