Re: [PATCH v2 2/8] dt-bindings: thermal: sun8i: Add A523 THS0/1 controllers
From: Rob Herring <robh@kernel.org>
Date: 2025-07-08 21:31:06
Also in:
linux-devicetree, linux-pm, linux-sunxi, lkml
On Thu, Jul 03, 2025 at 11:11:26PM +0800, iuncuim wrote:
quoted hunk ↗ jump to hunk
From: Mikhail Kalashnikov <redacted> Add a binding for D1/T113s thermal sensor controller. Add dt-bindings description of the thermal sensors in the A523 processor. The controllers require activation of the additional frequency of the associated gpadc controller, so a new clock property has been added. The calibration data is split into two cells that are in different areas of nvmem. Both controllers require access to both memory cell, so a new property nvmem-cells has been added. To maintain backward compatibility, the name of the old cell remains the same and the new nvmem-cell-names is called calibration-second-part Signed-off-by: Mikhail Kalashnikov <redacted> --- .../thermal/allwinner,sun8i-a83t-ths.yaml | 49 +++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-)diff --git a/Documentation/devicetree/bindings/thermal/allwinner,sun8i-a83t-ths.yaml b/Documentation/devicetree/bindings/thermal/allwinner,sun8i-a83t-ths.yaml index 3e61689f6..80657435a 100644 --- a/Documentation/devicetree/bindings/thermal/allwinner,sun8i-a83t-ths.yaml +++ b/Documentation/devicetree/bindings/thermal/allwinner,sun8i-a83t-ths.yaml@@ -24,18 +24,22 @@ properties: - allwinner,sun50i-h5-ths - allwinner,sun50i-h6-ths - allwinner,sun50i-h616-ths + - allwinner,sun55i-a523-ths0 + - allwinner,sun55i-a523-ths1 clocks: minItems: 1 items: - description: Bus Clock - description: Module Clock + - description: GPADC Clock
You add a 3rd clock for everyone, but I don't see a conditional schema keeping the existing users at 2 clocks (maxItems: 2).
quoted hunk ↗ jump to hunk
clock-names: minItems: 1 items: - const: bus - const: mod + - const: gpadc reg: maxItems: 1@@ -47,11 +51,16 @@ properties: maxItems: 1 nvmem-cells: - maxItems: 1 - description: Calibration data for thermal sensors + minItems: 1 + items: + - description: Calibration data for thermal sensors + - description: Additional cell in case of separate calibration data nvmem-cell-names: - const: calibration + minItems: 1 + items: + - const: calibration + - const: calibration-second-part allwinner,sram: maxItems: 1@@ -107,6 +116,7 @@ allOf: enum: - allwinner,sun8i-h3-ths - allwinner,sun20i-d1-ths + - allwinner,sun55i-a523-ths0 then: properties:@@ -132,6 +142,26 @@ allOf: - clock-names - resets + - if: + properties: + compatible: + contains: + enum: + - allwinner,sun55i-a523-ths0 + - allwinner,sun55i-a523-ths1 + then: + properties: + clocks: + minItems: 2 + clock-names: + items: + - const: bus + - const: gpadc
But if there's really still just 2 clocks, you need the last entry to be 'enum: [ mod, gpadc ]' Though really, how can this h/w now not have a clock for itself?
+ nvmem-cells: + minItems: 2 + nvmem-cell-names: + minItems: 2
Everyone else needs 'maxItems: 1'
quoted hunk ↗ jump to hunk
+ required: - compatible - reg@@ -176,4 +206,17 @@ examples: #thermal-sensor-cells = <1>; }; + - | + thermal-sensor@2009400 { + compatible = "allwinner,sun55i-a523-ths1"; + reg = <0x02009400 0x400>; + interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&ccu CLK_BUS_THS>, <&ccu CLK_GPADC1>; + clock-names = "bus", "gpadc"; + resets = <&ccu RST_BUS_THS>; + nvmem-cells = <&ths_calibration0>, <&ths_calibration1>; + nvmem-cell-names = "calibration", + "calibration-second-part"; + #thermal-sensor-cells = <1>; + }; ...-- 2.49.0