Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dt-bindings: i2c: i2c-mux-pinctrl: Convert to json-schema

Convert the pinctrl-based I2C mux bindings from the free-form text
format to json-schema.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20211217165658.2650677-2-thierry.reding@gmail.com

authored by

Thierry Reding and committed by
Rob Herring
8b82b841 f10a9b72

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