summaryrefslogtreecommitdiffstats
path: root/drivers/i2c/busses/i2c-at91.h
diff options
context:
space:
mode:
authorKamel Bouhara <kamel.bouhara@bootlin.com>2020-01-15 13:54:18 +0200
committerWolfram Sang <wsa@the-dreams.de>2020-02-26 11:06:41 +0100
commitd3d3fdcc4c90fed42b400999721a5b535a310533 (patch)
tree5d17f3686dea8f209b57b811984540f62d3c9d38 /drivers/i2c/busses/i2c-at91.h
parent19e5cef058a0089af4148d79af4658245a6952d2 (diff)
downloadlinux-stable-d3d3fdcc4c90fed42b400999721a5b535a310533.tar.gz
linux-stable-d3d3fdcc4c90fed42b400999721a5b535a310533.tar.bz2
linux-stable-d3d3fdcc4c90fed42b400999721a5b535a310533.zip
i2c: at91: implement i2c bus recovery
Implement i2c bus recovery when slaves devices might hold SDA low. In this case re-assign SCL/SDA to gpios and issue 9 dummy clock pulses until the slave release SDA. Signed-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com> Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com> Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Diffstat (limited to 'drivers/i2c/busses/i2c-at91.h')
-rw-r--r--drivers/i2c/busses/i2c-at91.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/i2c/busses/i2c-at91.h b/drivers/i2c/busses/i2c-at91.h
index 977a67bc0f88..f57a6cab96b4 100644
--- a/drivers/i2c/busses/i2c-at91.h
+++ b/drivers/i2c/busses/i2c-at91.h
@@ -151,6 +151,10 @@ struct at91_twi_dev {
u32 fifo_size;
struct at91_twi_dma dma;
bool slave_detected;
+ struct i2c_bus_recovery_info rinfo;
+ struct pinctrl *pinctrl;
+ struct pinctrl_state *pinctrl_pins_default;
+ struct pinctrl_state *pinctrl_pins_gpio;
#ifdef CONFIG_I2C_AT91_SLAVE_EXPERIMENTAL
unsigned smr;
struct i2c_client *slave;