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

Ali Rouhi posted 3 patches 1 month, 2 weeks ago
There is a newer version of this series
.../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                  | 3111 +++++++++++++++++
drivers/dpll/sit9531x/core.h                  |  372 ++
drivers/dpll/sit9531x/dpll.c                  | 1232 +++++++
drivers/dpll/sit9531x/dpll.h                  |   69 +
drivers/dpll/sit9531x/prop.c                  |  397 +++
drivers/dpll/sit9531x/prop.h                  |   39 +
drivers/dpll/sit9531x/regs.h                  |  371 ++
14 files changed, 5794 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
[PATCH net-next v7 0/3] dpll: add SiTime SiT9531x DPLL clock driver
Posted by Ali Rouhi 1 month, 2 weeks ago
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@sitime.com/
v2: https://lore.kernel.org/netdev/20260520191943.73938-1-arouhi@sitime.com/
v3: https://lore.kernel.org/netdev/20260731180951.65725-1-arouhi@sitime.com/
v4: https://lore.kernel.org/netdev/20260806232439.27551-1-arouhi@sitime.com/
v5: https://lore.kernel.org/netdev/20260810230439.22866-1-arouhi@sitime.com/
v6: https://lore.kernel.org/netdev/20260812175337.18155-1-arouhi@sitime.com/

Changes since v6 (driver only; the bindings are unchanged):

  - Remove a conflict marker that slipped into a comment block in
    dpll.c. It sat inside /* */, so it built and checkpatch, which has
    no check for markers, did not report it.
  - Unwind DPLL registration when it fails partway. dev_start() returned
    on the first failure without unregistering the DPLLs already done,
    and the caller then freed them, leaving the subsystem with pointers
    into freed memory.
  - Report an input as selectable only for the DPLL that can select it.
    The test used the physical receiver state, which every DPLL fed from
    that lane shares. A lane in LOS no longer drops to disconnected
    either: signal quality belongs in the pin's own attributes.
  - Refuse DPLL_PIN_STATE_CONNECTED on an input instead of treating it
    as selectable. The device selects by priority and has no mode that
    pins one reference, so the request cannot be honoured.
  - Keep the rest of the priority table when one input moves. prio_set
    used to fill every lower-priority slot with the same source, which
    discarded the fallbacks the caller had not asked about.
  - Refuse to drive INTSYNC from a PLL that already selects it.
  - Drop the SYSREF/SYNCB/pulser claim from the commit message: only the
    esync default is reachable, the other modes are not exposed.

The AI review also reported a use-after-free of the pin properties. It
is a false positive: dpll_pin_alloc() calls dpll_pin_prop_dup(), which
copies freq_supported with kmemdup() and the labels with kstrdup(), so
the core owns its copies and the driver has to free its own.


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                  | 3111 +++++++++++++++++
 drivers/dpll/sit9531x/core.h                  |  372 ++
 drivers/dpll/sit9531x/dpll.c                  | 1232 +++++++
 drivers/dpll/sit9531x/dpll.h                  |   69 +
 drivers/dpll/sit9531x/prop.c                  |  397 +++
 drivers/dpll/sit9531x/prop.h                  |   39 +
 drivers/dpll/sit9531x/regs.h                  |  371 ++
 14 files changed, 5794 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.34.1