About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / devicetree / bindings / i2c / i2c-mux-pinctrl.txt




Custom Search

Based on kernel version 3.13. Page generated on 2014-01-20 22:01 EST.

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 mux.txt in this directory.
32	
33	* I2C child bus nodes. See mux.txt 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		};
Hide Line Numbers
About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.