mbox series

[RFC,0/4] i2c: core: add generic GPIO bus recovery

Message ID 20200619141904.910889-1-codrin.ciubotariu@microchip.com
Headers show
Series i2c: core: add generic GPIO bus recovery | expand

Message

Codrin Ciubotariu June 19, 2020, 2:19 p.m. UTC
GPIO recovery has been added already for some I2C bus drivers, such as
imx, pxa and at91. These drivers use similar bindings and have more or
less the same code for recovery. For this reason, we aim to move the
GPIO bus recovery implementation to the I2C core so that other drivers
can benefit from it, with small modifications.
This implementation initializes the pinctrl states and the SDA/SCL
GPIOs based on common bindings. The I2C bus drivers can still use
different bindings or other particular recovery steps if needed.
The ugly part with this patch series is the handle of PROBE_DEFER
which could be returned by devm_gpiod_get(). This changes things a
little for i2c_register_adapter() and for this reason this step is
implemented in a sperate patch.
The at91 Microchip driver is the first to use this implementation,
with an AI to move the rest of the drivers in the following steps.

Codrin Ciubotariu (4):
  dt-binding: i2c: add generic properties for GPIO bus recovery
  i2c: core: add generic I2C GPIO recovery
  i2c: core: treat EPROBE_DEFER when acquiring SCL/SDA GPIOs
  i2c: at91: Move to generic GPIO bus recovery

 Documentation/devicetree/bindings/i2c/i2c.txt |  10 ++
 drivers/i2c/busses/i2c-at91-master.c          |  69 +--------
 drivers/i2c/i2c-core-base.c                   | 139 +++++++++++++++++-
 include/linux/i2c.h                           |  11 ++
 4 files changed, 158 insertions(+), 71 deletions(-)

Comments

Wolfram Sang July 5, 2020, 9:09 p.m. UTC | #1
On Fri, Jun 19, 2020 at 05:19:00PM +0300, Codrin Ciubotariu wrote:
> GPIO recovery has been added already for some I2C bus drivers, such as
> imx, pxa and at91. These drivers use similar bindings and have more or
> less the same code for recovery. For this reason, we aim to move the
> GPIO bus recovery implementation to the I2C core so that other drivers
> can benefit from it, with small modifications.
> This implementation initializes the pinctrl states and the SDA/SCL
> GPIOs based on common bindings. The I2C bus drivers can still use
> different bindings or other particular recovery steps if needed.
> The ugly part with this patch series is the handle of PROBE_DEFER
> which could be returned by devm_gpiod_get(). This changes things a
> little for i2c_register_adapter() and for this reason this step is
> implemented in a sperate patch.
> The at91 Microchip driver is the first to use this implementation,
> with an AI to move the rest of the drivers in the following steps.

Thanks for doing this! On a first high level review, this looks very
good. I have one question in patch 1. From Tuesday on, I'll be
off-the-net for two weeks. Still I think it will be all good for the 5.9
merge window unless we encounter an unexpected problem. But as said, so
far it is looking good!