Thread (16 messages) 16 messages, 4 authors, 2012-06-18

[PATCH] gpio: of_get_named_gpio_flags() return -EPROBE_DEFER if GPIO not yet available

From: Roland Stigge <hidden>
Date: 2012-06-18 16:40:53
Also in: alsa-devel, linux-mmc, lkml

On 06/18/2012 05:45 PM, Stephen Warren wrote:
quoted
quoted
quoted
Should be easy to fix (replacing the if (... == -ENODEV) to -EPROBE_DEFER.

Will you provide patches as signalled, of should I? Which branch would
be the correct one to build on top?
I'm happy either way. It'd probably be best to roll the change into your
patch/series so you can manage all the dependencies in one series, but
if you can't for some reason, I'm happy to provide a patch for this.
I should be able ;-) - is broonie's sound.git, branch for-next the
correct one to patch against?
Yes, that's the one. Thanks.
I'm posting this as a series of 2 for the sound changes only. Would be 
easiest to merge separately via sound/for-next, and the gpiolib-of 
change via gpio. However, this could break bisecting.

Since the respective precondition commits are only in the sound tree, 
this would be the only one practical for merging a single combined 
patch (combining those 3). Would this be OK for the GPIO maintainers? 
It's practically only a one-line change in gpiolib-of.c that would come 
in via sound.

Thanks in advance,

Roland


PS: Just for illustration purposes for the sound maintainers:
---
 drivers/gpio/gpiolib-of.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
--- linux-2.6.orig/drivers/gpio/gpiolib-of.c
+++ linux-2.6/drivers/gpio/gpiolib-of.c
@@ -62,7 +62,10 @@ static int of_gpiochip_find_and_xlate(st
 int of_get_named_gpio_flags(struct device_node *np, const char *propname,
                            int index, enum of_gpio_flags *flags)
 {
-       struct gg_data gg_data = { .flags = flags, .out_gpio = -ENODEV };
+       /* Return -EPROBE_DEFER to support probe() functions to be called
+        * later when the GPIO actually becomes available
+        */
+       struct gg_data gg_data = { .flags = flags, .out_gpio = -EPROBE_DEFER };
        int ret;

        /* .of_xlate might decide to not fill in the flags, so clear it. */
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help