1 # SPDX-License-Identifier: GPL-2.0-only 1 # SPDX-License-Identifier: GPL-2.0-only 2 %YAML 1.2 2 %YAML 1.2 3 --- 3 --- 4 $id: http://devicetree.org/schemas/i2c/i2c-mux 4 $id: http://devicetree.org/schemas/i2c/i2c-mux-pinctrl.yaml# 5 $schema: http://devicetree.org/meta-schemas/co 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 6 6 7 title: Pinctrl-based I2C Bus Mux 7 title: Pinctrl-based I2C Bus Mux 8 8 9 maintainers: 9 maintainers: 10 - Wolfram Sang <wsa@kernel.org> 10 - Wolfram Sang <wsa@kernel.org> 11 11 12 description: | 12 description: | 13 This binding describes an I2C bus multiplexe 13 This binding describes an I2C bus multiplexer that uses pin multiplexing to route the I2C 14 signals, and represents the pin multiplexing 14 signals, and represents the pin multiplexing configuration using the pinctrl device tree 15 bindings. 15 bindings. 16 16 17 +-----+ +--- 17 +-----+ +-----+ 18 | dev | | de 18 | dev | | dev | 19 +------------------------+ +-----+ +--- 19 +------------------------+ +-----+ +-----+ 20 | SoC | | | 20 | SoC | | | 21 | /----|------+--------+ 21 | /----|------+--------+ 22 | +---+ +------+ | child bus A, on 22 | +---+ +------+ | child bus A, on first set of pins 23 | |I2C|---|Pinmux| | 23 | |I2C|---|Pinmux| | 24 | +---+ +------+ | child bus B, on 24 | +---+ +------+ | child bus B, on second set of pins 25 | \----|------+--------+ 25 | \----|------+--------+--------+ 26 | | | | 26 | | | | | 27 +------------------------+ +-----+ +---- 27 +------------------------+ +-----+ +-----+ +-----+ 28 | dev | | dev 28 | dev | | dev | | dev | 29 +-----+ +---- 29 +-----+ +-----+ +-----+ 30 30 31 For each named state defined in the pinctrl- 31 For each named state defined in the pinctrl-names property, an I2C child bus will be created. 32 I2C child bus numbers are assigned based on 32 I2C child bus numbers are assigned based on the index into the pinctrl-names property. 33 33 34 The only exception is that no bus will be cr 34 The only exception is that no bus will be created for a state named "idle". If such a state is 35 defined, it must be the last entry in pinctr 35 defined, it must be the last entry in pinctrl-names. For example: 36 36 37 pinctrl-names = "ddc", "pta", "idle" -> 37 pinctrl-names = "ddc", "pta", "idle" -> ddc = bus 0, pta = bus 1 38 pinctrl-names = "ddc", "idle", "pta" -> 38 pinctrl-names = "ddc", "idle", "pta" -> Invalid ("idle" not last) 39 pinctrl-names = "idle", "ddc", "pta" -> 39 pinctrl-names = "idle", "ddc", "pta" -> Invalid ("idle" not last) 40 40 41 Whenever an access is made to a device on a 41 Whenever an access is made to a device on a child bus, the relevant pinctrl state will be 42 programmed into hardware. 42 programmed into hardware. 43 43 44 If an idle state is defined, whenever an acc 44 If an idle state is defined, whenever an access is not being made to a device on a child bus, 45 the idle pinctrl state will be programmed in 45 the idle pinctrl state will be programmed into hardware. 46 46 47 If an idle state is not defined, the most re 47 If an idle state is not defined, the most recently used pinctrl state will be left programmed 48 into hardware whenever no access is being ma 48 into hardware whenever no access is being made of a device on a child bus. 49 49 50 properties: 50 properties: 51 compatible: 51 compatible: 52 const: i2c-mux-pinctrl 52 const: i2c-mux-pinctrl 53 53 54 i2c-parent: 54 i2c-parent: 55 $ref: /schemas/types.yaml#/definitions/pha 55 $ref: /schemas/types.yaml#/definitions/phandle 56 description: The phandle of the I2C bus th 56 description: The phandle of the I2C bus that this multiplexer's master-side port is connected 57 to. 57 to. 58 58 59 allOf: 59 allOf: 60 - $ref: i2c-mux.yaml 60 - $ref: i2c-mux.yaml 61 61 62 unevaluatedProperties: false 62 unevaluatedProperties: false 63 63 64 required: 64 required: 65 - compatible 65 - compatible 66 - i2c-parent 66 - i2c-parent 67 67 68 examples: 68 examples: 69 - | 69 - | 70 i2cmux { 70 i2cmux { 71 compatible = "i2c-mux-pinctrl"; 71 compatible = "i2c-mux-pinctrl"; 72 #address-cells = <1>; 72 #address-cells = <1>; 73 #size-cells = <0>; 73 #size-cells = <0>; 74 74 75 i2c-parent = <&i2c1>; 75 i2c-parent = <&i2c1>; 76 76 77 pinctrl-names = "ddc", "pta", "idle"; 77 pinctrl-names = "ddc", "pta", "idle"; 78 pinctrl-0 = <&state_i2cmux_ddc>; 78 pinctrl-0 = <&state_i2cmux_ddc>; 79 pinctrl-1 = <&state_i2cmux_pta>; 79 pinctrl-1 = <&state_i2cmux_pta>; 80 pinctrl-2 = <&state_i2cmux_idle>; 80 pinctrl-2 = <&state_i2cmux_idle>; 81 81 82 i2c@0 { 82 i2c@0 { 83 reg = <0>; 83 reg = <0>; 84 #address-cells = <1>; 84 #address-cells = <1>; 85 #size-cells = <0>; 85 #size-cells = <0>; 86 86 87 eeprom@50 { 87 eeprom@50 { 88 compatible = "atmel,24c02"; 88 compatible = "atmel,24c02"; 89 reg = <0x50>; 89 reg = <0x50>; 90 }; 90 }; 91 }; 91 }; 92 92 93 i2c@1 { 93 i2c@1 { 94 reg = <1>; 94 reg = <1>; 95 #address-cells = <1>; 95 #address-cells = <1>; 96 #size-cells = <0>; 96 #size-cells = <0>; 97 97 98 eeprom@50 { 98 eeprom@50 { 99 compatible = "atmel,24c02"; 99 compatible = "atmel,24c02"; 100 reg = <0x50>; 100 reg = <0x50>; 101 }; 101 }; 102 }; 102 }; 103 }; 103 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.