| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- # SPDX-License-Identifier: GPL-2.0-only
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/i2c/i2c-mux-pinctrl.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: Pinctrl-based I2C Bus Mux
- maintainers:
- - Wolfram Sang <wsa@kernel.org>
- description: |
- This binding describes an I2C bus multiplexer that uses pin multiplexing to route the I2C
- signals, and represents the pin multiplexing configuration using the pinctrl device tree
- bindings.
- +-----+ +-----+
- | dev | | dev |
- +------------------------+ +-----+ +-----+
- | SoC | | |
- | /----|------+--------+
- | +---+ +------+ | child bus A, on first set of pins
- | |I2C|---|Pinmux| |
- | +---+ +------+ | child bus B, on second set of pins
- | \----|------+--------+--------+
- | | | | |
- +------------------------+ +-----+ +-----+ +-----+
- | dev | | dev | | dev |
- +-----+ +-----+ +-----+
- For each named state defined in the pinctrl-names property, an I2C child bus will be created.
- I2C child bus numbers are assigned based on the index into the pinctrl-names property.
- The only exception is that no bus will be created for a state named "idle". If such a state is
- defined, it must be the last entry in pinctrl-names. For example:
- pinctrl-names = "ddc", "pta", "idle" -> ddc = bus 0, pta = bus 1
- pinctrl-names = "ddc", "idle", "pta" -> Invalid ("idle" not last)
- pinctrl-names = "idle", "ddc", "pta" -> Invalid ("idle" not last)
- Whenever an access is made to a device on a child bus, the relevant pinctrl state will be
- programmed into hardware.
- If an idle state is defined, whenever an access is not being made to a device on a child bus,
- the idle pinctrl state will be programmed into hardware.
- If an idle state is not defined, the most recently used pinctrl state will be left programmed
- into hardware whenever no access is being made of a device on a child bus.
- properties:
- compatible:
- const: i2c-mux-pinctrl
- i2c-parent:
- $ref: /schemas/types.yaml#/definitions/phandle
- description: The phandle of the I2C bus that this multiplexer's master-side port is connected
- to.
- allOf:
- - $ref: i2c-mux.yaml
- unevaluatedProperties: false
- required:
- - compatible
- - i2c-parent
- examples:
- - |
- i2cmux {
- compatible = "i2c-mux-pinctrl";
- #address-cells = <1>;
- #size-cells = <0>;
- i2c-parent = <&i2c1>;
- pinctrl-names = "ddc", "pta", "idle";
- pinctrl-0 = <&state_i2cmux_ddc>;
- pinctrl-1 = <&state_i2cmux_pta>;
- pinctrl-2 = <&state_i2cmux_idle>;
- i2c@0 {
- reg = <0>;
- #address-cells = <1>;
- #size-cells = <0>;
- eeprom@50 {
- compatible = "atmel,24c02";
- reg = <0x50>;
- };
- };
- i2c@1 {
- reg = <1>;
- #address-cells = <1>;
- #size-cells = <0>;
- eeprom@50 {
- compatible = "atmel,24c02";
- reg = <0x50>;
- };
- };
- };
|