mbox series

[0/7] I2C GPIO to use gpiolibs open drain

Message ID 20170917093906.16325-1-linus.walleij@linaro.org
Headers show
Series I2C GPIO to use gpiolibs open drain | expand

Message

Linus Walleij Sept. 17, 2017, 9:38 a.m. UTC
This augments the I2C GPIO driver to use open drain emulation
or hardware support for open drain from the GPIO driver.

This version layers Geert Uytterhoeven's idea to use explicit
sda-gpios and scl-gpios for the GPIO lines, and strongly
encourage the (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) flags to be
used in all device trees.

We have collected ACKs from the ARM SoC maintainers and the
MFD maintainer and are looking for testers to try this out.

Geert Uytterhoeven (1):
  dt-bindings: i2c: i2c-gpio: Add support for named gpios

Linus Walleij (6):
  i2c: gpio: Convert to use descriptors
  gpio: Make it possible for consumers to enforce open drain
  i2c: gpio: Enforce open drain through gpiolib
  i2c: gpio: Augment all boardfiles to use open drain
  i2c: gpio: Local vars in probe
  i2c: gpio: Add support for named gpios in DT

 Documentation/devicetree/bindings/i2c/i2c-gpio.txt |  32 +++-
 arch/arm/mach-ep93xx/core.c                        |  41 ++--
 arch/arm/mach-ep93xx/edb93xx.c                     |  15 +-
 arch/arm/mach-ep93xx/include/mach/platform.h       |   4 +-
 arch/arm/mach-ep93xx/simone.c                      |  12 +-
 arch/arm/mach-ep93xx/snappercl15.c                 |  12 +-
 arch/arm/mach-ep93xx/vision_ep9307.c               |   7 +-
 arch/arm/mach-ixp4xx/avila-setup.c                 |  17 +-
 arch/arm/mach-ixp4xx/dsmg600-setup.c               |  16 +-
 arch/arm/mach-ixp4xx/fsg-setup.c                   |  16 +-
 arch/arm/mach-ixp4xx/goramo_mlr.c                  |  24 +--
 arch/arm/mach-ixp4xx/ixdp425-setup.c               |  16 +-
 arch/arm/mach-ixp4xx/nas100d-setup.c               |  16 +-
 arch/arm/mach-ixp4xx/nslu2-setup.c                 |  16 +-
 arch/arm/mach-ks8695/board-acs5k.c                 |  15 +-
 arch/arm/mach-pxa/palmz72.c                        |  14 +-
 arch/arm/mach-pxa/viper.c                          |  27 ++-
 arch/arm/mach-sa1100/simpad.c                      |  14 +-
 arch/blackfin/mach-bf533/boards/blackstamp.c       |  19 +-
 arch/blackfin/mach-bf533/boards/ezkit.c            |  18 +-
 arch/blackfin/mach-bf533/boards/stamp.c            |  18 +-
 arch/blackfin/mach-bf561/boards/ezkit.c            |  18 +-
 arch/mips/alchemy/board-gpr.c                      |  23 ++-
 arch/mips/ath79/mach-pb44.c                        |  16 +-
 drivers/gpio/gpiolib.c                             |  13 ++
 drivers/i2c/busses/i2c-gpio.c                      | 213 ++++++++++-----------
 drivers/mfd/sm501.c                                |  49 ++---
 include/linux/gpio/consumer.h                      |   6 +
 include/linux/i2c-gpio.h                           |   4 -
 29 files changed, 423 insertions(+), 288 deletions(-)

-- 
2.13.5

Comments

Geert Uytterhoeven Sept. 18, 2017, 11:15 a.m. UTC | #1
Hi Linus,

On Sun, Sep 17, 2017 at 11:38 AM, Linus Walleij
<linus.walleij@linaro.org> wrote:
> This augments the I2C GPIO driver to use open drain emulation

> or hardware support for open drain from the GPIO driver.

>

> This version layers Geert Uytterhoeven's idea to use explicit

> sda-gpios and scl-gpios for the GPIO lines, and strongly

> encourage the (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) flags to be

> used in all device trees.

>

> We have collected ACKs from the ARM SoC maintainers and the

> MFD maintainer and are looking for testers to try this out.

>

> Geert Uytterhoeven (1):

>   dt-bindings: i2c: i2c-gpio: Add support for named gpios

>

> Linus Walleij (6):

>   i2c: gpio: Convert to use descriptors

>   gpio: Make it possible for consumers to enforce open drain

>   i2c: gpio: Enforce open drain through gpiolib

>   i2c: gpio: Augment all boardfiles to use open drain

>   i2c: gpio: Local vars in probe

>   i2c: gpio: Add support for named gpios in DT


Thanks for doing this, and picking up my patch.

I gave this a try on r8a7740/armadillo800eva.
Without DT changes, the GPIO i2c bus still works fine, but a warning is
printed, as expected:

    gpio-208 (sda): enforced open drain please flag it properly in
DT/ACPI DSDT/board file
    gpio-91 (scl): enforced open drain please flag it properly in
DT/ACPI DSDT/board file

After

    -  sda-gpios = <&pfc 208 GPIO_ACTIVE_HIGH>;
    -  scl-gpios = <&pfc 91 GPIO_ACTIVE_HIGH>;
    + sda-gpios = <&pfc 208 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
    + scl-gpios = <&pfc 91 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;

the warning is gone, and the GPIO i2c bus still works.

Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>


Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Rob Herring (Arm) Sept. 20, 2017, 8:53 p.m. UTC | #2
On Sun, Sep 17, 2017 at 11:39:05AM +0200, Linus Walleij wrote:
> From: Geert Uytterhoeven <geert+renesas () glider ! be>

> 

> The current i2c-gpio DT bindings use a single unnamed "gpios" property

> to refer to the SDA and SCL signal lines by index.  This is error-prone

> for the casual DT writer and reviewer, as one has to look up the order

> in the DT bindings.

> 

> Fix this by amending the DT bindings to use two separate named gpios

> properties, and deprecate the old unnamed variant.

> 

> Take this opportunity to clearly deprecate the "i2c-gpio,sda-open-drain"

> and "i2c-gpio,scl-open-drain" flags as well. The commit describes

> in detail what these flags actually mean, and why they should not be

> used in new device trees.

> 

> Cc: devicetree@vger.kernel.org

> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>

> [Augmented to what I and Rob would like]

> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

> ---

> ChangeLog v1->v2:

> - Create a special section for the deprecated bindings

> - Also deprecate the open drain bool properties

> - Update the example to use the new style of bindings

> ---

>  Documentation/devicetree/bindings/i2c/i2c-gpio.txt | 32 ++++++++++++++++------

>  1 file changed, 23 insertions(+), 9 deletions(-)


Acked-by: Rob Herring <robh@kernel.org>