mirror of
				https://github.com/AetherDroid/android_kernel_samsung_on5xelte.git
				synced 2025-10-30 23:58:51 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| GPIO-based I2C Bus Mux
 | |
| 
 | |
| This binding describes an I2C bus multiplexer that uses GPIOs to
 | |
| route the I2C signals.
 | |
| 
 | |
|                                   +-----+  +-----+
 | |
|                                   | dev |  | dev |
 | |
|     +------------+                +-----+  +-----+
 | |
|     | SoC        |                   |        |
 | |
|     |            |          /--------+--------+
 | |
|     |   +------+ |  +------+    child bus A, on GPIO value set to 0
 | |
|     |   | I2C  |-|--| Mux  |
 | |
|     |   +------+ |  +--+---+    child bus B, on GPIO value set to 1
 | |
|     |            |     |    \----------+--------+--------+
 | |
|     |   +------+ |     |               |        |        |
 | |
|     |   | GPIO |-|-----+            +-----+  +-----+  +-----+
 | |
|     |   +------+ |                  | dev |  | dev |  | dev |
 | |
|     +------------+                  +-----+  +-----+  +-----+
 | |
| 
 | |
| Required properties:
 | |
| - compatible: i2c-mux-gpio
 | |
| - i2c-parent: The phandle of the I2C bus that this multiplexer's master-side
 | |
|   port is connected to.
 | |
| - mux-gpios: list of gpios used to control the muxer
 | |
| * Standard I2C mux properties. See mux.txt in this directory.
 | |
| * I2C child bus nodes. See mux.txt in this directory.
 | |
| 
 | |
| Optional properties:
 | |
| - idle-state: value to set the muxer to when idle. When no value is
 | |
|   given, it defaults to the last value used.
 | |
| 
 | |
| For each i2c child node, an I2C child bus will be created. They will
 | |
| be numbered based on their order in the device tree.
 | |
| 
 | |
| Whenever an access is made to a device on a child bus, the value set
 | |
| in the revelant node's reg property will be output using the list of
 | |
| GPIOs, the first in the list holding the least-significant value.
 | |
| 
 | |
| If an idle state is defined, using the idle-state (optional) property,
 | |
| whenever an access is not being made to a device on a child bus, the
 | |
| GPIOs will be set according to the idle value.
 | |
| 
 | |
| If an idle state is not defined, the most recently used value will be
 | |
| left programmed into hardware whenever no access is being made to a
 | |
| device on a child bus.
 | |
| 
 | |
| Example:
 | |
| 	i2cmux {
 | |
| 		compatible = "i2c-mux-gpio";
 | |
| 		#address-cells = <1>;
 | |
| 		#size-cells = <0>;
 | |
| 		mux-gpios = <&gpio1 22 0 &gpio1 23 0>;
 | |
| 		i2c-parent = <&i2c1>;
 | |
| 
 | |
| 		i2c@1 {
 | |
| 			reg = <1>;
 | |
| 			#address-cells = <1>;
 | |
| 			#size-cells = <0>;
 | |
| 
 | |
| 			ssd1307: oled@3c {
 | |
| 				compatible = "solomon,ssd1307fb-i2c";
 | |
| 				reg = <0x3c>;
 | |
| 				pwms = <&pwm 4 3000>;
 | |
| 				reset-gpios = <&gpio2 7 1>;
 | |
| 				reset-active-low;
 | |
| 			};
 | |
| 		};
 | |
| 
 | |
| 		i2c@3 {
 | |
| 			reg = <3>;
 | |
| 			#address-cells = <1>;
 | |
| 			#size-cells = <0>;
 | |
| 
 | |
| 			pca9555: pca9555@20 {
 | |
| 				compatible = "nxp,pca9555";
 | |
| 				gpio-controller;
 | |
| 				#gpio-cells = <2>;
 | |
| 				reg = <0x20>;
 | |
| 			};
 | |
| 		};
 | |
| 	};
 | 
