Skip to contentSkip to conversation

dt-bindings: sound: ti, pcm3168a: json-schema conversion and fixes

PATCH In review Geert Uytterhoeven 4 participants 10 messages Dec 2, 2022 – Dec 13, 2022

Subsystems (4)
lore
Share & tools
lore

Geert Uytterhoeven

author maintainer
#0 lore raw

cover dt-bindings: sound: ti, pcm3168a: json-schema conversion and fixes

Hi all,

This patch series is an attempt to convert the existing DT binding documentation for the Texas Instruments PCM3168A Audio Codec to json-schema ("another one bites the dust" ;-).

It consists of two parts:
1. The actual DT binding conversion,
2. An RFC patch to fix the impedance mismatch between the bindings and the description in the Shimafuji Kingfisher board DTS.

I'm not super-familiar with the audio details, so I would be very grateful to receive your comments.

Thanks!

Geert Uytterhoeven (2):
dt-bindings: sound: ti,pcm3168a: Convert to json-schema [RFC] arm64: dts: renesas: ulcb-kf: Fix pcm3168a audio codec node

 .../devicetree/bindings/sound/ti,pcm3168a.txt |  56 ----------
 .../bindings/sound/ti,pcm3168a.yaml           | 105 ++++++++++++++++++
 arch/arm64/boot/dts/renesas/ulcb-kf.dtsi      |   5 +-
 3 files changed, 107 insertions(+), 59 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/sound/ti,pcm3168a.txt
 create mode 100644 Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml
Signature · 12 lines
2.25.1

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds
author maintainer
#1 lore raw

PATCH 1/2 dt-bindings: sound: ti,pcm3168a: Convert to json-schema

Convert the Texas Instruments PCM3168A Audio Codec Device Tree binding documentation to json-schema.

Add missing properties.
Drop unneeded pinctrl properties from example.

---
 .../devicetree/bindings/sound/ti,pcm3168a.txt |  56 ----------
 .../bindings/sound/ti,pcm3168a.yaml           | 105 ++++++++++++++++++
 2 files changed, 105 insertions(+), 56 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/sound/ti,pcm3168a.txt
 create mode 100644 Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml
Documentation/devicetree/bindings/sound/ti,pcm3168a.txt deleted +0 -56
deleted file mode 100644
index a02ecaab518327d5..0000000000000000
@@ -1,56 +0,0 @@
-Texas Instruments pcm3168a DT bindings
-
-This driver supports both SPI and I2C bus access for this codec
-
-Required properties:
-
-  - compatible: "ti,pcm3168a"
-
-  - clocks : Contains an entry for each entry in clock-names
-
-  - clock-names : Includes the following entries:
-	"scki"	The system clock
-
-  - VDD1-supply : Digital power supply regulator 1 (+3.3V)
-
-  - VDD2-supply : Digital power supply regulator 2 (+3.3V)
-
-  - VCCAD1-supply : ADC power supply regulator 1 (+5V)
-
-  - VCCAD2-supply : ADC power supply regulator 2 (+5V)
-
-  - VCCDA1-supply : DAC power supply regulator 1 (+5V)
-
-  - VCCDA2-supply : DAC power supply regulator 2 (+5V)
-
-For required properties on SPI/I2C, consult SPI/I2C device tree documentation
-
-Optional properties:
-
-  - reset-gpios : Optional reset gpio line connected to RST pin of the codec.
-		  The RST line is low active:
-		  RST = low: device power-down
-		  RST = high: device is enabled
-
-Examples:
-
-i2c0: i2c0@0 {
-
-	...
-
-	pcm3168a: audio-codec@44 {
-		compatible = "ti,pcm3168a";
-		reg = <0x44>;
-		reset-gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
-		clocks = <&clk_core CLK_AUDIO>;
-		clock-names = "scki";
-		VDD1-supply = <&supply3v3>;
-		VDD2-supply = <&supply3v3>;
-		VCCAD1-supply = <&supply5v0>;
-		VCCAD2-supply = <&supply5v0>;
-		VCCDA1-supply = <&supply5v0>;
-		VCCDA2-supply = <&supply5v0>;
-		pinctrl-names = "default";
-		pinctrl-0 = <&dac_clk_pin>;
-	};
-};
Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml new file +105 -0

105 lines not on this page · raw message

Signature · 1 line
2.25.1
#2 lore raw

Re: [PATCH 1/2] dt-bindings: sound: ti,pcm3168a: Convert to json-schema

Quoted 5 lines · Geert Uytterhoeven

Convert the Texas Instruments PCM3168A Audio Codec Device Tree binding documentation to json-schema.

Add missing properties.
Drop unneeded pinctrl properties from example.

Thank you for your patch. There is something to discuss/improve.

Quoted 18 lines
Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml new file +18 -0
+description:
+  The Texas Instruments PCM3168A is a 24-bit Multi-channel Audio CODEC with
+  96/192kHz sampling rate, supporting both SPI and I2C bus access.
+
+properties:
+  compatible:
+    const: ti,pcm3168a
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: System clock input
+
+  clock-names:
+    items:
+      - const: scki

Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml line 39

Quoted 10 lines
Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml new file +10 -0
+
+  reset-gpios:
+    items:
+      - description: |
+          GPIO line connected to the active-low RST pin of the codec.
+            RST = low: device power-down
+            RST = high: device is enabled
+
+  "#sound-dai-cells":
+    enum: [0, 1]

This is a bit unexpected. Looking at DTSes:
1. I see in ulcb-kf.dtsi with cells==0, but two endpoints. The dai cells seem unused? In such case shall dai-cells be skipped if we have endpoints?

2. in k3-j721e-common-proc-board.dts has cells=1, but user's phandle does not have an argument, so practically it is ==0? The user - sound/soc/ti/j721e-evm.c - just gets the node and does not use cells, right? So even though dai-cells==1, it does not matter, because user gets its own parsing?

3. The pcm3168a driver also does not have any xlate function, but it registers to DAIs, so all uses should be with cells==1 to select proper DAI...

Quoted 15 lines
Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml new file +15 -0
+
+  VDD1-supply:
+    description: Digital power supply regulator 1 (+3.3V)
+
+  VDD2-supply:
+    description: Digital power supply regulator 2 (+3.3V)
+
+  VCCAD1-supply:
+    description: ADC power supply regulator 1 (+5V)
+
+  VCCAD2-supply:
+    description: ADC power supply regulator 2 (+5V)
+
+  VCCDA1-supply:
+    description: DAC power supply regulator 1 (+5V)

Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml line 64

Quoted 10 lines
Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml new file +10 -0
+
+  VCCDA2-supply:
+    description: DAC power supply regulator 2 (+5V)
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+    properties:
+      port@0:
+        $ref: audio-graph-port.yaml#
+        description: Audio input port.

unevaluatedProperties: false

Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml line 68

Quoted 4 lines
Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml new file +4 -0
+
+      port@1:
+        $ref: audio-graph-port.yaml#
+        description: Audio output port.

unevaluatedProperties: false

Quoted 25 lines
Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml new file +25 -0
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - VDD1-supply
+  - VDD2-supply
+  - VCCAD1-supply
+  - VCCAD2-supply
+  - VCCDA1-supply
+  - VCCDA2-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        pcm3168a: audio-codec@44 {
+            compatible = "ti,pcm3168a";

Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml line 103

Quoted 10 lines
Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml new file +10 -0
+            reg = <0x44>;
+            reset-gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
+            clocks = <&clk_core 42>;
+            clock-names = "scki";
+            VDD1-supply = <&supply3v3>;
+            VDD2-supply = <&supply3v3>;
+            VCCAD1-supply = <&supply5v0>;
+            VCCAD2-supply = <&supply5v0>;
+            VCCDA1-supply = <&supply5v0>;
+            VCCDA2-supply = <&supply5v0>;

Can you extend the example with dai cells or with endpoints (or both, depending on my previous comment...)

Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml line 105

Quoted 2 lines
Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml new file +2 -0
+        };
+    };

Best regards,
Krzysztof

#3 lore raw

Re: [PATCH 1/2] dt-bindings: sound: ti, pcm3168a: Convert to json-schema

Hi Krzysztof,

Thanks for your comments!

Quoted 48 lines · Krzysztof Kozlowski
Quoted 5 lines · Geert Uytterhoeven

Convert the Texas Instruments PCM3168A Audio Codec Device Tree binding documentation to json-schema.

Add missing properties.
Drop unneeded pinctrl properties from example.

Thank you for your patch. There is something to discuss/improve.

Quoted 18 lines
Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml new file +18 -0
+description:
+  The Texas Instruments PCM3168A is a 24-bit Multi-channel Audio CODEC with
+  96/192kHz sampling rate, supporting both SPI and I2C bus access.
+
+properties:
+  compatible:
+    const: ti,pcm3168a
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: System clock input
+
+  clock-names:
+    items:
+      - const: scki

Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml line 39

Quoted 10 lines
Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml new file +10 -0
+
+  reset-gpios:
+    items:
+      - description: |
+          GPIO line connected to the active-low RST pin of the codec.
+            RST = low: device power-down
+            RST = high: device is enabled
+
+  "#sound-dai-cells":
+    enum: [0, 1]

This is a bit unexpected. Looking at DTSes:
1. I see in ulcb-kf.dtsi with cells==0, but two endpoints. The dai cells seem unused? In such case shall dai-cells be skipped if we have endpoints?

2. in k3-j721e-common-proc-board.dts has cells=1, but user's phandle does not have an argument, so practically it is ==0? The user - sound/soc/ti/j721e-evm.c - just gets the node and does not use cells, right? So even though dai-cells==1, it does not matter, because user gets its own parsing?

Quoted 3 lines

3. The pcm3168a driver also does not have any xlate function, but it registers to DAIs, so all uses should be with cells==1 to select proper DAI...

I have no idea (DAI is magic to me), and hope the audio experts can provide some input...
Thanks!

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#4 lore raw

Re: [PATCH 1/2] dt-bindings: sound: ti,pcm3168a: Convert to json-schema

Quoted 54 lines · Geert Uytterhoeven

Hi Krzysztof,

Thanks for your comments!

Quoted 48 lines · Krzysztof Kozlowski
Quoted 5 lines · Geert Uytterhoeven

Convert the Texas Instruments PCM3168A Audio Codec Device Tree binding documentation to json-schema.

Add missing properties.
Drop unneeded pinctrl properties from example.

Thank you for your patch. There is something to discuss/improve.

Quoted 18 lines
Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml new file +18 -0
+description:
+  The Texas Instruments PCM3168A is a 24-bit Multi-channel Audio CODEC with
+  96/192kHz sampling rate, supporting both SPI and I2C bus access.
+
+properties:
+  compatible:
+    const: ti,pcm3168a
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: System clock input
+
+  clock-names:
+    items:
+      - const: scki

Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml line 39

Quoted 10 lines
Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml new file +10 -0
+
+  reset-gpios:
+    items:
+      - description: |
+          GPIO line connected to the active-low RST pin of the codec.
+            RST = low: device power-down
+            RST = high: device is enabled
+
+  "#sound-dai-cells":
+    enum: [0, 1]

This is a bit unexpected. Looking at DTSes:
1. I see in ulcb-kf.dtsi with cells==0, but two endpoints. The dai cells seem unused? In such case shall dai-cells be skipped if we have endpoints?

2. in k3-j721e-common-proc-board.dts has cells=1, but user's phandle does not have an argument, so practically it is ==0? The user - sound/soc/ti/j721e-evm.c - just gets the node and does not use cells, right? So even though dai-cells==1, it does not matter, because user gets its own parsing?

Quoted 6 lines
Quoted 3 lines

3. The pcm3168a driver also does not have any xlate function, but it registers to DAIs, so all uses should be with cells==1 to select proper DAI...

I have no idea (DAI is magic to me), and hope the audio experts can provide some input...

It is a bit of magic to me too. Yet I think the correct usage of this is with dai-cells=1. I think we can skip the choice here between sound-dai-cells and endpoints (to allow only one) and only fix the value here to =1.

This would also require changing arch/arm64/boot/dts/renesas/ulcb-kf.dtsi to dai-cells=1.

Best regards,
Krzysztof

author maintainer
#5 lore raw

PATCH 2/2 arm64: dts: renesas: ulcb-kf: Fix pcm3168a audio codec node

In reply to Geert Uytterhoeven

"make dtbs_check":

arch/arm64/boot/dts/renesas/r8a77951-ulcb-kf.dtb: audio-codec@44: ports: 'mclk-fs' does not match any of the regexes: '^port@[0-9a-f]+$', 'pinctrl-[0-9]+'
From schema: Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml
arch/arm64/boot/dts/renesas/r8a77951-ulcb-kf.dtb: audio-codec@44: ports:port@0:endpoint: Unevaluated properties are not allowed ('clocks' was unexpected)
From schema: Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml
arch/arm64/boot/dts/renesas/r8a77951-ulcb-kf.dtb: audio-codec@44: ports:port@1:endpoint: Unevaluated properties are not allowed ('clocks' was unexpected)
From schema: Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml

Fix this by:
1. Moving the "mclk-fs" property to the endpoint nodes, where it belongs according to .../sound/audio-graph-port.yaml,
2. Dropping the bogus "clocks" properties.

Fixes 80c07701d5918928 ("arm64: dts: renesas: ulcb-kf: add pcm3168 sound codec")

---
Compile-tested only.

---
 arch/arm64/boot/dts/renesas/ulcb-kf.dtsi | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
arch/arm64/boot/dts/renesas/ulcb-kf.dtsi +2 -3
index 408871c2859d144d..8e46acbe3a203759 100644
@@ -216,19 +216,18 @@ pcm3168a: audio-codec@44 {
 				ports {
 					#address-cells = <1>;
 					#size-cells = <0>;
-					mclk-fs = <512>;
 					port@0 {
 						reg = <0>;
 						pcm3168a_endpoint_p: endpoint {
+							mclk-fs = <512>;
 							remote-endpoint = <&rsnd_for_pcm3168a_play>;
-							clocks = <&clksndsel>;
 						};
 					};
 					port@1 {
 						reg = <1>;
 						pcm3168a_endpoint_c: endpoint {
+							mclk-fs = <512>;
 							remote-endpoint = <&rsnd_for_pcm3168a_capture>;
-							clocks = <&clksndsel>;
 						};
 					};
 				};
Signature · 1 line
2.25.1
#6 lore raw

Re: [PATCH/RFC 2/2] arm64: dts: renesas: ulcb-kf: Fix pcm3168a audio codec node

Hi Geert

Thank you for your patch

Quoted 16 lines
arch/arm64/boot/dts/renesas/ulcb-kf.dtsi +1 -2
index 408871c2859d144d..8e46acbe3a203759 100644
@@ -216,19 +216,18 @@ pcm3168a: audio-codec@44 {
 				ports {
 					#address-cells = <1>;
 					#size-cells = <0>;
-					mclk-fs = <512>;
 					port@0 {
 						reg = <0>;
 						pcm3168a_endpoint_p: endpoint {
+							mclk-fs = <512>;
 							remote-endpoint = <&rsnd_for_pcm3168a_play>;
-							clocks = <&clksndsel>;
 						};

arch/arm64/boot/dts/renesas/ulcb-kf.dtsi pcm3168a: audio-codec@44 { · line 233

Quoted 10 lines
arch/arm64/boot/dts/renesas/ulcb-kf.dtsi +1 -1
 					};
 					port@1 {
 						reg = <1>;
 						pcm3168a_endpoint_c: endpoint {
+							mclk-fs = <512>;
 							remote-endpoint = <&rsnd_for_pcm3168a_capture>;
-							clocks = <&clksndsel>;
 						};
 					};
 				};

I'm not tested, but in my quick check,
we can use "mclk-fs" under "ports", and we need "clocks" under "endpoint". So the issue is not dtsi side, but yaml side.

I will check and fix it, but it will be next week or later.

Thank you for your help !!

Best regards
---
Kuninori Morimoto

#7 lore raw

Re: [PATCH/RFC 2/2] arm64: dts: renesas: ulcb-kf: Fix pcm3168a audio codec node

Hi Geert

Quoted 6 lines

arch/arm64/boot/dts/renesas/r8a77951-ulcb-kf.dtb: audio-codec@44: ports: 'mclk-fs' does not match any of the regexes: '^port@[0-9a-f]+$', 'pinctrl-[0-9]+'
From schema: Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml
arch/arm64/boot/dts/renesas/r8a77951-ulcb-kf.dtb: audio-codec@44: ports:port@0:endpoint: Unevaluated properties are not allowed ('clocks' was unexpected)
From schema: Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml
arch/arm64/boot/dts/renesas/r8a77951-ulcb-kf.dtb: audio-codec@44: ports:port@1:endpoint: Unevaluated properties are not allowed ('clocks' was unexpected)
From schema: Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml

(snip)

Quoted 5 lines

I'm not tested, but in my quick check,
we can use "mclk-fs" under "ports", and we need "clocks" under "endpoint". So the issue is not dtsi side, but yaml side.

I will check and fix it, but it will be next week or later.

I have investigated about this patch, and it needs extra patch which I will post if -rc1 was released.
I can merge this patch (with small fixup) into my patch-set. Of course I will keep your name. But is it OK for you ?

Thank you for your help !!

Best regards
---
Kuninori Morimoto

#8 lore raw

Re: [PATCH/RFC 2/2] arm64: dts: renesas: ulcb-kf: Fix pcm3168a audio codec node

Hi Morimoto-san,

Quoted 11 lines · Kuninori Morimoto
Quoted 6 lines

arch/arm64/boot/dts/renesas/r8a77951-ulcb-kf.dtb: audio-codec@44: ports: 'mclk-fs' does not match any of the regexes: '^port@[0-9a-f]+$', 'pinctrl-[0-9]+'
From schema: Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml
arch/arm64/boot/dts/renesas/r8a77951-ulcb-kf.dtb: audio-codec@44: ports:port@0:endpoint: Unevaluated properties are not allowed ('clocks' was unexpected)
From schema: Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml
arch/arm64/boot/dts/renesas/r8a77951-ulcb-kf.dtb: audio-codec@44: ports:port@1:endpoint: Unevaluated properties are not allowed ('clocks' was unexpected)
From schema: Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml

(snip)

Quoted 4 lines

I'm not tested, but in my quick check,
we can use "mclk-fs" under "ports", and we need "clocks" under "endpoint". So the issue is not dtsi side, but yaml side.

Quoted 6 lines
Quoted 1 line

I will check and fix it, but it will be next week or later.

I have investigated about this patch, and it needs extra patch which I will post if -rc1 was released.
I can merge this patch (with small fixup) into my patch-set. Of course I will keep your name. But is it OK for you ?

Thanks, fine for me!

♫ All I want for Christmas is ♫... an error-free "make dtbs_check" ;-)

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#9 lore raw

Re: [PATCH/RFC 2/2] arm64: dts: renesas: ulcb-kf: Fix pcm3168a audio codec node

Hi Geert

Quoted 8 lines
Quoted 4 lines

I have investigated about this patch, and it needs extra patch which I will post if -rc1 was released.
I can merge this patch (with small fixup) into my patch-set. Of course I will keep your name. But is it OK for you ?

Thanks, fine for me!

♫ All I want for Christmas is ♫... an error-free "make dtbs_check" ;-)

I will do my best ;)

Merry Christmas

Thank you for your help !!

Best regards
---
Kuninori Morimoto