mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 10:26:10 +01:00 
			
		
		
		
	This commit adds driver model support to software emulated i2c bus driver.
This driver supports kernel-style device tree bindings. Fdt properties in use:
- compatible - "i2c-gpio"
- gpios      - data and clock GPIO pin phandles
- delay-us   - micro seconds delay between GPIOs toggle operations,
               which is 1/4 of I2C speed clock period.
Added:
- Config: CONFIG_DM_I2C_GPIO
- File: drivers/i2c/i2c-gpio.c
- File: doc/device-tree-bindings/i2c/i2c-gpio.txt
Driver base code is taken from: drivers/i2c/soft-i2c.c, changes:
- use "i2c-gpio" naming
- update comments style
- move preprocesor macros into functions
- add device tree support
- add driver model i2c support
- code cleanup,
- add Kconfig entry
Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Acked-by: Simon Glass <sjg@chromium.org>
Added braces in i2c_gpio_xfer() to fix style nit:
Signed-off-by: Simon Glass <sjg@chromium.org>
		
	
		
			
				
	
	
		
			38 lines
		
	
	
		
			757 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			757 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| I2C gpio device binding
 | |
| =======================
 | |
| 
 | |
| Driver:
 | |
| - drivers/i2c/i2c-gpio.c
 | |
| 
 | |
| Software i2c device-tree node properties:
 | |
| Required:
 | |
| * #address-cells = <1>;
 | |
| * #size-cells = <0>;
 | |
| * compatible = "i2c-gpio";
 | |
| * gpios = <sda ...>, <scl ...>;
 | |
| 
 | |
| Optional:
 | |
| * i2c-gpio,delay-us = <5>;
 | |
|    The resulting transfer speed can be adjusted by setting the delay[us]
 | |
|    between gpio-toggle operations. Speed [Hz] = 1000000 / 4 * udelay[us],
 | |
|    It not defined, then default is 5us (~50KHz).
 | |
| 
 | |
| Example:
 | |
| 
 | |
| i2c-gpio@1 {
 | |
| 	#address-cells = <1>;
 | |
| 	#size-cells = <0>;
 | |
| 
 | |
| 	compatible = "i2c-gpio";
 | |
| 	gpios = <&gpd1 0 GPIO_ACTIVE_HIGH>, /* SDA */
 | |
| 		<&gpd1 1 GPIO_ACTIVE_HIGH>; /* CLK */
 | |
| 
 | |
| 	i2c-gpio,delay-us = <5>;
 | |
| 
 | |
| 	some_device@5 {
 | |
| 		compatible = "some_device";
 | |
| 		reg = <0x5>;
 | |
| 		...
 | |
| 	};
 | |
| };
 |