Commit 86335b51 authored by Rob Herring's avatar Rob Herring
Browse files

dt-bindings: i2c: i2c-mux-pca954x: Convert to DT schema



Convert the i2c-mux-pca954x binding to DT schema format.

Add the missing compatible for 'nxp,pca9645' which is already in use.

Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: default avatarWolfram Sang <wsa@kernel.org>
Acked-by: default avatarPeter Rosin <peda@axentia.se>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20210526184839.2937899-6-robh@kernel.org
parent a404a636
Loading
Loading
Loading
Loading
+0 −74
Original line number Diff line number Diff line
* NXP PCA954x I2C bus switch

The driver supports NXP PCA954x and PCA984x I2C mux/switch devices.

Required Properties:

  - compatible: Must contain one of the following.
    "nxp,pca9540",
    "nxp,pca9542",
    "nxp,pca9543",
    "nxp,pca9544",
    "nxp,pca9545",
    "nxp,pca9546", "nxp,pca9846",
    "nxp,pca9547", "nxp,pca9847",
    "nxp,pca9548", "nxp,pca9848",
    "nxp,pca9849"

  - reg: The I2C address of the device.

  The following required properties are defined externally:

  - Standard I2C mux properties. See i2c-mux.txt in this directory.
  - I2C child bus nodes. See i2c-mux.txt in this directory.

Optional Properties:

  - reset-gpios: Reference to the GPIO connected to the reset input.
  - idle-state: if present, overrides i2c-mux-idle-disconnect,
    Please refer to Documentation/devicetree/bindings/mux/mux-controller.yaml
  - i2c-mux-idle-disconnect: Boolean; if defined, forces mux to disconnect all
    children in idle state. This is necessary for example, if there are several
    multiplexers on the bus and the devices behind them use same I2C addresses.
  - interrupts: Interrupt mapping for IRQ.
  - interrupt-controller: Marks the device node as an interrupt controller.
  - #interrupt-cells : Should be two.
    - first cell is the pin number
    - second cell is used to specify flags.
    See also Documentation/devicetree/bindings/interrupt-controller/interrupts.txt

Example:

	i2c-switch@74 {
		compatible = "nxp,pca9548";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x74>;

		interrupt-parent = <&ipic>;
		interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
		interrupt-controller;
		#interrupt-cells = <2>;

		i2c@2 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <2>;

			eeprom@54 {
				compatible = "atmel,24c08";
				reg = <0x54>;
			};
		};

		i2c@4 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <4>;

			rtc@51 {
				compatible = "nxp,pcf8563";
				reg = <0x51>;
			};
		};
	};
+110 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/i2c/i2c-mux-pca954x.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NXP PCA954x I2C bus switch

maintainers:
  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>

description:
  The binding supports NXP PCA954x and PCA984x I2C mux/switch devices.

allOf:
  - $ref: /schemas/i2c/i2c-mux.yaml#

properties:
  compatible:
    oneOf:
      - enum:
          - nxp,pca9540
          - nxp,pca9542
          - nxp,pca9543
          - nxp,pca9544
          - nxp,pca9545
          - nxp,pca9546
          - nxp,pca9547
          - nxp,pca9548
          - nxp,pca9846
          - nxp,pca9847
          - nxp,pca9848
          - nxp,pca9849
      - items:
          - const: nxp,pca9646
          - const: nxp,pca9546

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  "#interrupt-cells":
    const: 2

  interrupt-controller: true

  reset-gpios:
    maxItems: 1

  i2c-mux-idle-disconnect:
    type: boolean
    description: Forces mux to disconnect all children in idle state. This is
      necessary for example, if there are several multiplexers on the bus and
      the devices behind them use same I2C addresses.

  idle-state:
    description: if present, overrides i2c-mux-idle-disconnect
    $ref: /schemas/mux/mux-controller.yaml#/properties/idle-state

required:
  - compatible
  - reg

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>

    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        i2c-mux@74 {
            compatible = "nxp,pca9548";
            #address-cells = <1>;
            #size-cells = <0>;
            reg = <0x74>;

            interrupt-parent = <&ipic>;
            interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
            interrupt-controller;
            #interrupt-cells = <2>;

            i2c@2 {
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <2>;

                eeprom@54 {
                    compatible = "atmel,24c08";
                    reg = <0x54>;
                };
            };

            i2c@4 {
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <4>;

                rtc@51 {
                    compatible = "nxp,pcf8563";
                    reg = <0x51>;
                };
            };
        };
    };
...