[PATCH net-next v9 02/15] dt-bindings: dpll: add SiTime SiT95316 clock generator
From: Ali Rouhi <hidden>
Date: 2026-09-15 00:00:29
Also in:
linux-devicetree, lkml
Subsystem:
open firmware and flattened device tree bindings, the rest · Maintainers:
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Linus Torvalds
Add a binding for the SiTime SiT9531x family of clock generators: an I2C-controlled device with four independent PLLs, up to eight input clocks and up to twelve outputs, described as a DPLL provider. Signed-off-by: Ali Rouhi <redacted> --- .../bindings/dpll/sitime,sit95316.yaml | 181 ++++++++++++++++++ MAINTAINERS | 6 + 2 files changed, 187 insertions(+) create mode 100644 Documentation/devicetree/bindings/dpll/sitime,sit95316.yaml
diff --git a/Documentation/devicetree/bindings/dpll/sitime,sit95316.yaml b/Documentation/devicetree/bindings/dpll/sitime,sit95316.yaml
new file mode 100644
index 000000000000..e71ee3611a83
--- /dev/null
+++ b/Documentation/devicetree/bindings/dpll/sitime,sit95316.yaml@@ -0,0 +1,181 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/dpll/sitime,sit95316.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: SiTime SiT95316/SiT95317 DPLL Clock Generator + +maintainers: + - Ali Rouhi <arouhi@sitime.com> + +description: | + SiTime SiT95316 and SiT95317 are I2C-controlled programmable clock + generators with integrated DPLL for synchronization applications. Both + variants contain four PLLs with automatic/manual reference selection, + DCO frequency adjustment, and phase offset measurement via an on-chip + TDC (Time-to-Digital Converter). + + Both parts have 4 differential input pairs whose lanes can also be + driven independently as single-ended references, so 8 inputs are + individually selectable. SiT95317 drives 8 outputs, SiT95316 + drives 12. + +properties: + compatible: + enum: + - sitime,sit95316 + - sitime,sit95317 + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + clock-names: + items: + - const: xtal + + clock-frequency: + description: + XO rate in Hz feeding XIN/XO_CLK. Alternative to the "clocks" + phandle for platforms where the firmware does not expose the + oscillator through the clock framework. + + reset-gpios: + maxItems: 1 + description: + GPIO connected to the chip's active-low reset pin (RESETB). + + interrupts: + maxItems: 1 + description: + Interrupt from the chip's active-low INTRB output. Asserted when + the device detects a status change such as lock acquisition or loss. + + sitime,pll-fvco: + $ref: /schemas/types.yaml#/definitions/uint64-array + minItems: 4 + maxItems: 4 + description: + Per-PLL VCO frequency in Hz for PLLA, PLLB, PLLC, PLLD. The + values exceed 32 bits, which requires an explicit uint64-array + type; the dtschema meta-schema does not permit a type $ref on a + "-hz" unit-suffix property (only opp-hz is defined as 64-bit), + hence no unit suffix. Override where the standard + Fvco = Fref * DIVN derivation does not match the running VCO -- + for example a PLL operating in INTSYNC mode. A value of 0 keeps + the register-derived computation for that PLL. + + sitime,output-pll-map: + $ref: /schemas/types.yaml#/definitions/uint32-array + minItems: 8 + maxItems: 12 + items: + enum: [0, 1, 2, 3, 255] + description: + Source PLL index (0=PLLA .. 3=PLLD) for each output 0..11. The + value 255 (0xff) marks an output as unmapped and prevents the + driver from registering it as a DPLL pin. Override for + configurations where the chip's per-PLL OUTPUT_ENABLE bitmaps do + not unambiguously describe output-to-PLL routing. + +required: + - compatible + - reg + +oneOf: + - required: + - clocks + - clock-names + - required: + - clock-frequency + +allOf: + - $ref: /schemas/dpll/dpll-device.yaml# + # SiT95317 exposes 8 outputs, SiT95316 exposes 12. Bound the + # output-pll-map length to the variant so a SiT95317 node cannot + # describe more outputs than the part has. + - if: + properties: + compatible: + contains: + const: sitime,sit95317 + then: + properties: + sitime,output-pll-map: + maxItems: 8 + # SiT95316 has 12 outputs. When the map is supplied it must describe + # all of them, otherwise the trailing outputs are left ambiguous. + - if: + properties: + compatible: + contains: + const: sitime,sit95316 + then: + properties: + sitime,output-pll-map: + minItems: 12 + +unevaluatedProperties: false + +examples: + - | + #include <dt-bindings/gpio/gpio.h> + #include <dt-bindings/interrupt-controller/irq.h> + + i2c { + #address-cells = <1>; + #size-cells = <0>; + + dpll@68 { + compatible = "sitime,sit95316"; + reg = <0x68>; + clocks = <&xo2>; + clock-names = "xtal"; + reset-gpios = <&gpio 78 GPIO_ACTIVE_LOW>; + interrupts = <12 IRQ_TYPE_LEVEL_LOW>; + dpll-types = "eec", "eec", "eec", "eec"; + sitime,pll-fvco = /bits/ 64 <6900000000 0 0 0>; + sitime,output-pll-map = <0 0 0 0 0 0 0 0 0 0 0 0>; + + input-pins { + #address-cells = <1>; + #size-cells = <0>; + + pin@0 { + reg = <0>; + label = "clkin0"; + connection-type = "ext"; + supported-frequencies-hz = /bits/ 64 <10000000>; + }; + + pin@1 { + reg = <1>; + label = "clkin1"; + connection-type = "synce"; + supported-frequencies-hz = /bits/ 64 <156250000>; + }; + }; + + output-pins { + #address-cells = <1>; + #size-cells = <0>; + + pin@0 { + reg = <0>; + label = "clkout0"; + esync-control; + supported-frequencies-hz = /bits/ 64 <156250000>; + }; + + pin@1 { + reg = <1>; + label = "clkout1"; + supported-frequencies-hz = /bits/ 64 <25000000>; + }; + }; + }; + }; +...
diff --git a/MAINTAINERS b/MAINTAINERS
index 0b42e898f4d8..ef07a53b5fc4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS@@ -25157,6 +25157,12 @@ S: Maintained W: http://www.winischhofer.at/linuxsisusbvga.shtml F: drivers/usb/misc/sisusbvga/ +SITIME SIT9531X DPLL DRIVER +M: Ali Rouhi <arouhi@sitime.com> +L: netdev@vger.kernel.org +S: Maintained +F: Documentation/devicetree/bindings/dpll/sitime,sit95316.yaml + SL28 CPLD MFD DRIVER M: Michael Walle <mwalle@kernel.org> S: Maintained
--
2.39.2 (Apple Git-143)