[PATCH 1/6] dt-bindings: ptp: Document the TSCSS on Qualcomm Lemans and Monaco SoCs
From: Imran Shaik <hidden>
Date: 2026-07-27 14:11:41
Also in:
linux-arm-msm, linux-devicetree, lkml
Subsystem:
arm/qualcomm mailing list, open firmware and flattened device tree bindings, the rest · Maintainers:
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Linus Torvalds
Add Devicetree bindings for the Timestamp Counter Subsystem (TSCSS) found on Qualcomm Lemans and Monaco SoCs. TSCSS is a time synchronization subsystem composed of two main blocks: Timestamp Counter (TSC) and Event Timestamp Unit (ETU). The TSC block provides a continuously running counter used for timekeeping, while the ETU captures timestamps for external hardware event triggers. Co-developed-by: Taniya Das <redacted> Signed-off-by: Taniya Das <redacted> Signed-off-by: Imran Shaik <redacted> --- .../devicetree/bindings/ptp/qcom,lemans-tscss.yaml | 198 +++++++++++++++++++++ 1 file changed, 198 insertions(+)
diff --git a/Documentation/devicetree/bindings/ptp/qcom,lemans-tscss.yaml b/Documentation/devicetree/bindings/ptp/qcom,lemans-tscss.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4cbe4b00ff7dcacbd8cc111e2b4b61ebce7104aa
--- /dev/null
+++ b/Documentation/devicetree/bindings/ptp/qcom,lemans-tscss.yaml@@ -0,0 +1,198 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/ptp/qcom,lemans-tscss.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Timestamp Counter Subsystem (TSCSS) on Qualcomm Lemans and Monaco SoCs + +maintainers: + - Imran Shaik <imran.shaik@oss.qualcomm.com> + - Taniya Das <taniya.das@oss.qualcomm.com> + +description: | + Qualcomm TSCSS is a time synchronization subsystem composed of two main + blocks - the Time Stamp Counter (TSC) and the Event Timestamp Unit (ETU). + + The TSC block is a timestamp generator that maintains a running counter used + for system timekeeping, and is functional with just the AHB and counter + clocks. + The ETU block is optional and captures TSC timestamps for external + hardware events, each ETU slice binding a slice identifier to an external + event selector. Support for the ETU block requires the additional ETU + clock along with the summary interrupt and slice subnodes. + +properties: + compatible: + oneOf: + - const: qcom,lemans-tscss + - items: + - const: qcom,monaco-tscss + - const: qcom,lemans-tscss + + reg: + maxItems: 1 + + reg-names: + items: + - const: tsc + + clocks: + minItems: 2 + items: + - description: TSC AHB configuration clock. + - description: TSC global counter clock. + - description: TSC ETU clock. + + clock-names: + minItems: 2 + items: + - const: ahb + - const: cntr + - const: etu + + interrupts: + description: Summary interrupt raised based on external event for any of the ETU slices. + maxItems: 1 + + interrupt-names: + items: + - const: etu_summary + + assigned-clocks: true + assigned-clock-rates: true + + "#address-cells": + const: 2 + + "#size-cells": + const: 2 + + ranges: true + +patternProperties: + "^etu-slice@[0-9a-f]+$": + type: object + description: ETU slice configuration + properties: + reg: + maxItems: 1 + + pinctrl-0: true + + pinctrl-names: + items: + - const: default + + qcom,etu-event-sel: + description: Event selection value for this slice. + $ref: /schemas/types.yaml#/definitions/uint32 + + qcom,etu-slice: + description: ETU slice identifier. + $ref: /schemas/types.yaml#/definitions/uint32 + + required: + - reg + - qcom,etu-event-sel + - qcom,etu-slice + - pinctrl-0 + - pinctrl-names + unevaluatedProperties: false + +required: + - compatible + - reg + - reg-names + - clocks + - clock-names + +allOf: + - if: + properties: + clock-names: + contains: + const: etu + then: + properties: + clocks: + minItems: 3 + clock-names: + minItems: 3 + required: + - interrupts + - interrupt-names + - "#address-cells" + - "#size-cells" + - ranges + +unevaluatedProperties: false + +examples: + - | + #include <dt-bindings/clock/qcom,sa8775p-gcc.h> + + soc { + #address-cells = <2>; + #size-cells = <2>; + + tscss@1c80000 { + compatible = "qcom,lemans-tscss"; + reg = <0x0 0x01c80000 0x0 0x2000>; + reg-names = "tsc"; + + clocks = <&gcc GCC_TSCSS_AHB_CLK>, + <&gcc GCC_TSCSS_GLOBAL_CNTR_CLK>; + clock-names = "ahb", "cntr"; + + assigned-clocks = <&gcc GCC_TSCSS_GLOBAL_CNTR_CLK>; + assigned-clock-rates = <15625000>; + }; + }; + + - | + #include <dt-bindings/clock/qcom,sa8775p-gcc.h> + #include <dt-bindings/interrupt-controller/arm-gic.h> + + soc { + #address-cells = <2>; + #size-cells = <2>; + + tscss@1c80000 { + compatible = "qcom,lemans-tscss"; + reg = <0x0 0x01c80000 0x0 0x2000>; + reg-names = "tsc"; + #address-cells = <2>; + #size-cells = <2>; + ranges; + + clocks = <&gcc GCC_TSCSS_AHB_CLK>, + <&gcc GCC_TSCSS_GLOBAL_CNTR_CLK>, + <&gcc GCC_TSCSS_ETU_CLK>; + clock-names = "ahb", "cntr", "etu"; + + assigned-clocks = <&gcc GCC_TSCSS_GLOBAL_CNTR_CLK>, + <&gcc GCC_TSCSS_ETU_CLK>; + assigned-clock-rates = <15625000>, <15625000>; + + interrupts = <GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "etu_summary"; + + etu-slice@1c91000 { + reg = <0x0 0x01c91000 0x0 0x1000>; + pinctrl-0 = <&cci_timer0>; + pinctrl-names = "default"; + qcom,etu-event-sel = <1>; + qcom,etu-slice = <1>; + }; + + etu-slice@1c92000 { + reg = <0x0 0x01c92000 0x0 0x1000>; + pinctrl-0 = <&cci_timer1>; + pinctrl-names = "default"; + qcom,etu-event-sel = <2>; + qcom,etu-slice = <2>; + }; + }; + }; +...
--
2.34.1