All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] dt-bindings: i2c: i2c-demux-pinctrl: Convert to json-schema
@ 2023-10-23 13:53 Geert Uytterhoeven
  2023-10-23 15:21 ` Wolfram Sang
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Geert Uytterhoeven @ 2023-10-23 13:53 UTC (permalink / raw)
  To: Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Wolfram Sang
  Cc: linux-i2c, devicetree, linux-renesas-soc, Geert Uytterhoeven

Convert the pinctrl-based I2C bus demultiplexer Device Tree binding
documentation to json-schema.

Update the example to match reality.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
The example includes changes from "[PATCH 0/3] dts: renesas: Fix I2C bus
demux node names and ADV751[13] power supplies"
(https://lore.kernel.org/r/cover.1698068646.git.geert+renesas@glider.be)

 .../bindings/i2c/i2c-demux-pinctrl.txt        | 135 --------------
 .../bindings/i2c/i2c-demux-pinctrl.yaml       | 172 ++++++++++++++++++
 2 files changed, 172 insertions(+), 135 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.txt
 create mode 100644 Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.yaml

diff --git a/Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.txt b/Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.txt
deleted file mode 100644
index 86b2e433a969013c..0000000000000000
--- a/Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.txt
+++ /dev/null
@@ -1,135 +0,0 @@
-Pinctrl-based I2C Bus DeMux
-
-This binding describes an I2C bus demultiplexer that uses pin multiplexing to
-route the I2C signals, and represents the pin multiplexing configuration using
-the pinctrl device tree bindings. This may be used to select one I2C IP core at
-runtime which may have a better feature set for a given task than another I2C
-IP core on the SoC. The most simple example is to fall back to GPIO bitbanging
-if your current runtime configuration hits an errata of the internal IP core.
-
-    +-------------------------------+
-    | SoC                           |
-    |                               |   +-----+  +-----+
-    |   +------------+              |   | dev |  | dev |
-    |   |I2C IP Core1|--\           |   +-----+  +-----+
-    |   +------------+   \-------+  |      |        |
-    |                    |Pinctrl|--|------+--------+
-    |   +------------+   +-------+  |
-    |   |I2C IP Core2|--/           |
-    |   +------------+              |
-    |                               |
-    +-------------------------------+
-
-Required properties:
-- compatible: "i2c-demux-pinctrl"
-- i2c-parent: List of phandles of I2C masters available for selection. The first
-	      one will be used as default.
-- i2c-bus-name: The name of this bus. Also needed as pinctrl-name for the I2C
-		parents.
-
-Furthermore, I2C mux properties and child nodes. See i2c-mux.yaml in this
-directory.
-
-Example:
-
-Here is a snipplet for a bus to be demuxed. It contains various i2c clients for
-HDMI, so the bus is named "i2c-hdmi":
-
-	i2chdmi: i2c@8 {
-
-		compatible = "i2c-demux-pinctrl";
-		i2c-parent = <&gpioi2c>, <&iic2>, <&i2c2>;
-		i2c-bus-name = "i2c-hdmi";
-		#address-cells = <1>;
-		#size-cells = <0>;
-
-		ak4643: sound-codec@12 {
-			compatible = "asahi-kasei,ak4643";
-
-			#sound-dai-cells = <0>;
-			reg = <0x12>;
-		};
-
-		composite-in@20 {
-			compatible = "adi,adv7180";
-			reg = <0x20>;
-			remote = <&vin1>;
-
-			port {
-				adv7180: endpoint {
-					bus-width = <8>;
-					remote-endpoint = <&vin1ep0>;
-				};
-			};
-		};
-
-		hdmi@39 {
-			compatible = "adi,adv7511w";
-			reg = <0x39>;
-			interrupt-parent = <&gpio1>;
-			interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
-
-			adi,input-depth = <8>;
-			adi,input-colorspace = "rgb";
-			adi,input-clock = "1x";
-			adi,input-style = <1>;
-			adi,input-justification = "evenly";
-
-			ports {
-				#address-cells = <1>;
-				#size-cells = <0>;
-
-				port@0 {
-					reg = <0>;
-					adv7511_in: endpoint {
-						remote-endpoint = <&du_out_lvds0>;
-					};
-				};
-
-				port@1 {
-					reg = <1>;
-					adv7511_out: endpoint {
-						remote-endpoint = <&hdmi_con>;
-					};
-				};
-			};
-		};
-	};
-
-And for clarification, here are the snipplets for the i2c-parents:
-
-	gpioi2c: i2c@9 {
-		#address-cells = <1>;
-		#size-cells = <0>;
-		compatible = "i2c-gpio";
-		gpios = <&gpio5 6 GPIO_ACTIVE_HIGH /* sda */
-			 &gpio5 5 GPIO_ACTIVE_HIGH /* scl */
-			>;
-		i2c-gpio,delay-us = <5>;
-	};
-
-...
-
-&i2c2	{
-	pinctrl-0 = <&i2c2_pins>;
-	pinctrl-names = "i2c-hdmi";
-
-	clock-frequency = <100000>;
-};
-
-...
-
-&iic2	{
-	pinctrl-0 = <&iic2_pins>;
-	pinctrl-names = "i2c-hdmi";
-
-	clock-frequency = <100000>;
-};
-
-Please note:
-
-- pinctrl properties for the parent I2C controllers need a pinctrl state
-  with the same name as i2c-bus-name, not "default"!
-
-- the i2c masters must have their status "disabled". This driver will
-  enable them at runtime when needed.
diff --git a/Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.yaml b/Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.yaml
new file mode 100644
index 0000000000000000..2c08f2a7cf1ee28c
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.yaml
@@ -0,0 +1,172 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/i2c/i2c-demux-pinctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Pinctrl-based I2C Bus Demultiplexer
+
+maintainers:
+  - Wolfram Sang <wsa+renesas@sang-engineering.com>
+
+description: |
+  This binding describes an I2C bus demultiplexer that uses pin multiplexing to
+  route the I2C signals, and represents the pin multiplexing configuration
+  using the pinctrl device tree bindings.  This may be used to select one I2C
+  IP core at runtime which may have a better feature set for a given task than
+  another I2C IP core on the SoC.  The most simple example is to fall back to
+  GPIO bitbanging if your current runtime configuration hits an errata of the
+  internal IP core.
+
+      +-------------------------------+
+      | SoC                           |
+      |                               |   +-----+  +-----+
+      |   +------------+              |   | dev |  | dev |
+      |   |I2C IP Core1|--\           |   +-----+  +-----+
+      |   +------------+   \-------+  |      |        |
+      |                    |Pinctrl|--|------+--------+
+      |   +------------+   +-------+  |
+      |   |I2C IP Core2|--/           |
+      |   +------------+              |
+      |                               |
+      +-------------------------------+
+
+allOf:
+  - $ref: i2c-mux.yaml
+  - $ref: /schemas/i2c/i2c-controller.yaml#
+
+properties:
+  compatible:
+    const: i2c-demux-pinctrl
+
+  i2c-parent:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    description:
+      List of phandles of I2C masters available for selection.  The first one
+      will be used as default.
+
+  i2c-bus-name:
+    $ref: /schemas/types.yaml#/definitions/string
+    description:
+      The name of this bus.  Also needed as pinctrl-name for the I2C parents.
+
+required:
+  - compatible
+  - i2c-parent
+  - i2c-bus-name
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    gpioi2c2: i2c-9 {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        compatible = "i2c-gpio";
+        scl-gpios = <&gpio5 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+        sda-gpios = <&gpio5 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+        i2c-gpio,delay-us = <5>;
+
+        // The I2C controller must have its status "disabled".  The I2C bus
+        // demultiplexer will enable it at runtime when needed.
+        status = "disabled";
+    };
+
+    iic2: i2c@e6520000 {
+        reg = <0xe6520000 0x425>;
+        pinctrl-0 = <&iic2_pins>;
+        // The pinctrl property for the parent I2C controller needs a pinctrl
+        // state with the same name as i2c-bus-name in the I2C bus demultiplexer
+        // node, not "default"!
+        pinctrl-names = "i2c-hdmi";
+
+        clock-frequency = <100000>;
+
+        // The I2C controller must have its status "disabled".  The I2C bus
+        // demultiplexer will enable it at runtime when needed.
+        status = "disabled";
+    };
+
+    i2c2: i2c@e6530000 {
+        reg = <0 0xe6530000 0 0x40>;
+        pinctrl-0 = <&i2c2_pins>;
+        // The pinctrl property for the parent I2C controller needs a pinctrl
+        // state with the same name as i2c-bus-name in the I2C bus demultiplexer
+        // node, not "default"!
+        pinctrl-names = "i2c-hdmi";
+
+        clock-frequency = <100000>;
+
+        // The I2C controller must have its status "disabled".  The I2C bus
+        // demultiplexer will enable it at runtime when needed.
+        status = "disabled";
+    };
+
+    // Example for a bus to be demuxed.  It contains various I2C clients for
+    // HDMI, so the bus is named "i2c-hdmi":
+    i2chdmi: i2c-mux3 {
+            compatible = "i2c-demux-pinctrl";
+            i2c-parent = <&iic2>, <&i2c2>, <&gpioi2c2>;
+            i2c-bus-name = "i2c-hdmi";
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            ak4643: codec@12 {
+                    compatible = "asahi-kasei,ak4643";
+                    #sound-dai-cells = <0>;
+                    reg = <0x12>;
+            };
+
+            composite-in@20 {
+                    compatible = "adi,adv7180";
+                    reg = <0x20>;
+
+                    port {
+                            adv7180: endpoint {
+                                    bus-width = <8>;
+                                    remote-endpoint = <&vin1ep0>;
+                            };
+                    };
+            };
+
+            hdmi@39 {
+                    compatible = "adi,adv7511w";
+                    reg = <0x39>;
+                    interrupt-parent = <&gpio1>;
+                    interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
+                    clocks = <&cec_clock>;
+                    clock-names = "cec";
+
+                    avdd-supply = <&fixedregulator1v8>;
+                    dvdd-supply = <&fixedregulator1v8>;
+                    pvdd-supply = <&fixedregulator1v8>;
+                    dvdd-3v-supply = <&fixedregulator3v3>;
+                    bgvdd-supply = <&fixedregulator1v8>;
+
+                    adi,input-depth = <8>;
+                    adi,input-colorspace = "rgb";
+                    adi,input-clock = "1x";
+
+                    ports {
+                            #address-cells = <1>;
+                            #size-cells = <0>;
+
+                            port@0 {
+                                    reg = <0>;
+                                    adv7511_in: endpoint {
+                                            remote-endpoint = <&lvds0_out>;
+                                    };
+                            };
+
+                            port@1 {
+                                    reg = <1>;
+                                    adv7511_out: endpoint {
+                                            remote-endpoint = <&hdmi_con_out>;
+                                    };
+                            };
+                    };
+            };
+    };
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] dt-bindings: i2c: i2c-demux-pinctrl: Convert to json-schema
  2023-10-23 13:53 [PATCH] dt-bindings: i2c: i2c-demux-pinctrl: Convert to json-schema Geert Uytterhoeven
@ 2023-10-23 15:21 ` Wolfram Sang
  2023-10-24 16:44 ` Conor Dooley
  2023-10-26 11:05 ` Wolfram Sang
  2 siblings, 0 replies; 4+ messages in thread
From: Wolfram Sang @ 2023-10-23 15:21 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	linux-i2c, devicetree, linux-renesas-soc

[-- Attachment #1: Type: text/plain, Size: 2110 bytes --]

Hi Geert,

On Mon, Oct 23, 2023 at 03:53:00PM +0200, Geert Uytterhoeven wrote:
> Convert the pinctrl-based I2C bus demultiplexer Device Tree binding
> documentation to json-schema.
> 
> Update the example to match reality.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> ---

Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com> 

One minor nit:

> +            hdmi@39 {
> +                    compatible = "adi,adv7511w";
> +                    reg = <0x39>;
> +                    interrupt-parent = <&gpio1>;
> +                    interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
> +                    clocks = <&cec_clock>;
> +                    clock-names = "cec";
> +
> +                    avdd-supply = <&fixedregulator1v8>;
> +                    dvdd-supply = <&fixedregulator1v8>;
> +                    pvdd-supply = <&fixedregulator1v8>;
> +                    dvdd-3v-supply = <&fixedregulator3v3>;
> +                    bgvdd-supply = <&fixedregulator1v8>;
> +
> +                    adi,input-depth = <8>;
> +                    adi,input-colorspace = "rgb";
> +                    adi,input-clock = "1x";
> +
> +                    ports {
> +                            #address-cells = <1>;
> +                            #size-cells = <0>;
> +
> +                            port@0 {
> +                                    reg = <0>;
> +                                    adv7511_in: endpoint {
> +                                            remote-endpoint = <&lvds0_out>;
> +                                    };
> +                            };
> +
> +                            port@1 {
> +                                    reg = <1>;
> +                                    adv7511_out: endpoint {
> +                                            remote-endpoint = <&hdmi_con_out>;
> +                                    };
> +                            };
> +                    };
> +            };

Let's drop this huge hunk. It doesn't add value for demuxer.

Thanks for doing this!

   Wolfram


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] dt-bindings: i2c: i2c-demux-pinctrl: Convert to json-schema
  2023-10-23 13:53 [PATCH] dt-bindings: i2c: i2c-demux-pinctrl: Convert to json-schema Geert Uytterhoeven
  2023-10-23 15:21 ` Wolfram Sang
@ 2023-10-24 16:44 ` Conor Dooley
  2023-10-26 11:05 ` Wolfram Sang
  2 siblings, 0 replies; 4+ messages in thread
From: Conor Dooley @ 2023-10-24 16:44 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Wolfram Sang, linux-i2c, devicetree, linux-renesas-soc

[-- Attachment #1: Type: text/plain, Size: 12192 bytes --]

On Mon, Oct 23, 2023 at 03:53:00PM +0200, Geert Uytterhoeven wrote:
> Convert the pinctrl-based I2C bus demultiplexer Device Tree binding
> documentation to json-schema.
> 
> Update the example to match reality.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>

This conversion seems fine to me.
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>

Thanks,
Conor.

> ---
> The example includes changes from "[PATCH 0/3] dts: renesas: Fix I2C bus
> demux node names and ADV751[13] power supplies"
> (https://lore.kernel.org/r/cover.1698068646.git.geert+renesas@glider.be)
> 
>  .../bindings/i2c/i2c-demux-pinctrl.txt        | 135 --------------
>  .../bindings/i2c/i2c-demux-pinctrl.yaml       | 172 ++++++++++++++++++
>  2 files changed, 172 insertions(+), 135 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.txt
>  create mode 100644 Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.yaml
> 
> diff --git a/Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.txt b/Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.txt
> deleted file mode 100644
> index 86b2e433a969013c..0000000000000000
> --- a/Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.txt
> +++ /dev/null
> @@ -1,135 +0,0 @@
> -Pinctrl-based I2C Bus DeMux
> -
> -This binding describes an I2C bus demultiplexer that uses pin multiplexing to
> -route the I2C signals, and represents the pin multiplexing configuration using
> -the pinctrl device tree bindings. This may be used to select one I2C IP core at
> -runtime which may have a better feature set for a given task than another I2C
> -IP core on the SoC. The most simple example is to fall back to GPIO bitbanging
> -if your current runtime configuration hits an errata of the internal IP core.
> -
> -    +-------------------------------+
> -    | SoC                           |
> -    |                               |   +-----+  +-----+
> -    |   +------------+              |   | dev |  | dev |
> -    |   |I2C IP Core1|--\           |   +-----+  +-----+
> -    |   +------------+   \-------+  |      |        |
> -    |                    |Pinctrl|--|------+--------+
> -    |   +------------+   +-------+  |
> -    |   |I2C IP Core2|--/           |
> -    |   +------------+              |
> -    |                               |
> -    +-------------------------------+
> -
> -Required properties:
> -- compatible: "i2c-demux-pinctrl"
> -- i2c-parent: List of phandles of I2C masters available for selection. The first
> -	      one will be used as default.
> -- i2c-bus-name: The name of this bus. Also needed as pinctrl-name for the I2C
> -		parents.
> -
> -Furthermore, I2C mux properties and child nodes. See i2c-mux.yaml in this
> -directory.
> -
> -Example:
> -
> -Here is a snipplet for a bus to be demuxed. It contains various i2c clients for
> -HDMI, so the bus is named "i2c-hdmi":
> -
> -	i2chdmi: i2c@8 {
> -
> -		compatible = "i2c-demux-pinctrl";
> -		i2c-parent = <&gpioi2c>, <&iic2>, <&i2c2>;
> -		i2c-bus-name = "i2c-hdmi";
> -		#address-cells = <1>;
> -		#size-cells = <0>;
> -
> -		ak4643: sound-codec@12 {
> -			compatible = "asahi-kasei,ak4643";
> -
> -			#sound-dai-cells = <0>;
> -			reg = <0x12>;
> -		};
> -
> -		composite-in@20 {
> -			compatible = "adi,adv7180";
> -			reg = <0x20>;
> -			remote = <&vin1>;
> -
> -			port {
> -				adv7180: endpoint {
> -					bus-width = <8>;
> -					remote-endpoint = <&vin1ep0>;
> -				};
> -			};
> -		};
> -
> -		hdmi@39 {
> -			compatible = "adi,adv7511w";
> -			reg = <0x39>;
> -			interrupt-parent = <&gpio1>;
> -			interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
> -
> -			adi,input-depth = <8>;
> -			adi,input-colorspace = "rgb";
> -			adi,input-clock = "1x";
> -			adi,input-style = <1>;
> -			adi,input-justification = "evenly";
> -
> -			ports {
> -				#address-cells = <1>;
> -				#size-cells = <0>;
> -
> -				port@0 {
> -					reg = <0>;
> -					adv7511_in: endpoint {
> -						remote-endpoint = <&du_out_lvds0>;
> -					};
> -				};
> -
> -				port@1 {
> -					reg = <1>;
> -					adv7511_out: endpoint {
> -						remote-endpoint = <&hdmi_con>;
> -					};
> -				};
> -			};
> -		};
> -	};
> -
> -And for clarification, here are the snipplets for the i2c-parents:
> -
> -	gpioi2c: i2c@9 {
> -		#address-cells = <1>;
> -		#size-cells = <0>;
> -		compatible = "i2c-gpio";
> -		gpios = <&gpio5 6 GPIO_ACTIVE_HIGH /* sda */
> -			 &gpio5 5 GPIO_ACTIVE_HIGH /* scl */
> -			>;
> -		i2c-gpio,delay-us = <5>;
> -	};
> -
> -...
> -
> -&i2c2	{
> -	pinctrl-0 = <&i2c2_pins>;
> -	pinctrl-names = "i2c-hdmi";
> -
> -	clock-frequency = <100000>;
> -};
> -
> -...
> -
> -&iic2	{
> -	pinctrl-0 = <&iic2_pins>;
> -	pinctrl-names = "i2c-hdmi";
> -
> -	clock-frequency = <100000>;
> -};
> -
> -Please note:
> -
> -- pinctrl properties for the parent I2C controllers need a pinctrl state
> -  with the same name as i2c-bus-name, not "default"!
> -
> -- the i2c masters must have their status "disabled". This driver will
> -  enable them at runtime when needed.
> diff --git a/Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.yaml b/Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.yaml
> new file mode 100644
> index 0000000000000000..2c08f2a7cf1ee28c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.yaml
> @@ -0,0 +1,172 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/i2c/i2c-demux-pinctrl.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Pinctrl-based I2C Bus Demultiplexer
> +
> +maintainers:
> +  - Wolfram Sang <wsa+renesas@sang-engineering.com>
> +
> +description: |
> +  This binding describes an I2C bus demultiplexer that uses pin multiplexing to
> +  route the I2C signals, and represents the pin multiplexing configuration
> +  using the pinctrl device tree bindings.  This may be used to select one I2C
> +  IP core at runtime which may have a better feature set for a given task than
> +  another I2C IP core on the SoC.  The most simple example is to fall back to
> +  GPIO bitbanging if your current runtime configuration hits an errata of the
> +  internal IP core.
> +
> +      +-------------------------------+
> +      | SoC                           |
> +      |                               |   +-----+  +-----+
> +      |   +------------+              |   | dev |  | dev |
> +      |   |I2C IP Core1|--\           |   +-----+  +-----+
> +      |   +------------+   \-------+  |      |        |
> +      |                    |Pinctrl|--|------+--------+
> +      |   +------------+   +-------+  |
> +      |   |I2C IP Core2|--/           |
> +      |   +------------+              |
> +      |                               |
> +      +-------------------------------+
> +
> +allOf:
> +  - $ref: i2c-mux.yaml
> +  - $ref: /schemas/i2c/i2c-controller.yaml#
> +
> +properties:
> +  compatible:
> +    const: i2c-demux-pinctrl
> +
> +  i2c-parent:
> +    $ref: /schemas/types.yaml#/definitions/phandle-array
> +    description:
> +      List of phandles of I2C masters available for selection.  The first one
> +      will be used as default.
> +
> +  i2c-bus-name:
> +    $ref: /schemas/types.yaml#/definitions/string
> +    description:
> +      The name of this bus.  Also needed as pinctrl-name for the I2C parents.
> +
> +required:
> +  - compatible
> +  - i2c-parent
> +  - i2c-bus-name
> +
> +unevaluatedProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/gpio/gpio.h>
> +    #include <dt-bindings/interrupt-controller/irq.h>
> +
> +    gpioi2c2: i2c-9 {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +        compatible = "i2c-gpio";
> +        scl-gpios = <&gpio5 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +        sda-gpios = <&gpio5 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +        i2c-gpio,delay-us = <5>;
> +
> +        // The I2C controller must have its status "disabled".  The I2C bus
> +        // demultiplexer will enable it at runtime when needed.
> +        status = "disabled";
> +    };
> +
> +    iic2: i2c@e6520000 {
> +        reg = <0xe6520000 0x425>;
> +        pinctrl-0 = <&iic2_pins>;
> +        // The pinctrl property for the parent I2C controller needs a pinctrl
> +        // state with the same name as i2c-bus-name in the I2C bus demultiplexer
> +        // node, not "default"!
> +        pinctrl-names = "i2c-hdmi";
> +
> +        clock-frequency = <100000>;
> +
> +        // The I2C controller must have its status "disabled".  The I2C bus
> +        // demultiplexer will enable it at runtime when needed.
> +        status = "disabled";
> +    };
> +
> +    i2c2: i2c@e6530000 {
> +        reg = <0 0xe6530000 0 0x40>;
> +        pinctrl-0 = <&i2c2_pins>;
> +        // The pinctrl property for the parent I2C controller needs a pinctrl
> +        // state with the same name as i2c-bus-name in the I2C bus demultiplexer
> +        // node, not "default"!
> +        pinctrl-names = "i2c-hdmi";
> +
> +        clock-frequency = <100000>;
> +
> +        // The I2C controller must have its status "disabled".  The I2C bus
> +        // demultiplexer will enable it at runtime when needed.
> +        status = "disabled";
> +    };
> +
> +    // Example for a bus to be demuxed.  It contains various I2C clients for
> +    // HDMI, so the bus is named "i2c-hdmi":
> +    i2chdmi: i2c-mux3 {
> +            compatible = "i2c-demux-pinctrl";
> +            i2c-parent = <&iic2>, <&i2c2>, <&gpioi2c2>;
> +            i2c-bus-name = "i2c-hdmi";
> +            #address-cells = <1>;
> +            #size-cells = <0>;
> +
> +            ak4643: codec@12 {
> +                    compatible = "asahi-kasei,ak4643";
> +                    #sound-dai-cells = <0>;
> +                    reg = <0x12>;
> +            };
> +
> +            composite-in@20 {
> +                    compatible = "adi,adv7180";
> +                    reg = <0x20>;
> +
> +                    port {
> +                            adv7180: endpoint {
> +                                    bus-width = <8>;
> +                                    remote-endpoint = <&vin1ep0>;
> +                            };
> +                    };
> +            };
> +
> +            hdmi@39 {
> +                    compatible = "adi,adv7511w";
> +                    reg = <0x39>;
> +                    interrupt-parent = <&gpio1>;
> +                    interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
> +                    clocks = <&cec_clock>;
> +                    clock-names = "cec";
> +
> +                    avdd-supply = <&fixedregulator1v8>;
> +                    dvdd-supply = <&fixedregulator1v8>;
> +                    pvdd-supply = <&fixedregulator1v8>;
> +                    dvdd-3v-supply = <&fixedregulator3v3>;
> +                    bgvdd-supply = <&fixedregulator1v8>;
> +
> +                    adi,input-depth = <8>;
> +                    adi,input-colorspace = "rgb";
> +                    adi,input-clock = "1x";
> +
> +                    ports {
> +                            #address-cells = <1>;
> +                            #size-cells = <0>;
> +
> +                            port@0 {
> +                                    reg = <0>;
> +                                    adv7511_in: endpoint {
> +                                            remote-endpoint = <&lvds0_out>;
> +                                    };
> +                            };
> +
> +                            port@1 {
> +                                    reg = <1>;
> +                                    adv7511_out: endpoint {
> +                                            remote-endpoint = <&hdmi_con_out>;
> +                                    };
> +                            };
> +                    };
> +            };
> +    };
> -- 
> 2.34.1
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] dt-bindings: i2c: i2c-demux-pinctrl: Convert to json-schema
  2023-10-23 13:53 [PATCH] dt-bindings: i2c: i2c-demux-pinctrl: Convert to json-schema Geert Uytterhoeven
  2023-10-23 15:21 ` Wolfram Sang
  2023-10-24 16:44 ` Conor Dooley
@ 2023-10-26 11:05 ` Wolfram Sang
  2 siblings, 0 replies; 4+ messages in thread
From: Wolfram Sang @ 2023-10-26 11:05 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	linux-i2c, devicetree, linux-renesas-soc

[-- Attachment #1: Type: text/plain, Size: 318 bytes --]

On Mon, Oct 23, 2023 at 03:53:00PM +0200, Geert Uytterhoeven wrote:
> Convert the pinctrl-based I2C bus demultiplexer Device Tree binding
> documentation to json-schema.
> 
> Update the example to match reality.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>

Applied to for-next, thanks!


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-10-26 11:05 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-23 13:53 [PATCH] dt-bindings: i2c: i2c-demux-pinctrl: Convert to json-schema Geert Uytterhoeven
2023-10-23 15:21 ` Wolfram Sang
2023-10-24 16:44 ` Conor Dooley
2023-10-26 11:05 ` Wolfram Sang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.