[PATCH net-next v7 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]/
v5: https://lore.kernel.org/netdev/[email protected]/
v6: https://lore.kernel.org/netdev/[email protected]/

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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.