Thread (21 messages) 21 messages, 6 authors, 2017-10-11
STALE3164d
Revisions (5)
  1. v1 [diff vs current]
  2. v1 [diff vs current]
  3. v1 current
  4. v1 [diff vs current]
  5. v3 [diff vs current]

[PATCH 7/7] i2c: gpio: Add support for named gpios in DT

From: geert@linux-m68k.org (Geert Uytterhoeven)
Date: 2017-09-18 09:58:40
Also in: linux-i2c, linux-mips

Hi Linus,

On Sun, Sep 17, 2017 at 11:39 AM, Linus Walleij
[off-list ref] wrote:
quoted hunk ↗ jump to hunk
This adds support for using the "sda" and "scl" GPIOs in
device tree instead of anonymously using index 0 and 1 of
the "gpios" property.

We add a helper function to retrieve the GPIO descriptors
and some explicit error handling since the probe may have
to be deferred. At least this happened to me when moving
to using named "sda" and "scl" lines (all of a sudden this
started to probe before the GPIO driver) so we need to
gracefully defer probe when we ge -ENOENT in the error
pointer.

Suggested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Linus Walleij <redacted>
---
This is pretty much a rewrite of Geerts patch on top of
my own changes to support descriptors.
---
 drivers/i2c/busses/i2c-gpio.c | 59 +++++++++++++++++++++++++++++++------------
 1 file changed, 43 insertions(+), 16 deletions(-)
diff --git a/drivers/i2c/busses/i2c-gpio.c b/drivers/i2c/busses/i2c-gpio.c
index beb5ce523684..2738b851f470 100644
--- a/drivers/i2c/busses/i2c-gpio.c
+++ b/drivers/i2c/busses/i2c-gpio.c
@@ -82,6 +82,42 @@ static void of_i2c_gpio_get_props(struct device_node *np,
                of_property_read_bool(np, "i2c-gpio,scl-output-only");
 }

+static struct gpio_desc *i2c_gpio_get_desc(struct device *dev,
+                                          const char *con_id,
+                                          unsigned int index,
+                                          enum gpiod_flags gflags)
+{
+       struct gpio_desc *retdesc;
+       int ret;
[...]
+       if (ret != -EPROBE_DEFER)
+               dev_err(dev, "error trying to get descriptor: %ld\n", ret);
warning: format '%ld' expects argument of type 'long int', but
argument 3 has type 'int' [-Wformat=]

%d (0day busy?)
+
+       return retdesc;
+}
Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help