[PATCH net-next v5 0/3] dpll: add SiTime SiT9531x DPLL clock driver

From: Ali Rouhi

Date: Mon Aug 10 2026 - 19:05:18 EST


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/20260511211143.19792-1-arouhi@xxxxxxxxxx/
v2: https://lore.kernel.org/netdev/20260520191943.73938-1-arouhi@xxxxxxxxxx/
v3: https://lore.kernel.org/netdev/20260731180951.65725-1-arouhi@xxxxxxxxxx/
v4: https://lore.kernel.org/netdev/20260806232439.27551-1-arouhi@xxxxxxxxxx/

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