diff options
author | Marek Vasut <marex@denx.de> | 2020-02-07 16:57:50 +0100 |
---|---|---|
committer | Heiko Schocher <hs@denx.de> | 2020-03-16 07:46:04 +0100 |
commit | 7231522a5ed1545d3206f5204676897d62a24f5f (patch) | |
tree | c1d050c01fe09c0f6ffa1cd8a70fc92f893ca9da /include/i2c.h | |
parent | 1f746a2c82b1b455f7f535412afffd7e4689913d (diff) |
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>
Diffstat (limited to 'include/i2c.h')
-rw-r--r-- | include/i2c.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/include/i2c.h b/include/i2c.h index 0faf8542e2..7c92042c58 100644 --- a/include/i2c.h +++ b/include/i2c.h @@ -331,6 +331,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 * * Drivers should support these operations unless otherwise noted. These |