mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-29 08:01:08 +00:00
i2c: Export i2c_deblock_gpio_loop()
Export the i2c_deblock_gpio_loop() so it can be used in other places in U-Boot. In particular, this is useful in the GPIO I2C driver, which claims the SDA/SCL GPIOs and thus prevents the i2c_deblock() implementation from claiming the pins as GPIOs again. Signed-off-by: Marek Vasut <marex@denx.de> Reviewed-by: Heiko Schocher <hs@denx.de>
This commit is contained in:
parent
1f746a2c82
commit
7231522a5e
2 changed files with 20 additions and 4 deletions
|
@ -501,10 +501,10 @@ static int i2c_gpio_get_pin(struct gpio_desc *pin)
|
|||
return dm_gpio_get_value(pin);
|
||||
}
|
||||
|
||||
static int i2c_deblock_gpio_loop(struct gpio_desc *sda_pin,
|
||||
struct gpio_desc *scl_pin,
|
||||
unsigned int scl_count,
|
||||
unsigned int delay)
|
||||
int i2c_deblock_gpio_loop(struct gpio_desc *sda_pin,
|
||||
struct gpio_desc *scl_pin,
|
||||
unsigned int scl_count,
|
||||
unsigned int delay)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
|
|
|
@ -330,6 +330,22 @@ uint i2c_get_chip_addr_offset_mask(struct udevice *dev);
|
|||
*/
|
||||
int i2c_deblock(struct udevice *bus);
|
||||
|
||||
/**
|
||||
* i2c_deblock_gpio_loop() - recover a bus from an unknown state by toggling SDA/SCL
|
||||
*
|
||||
* This is the inner logic used for toggling I2C SDA/SCL lines as GPIOs
|
||||
* for deblocking the I2C bus.
|
||||
*
|
||||
* @sda_pin: SDA GPIO
|
||||
* @scl_pin: SCL GPIO
|
||||
* @scl_count: Number of SCL clock cycles generated to deblock SDA
|
||||
* @delay: Delay between SCL clock line changes
|
||||
* @return 0 if OK, -ve on error
|
||||
*/
|
||||
struct gpio_desc;
|
||||
int i2c_deblock_gpio_loop(struct gpio_desc *sda_pin, struct gpio_desc *scl_pin,
|
||||
unsigned int scl_count, unsigned int delay);
|
||||
|
||||
/**
|
||||
* struct dm_i2c_ops - driver operations for I2C uclass
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue