All of lore.kernel.org
 help / color / mirror / Atom feed
From: Roland Stigge <stigge@antcom.de>
To: Stephen Warren <swarren@wwwdotorg.org>
Cc: cjb@laptop.org, grant.likely@secretlab.ca,
	rob.herring@calxeda.com, rmk+kernel@arm.linux.org.uk,
	ulf.hansson@stericsson.com, linus.walleij@linaro.org,
	linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org,
	aletes.xgr@gmail.com, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] gpio: of_get_named_gpio_flags() return -EPROBE_DEFER if GPIO not yet available
Date: Mon, 18 Jun 2012 11:19:15 +0200	[thread overview]
Message-ID: <4FDEF293.9080305@antcom.de> (raw)
In-Reply-To: <4FDE8D27.6030508@wwwdotorg.org>

On 06/18/2012 04:06 AM, Stephen Warren wrote:
> On 06/17/2012 04:11 AM, Roland Stigge wrote:
>> of_get_named_gpio_flags() and of_get_named_gpio() return -EPROBE_DEFER if the
>> respective GPIO is not (yet) available. This is useful if driver's probe()
>> functions try to get a GPIO whose controller isn't probed yet. Thus, the driver
>> can be probed again later on.
>>
>> The function still returns -EINVAL on other errors (parse error or node doesn't
>> exist). This way, the case of an optional/intentionally missing GPIO is handled
>> appropriately.
> 
> While I agree this is a correct change, it is going to break some
> existing code - at least sound/soc/tegra/tegra_{wm8903.c,alc5632.c}.

Can you please tell in which way the patch breaks those drivers?
However, I can see that those drivers solved the same problem in a
different way (deferring of_get_named_gpio(), via the sound init()). So
they could be adjusted to take advantage of new -EPROBE_DEFER.

> I'm
> happy to send patches for those files though (is this going into 3.5 or
> 3.6?).

For 3.6 would be best, IMO.

> However, have you audited all existing callers (including
> indirect, e.g. through plain of_get_named_gpio()) for issues this will
> cause?

Thanks for the hint, I searched the code and found

drivers/spi/spi-pl022.c

to be using -ENODEV as indication to return -EPROBE_DEFER from probe().
Will send a patch that adjusts to our of_get_named_gpio_flags() patch
and if it's good, we should join the two.

Some drivers possibly suffer from the same issue that the patch adresses:

drivers/mfd/twl6040-core.c
drivers/staging/nvec/nvec.c
drivers/usb/host/ohci-at91.c
drivers/usb/host/ehci-tegra.c
drivers/usb/gadget/at91_udc.c
drivers/spi/spi-imx.c
drivers/spi/spi-sirf.c
drivers/mmc/host/sdhci-tegra.c
drivers/mmc/host/omap_hsmmc.c
drivers/mmc/host/mxs-mmc.c
drivers/mmc/host/sdhci-esdhc-imx.c
drivers/regulator/tps62360-regulator.c
drivers/regulator/fixed.c

But the breakage therefore exists even before the patch.

Other drivers don't handle the result of of_get_named_gpio*() correctly
at all:

drivers/power/sbs-battery.c

I can help the respective maintainers to work out this issue when we
have the EPROBE_DEFER ready in gpiolib-of.c.

Thanks,

Roland

WARNING: multiple messages have this Message-ID (diff)
From: stigge@antcom.de (Roland Stigge)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] gpio: of_get_named_gpio_flags() return -EPROBE_DEFER if GPIO not yet available
Date: Mon, 18 Jun 2012 11:19:15 +0200	[thread overview]
Message-ID: <4FDEF293.9080305@antcom.de> (raw)
In-Reply-To: <4FDE8D27.6030508@wwwdotorg.org>

On 06/18/2012 04:06 AM, Stephen Warren wrote:
> On 06/17/2012 04:11 AM, Roland Stigge wrote:
>> of_get_named_gpio_flags() and of_get_named_gpio() return -EPROBE_DEFER if the
>> respective GPIO is not (yet) available. This is useful if driver's probe()
>> functions try to get a GPIO whose controller isn't probed yet. Thus, the driver
>> can be probed again later on.
>>
>> The function still returns -EINVAL on other errors (parse error or node doesn't
>> exist). This way, the case of an optional/intentionally missing GPIO is handled
>> appropriately.
> 
> While I agree this is a correct change, it is going to break some
> existing code - at least sound/soc/tegra/tegra_{wm8903.c,alc5632.c}.

Can you please tell in which way the patch breaks those drivers?
However, I can see that those drivers solved the same problem in a
different way (deferring of_get_named_gpio(), via the sound init()). So
they could be adjusted to take advantage of new -EPROBE_DEFER.

> I'm
> happy to send patches for those files though (is this going into 3.5 or
> 3.6?).

For 3.6 would be best, IMO.

> However, have you audited all existing callers (including
> indirect, e.g. through plain of_get_named_gpio()) for issues this will
> cause?

Thanks for the hint, I searched the code and found

drivers/spi/spi-pl022.c

to be using -ENODEV as indication to return -EPROBE_DEFER from probe().
Will send a patch that adjusts to our of_get_named_gpio_flags() patch
and if it's good, we should join the two.

Some drivers possibly suffer from the same issue that the patch adresses:

drivers/mfd/twl6040-core.c
drivers/staging/nvec/nvec.c
drivers/usb/host/ohci-at91.c
drivers/usb/host/ehci-tegra.c
drivers/usb/gadget/at91_udc.c
drivers/spi/spi-imx.c
drivers/spi/spi-sirf.c
drivers/mmc/host/sdhci-tegra.c
drivers/mmc/host/omap_hsmmc.c
drivers/mmc/host/mxs-mmc.c
drivers/mmc/host/sdhci-esdhc-imx.c
drivers/regulator/tps62360-regulator.c
drivers/regulator/fixed.c

But the breakage therefore exists even before the patch.

Other drivers don't handle the result of of_get_named_gpio*() correctly
at all:

drivers/power/sbs-battery.c

I can help the respective maintainers to work out this issue when we
have the EPROBE_DEFER ready in gpiolib-of.c.

Thanks,

Roland

  reply	other threads:[~2012-06-18  9:19 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-17 10:11 [PATCH] gpio: of_get_named_gpio_flags() return -EPROBE_DEFER if GPIO not yet available Roland Stigge
2012-06-17 10:11 ` Roland Stigge
2012-06-17 10:11 ` [PATCH v3 1/2] mmc: mmci.c: Defer probe() in case of yet uninitialized GPIOs Roland Stigge
2012-06-17 10:11   ` Roland Stigge
2012-06-17 16:21   ` Russell King - ARM Linux
2012-06-17 16:21     ` Russell King - ARM Linux
2012-06-17 18:01   ` Linus Walleij
2012-06-17 18:01     ` Linus Walleij
2012-06-17 10:11 ` [PATCH v3 2/2] mmc: mmci.c: Remove wrong error handling of gpio 0 Roland Stigge
2012-06-17 10:11   ` Roland Stigge
2012-06-17 18:06   ` Linus Walleij
2012-06-17 18:06     ` Linus Walleij
2012-06-17 18:04 ` [PATCH] gpio: of_get_named_gpio_flags() return -EPROBE_DEFER if GPIO not yet available Linus Walleij
2012-06-17 18:04   ` Linus Walleij
2012-06-18  2:06 ` Stephen Warren
2012-06-18  2:06   ` Stephen Warren
2012-06-18  2:06   ` Stephen Warren
2012-06-18  9:19   ` Roland Stigge [this message]
2012-06-18  9:19     ` Roland Stigge
2012-06-18 11:24     ` Roland Stigge
2012-06-18 11:24       ` Roland Stigge
2012-06-18 14:50     ` Stephen Warren
2012-06-18 14:50       ` Stephen Warren
2012-06-18 15:08       ` Roland Stigge
2012-06-18 15:08         ` Roland Stigge
2012-06-18 15:12         ` Stephen Warren
2012-06-18 15:12           ` Stephen Warren
2012-06-18 15:23           ` Roland Stigge
2012-06-18 15:23             ` Roland Stigge
2012-06-18 15:45             ` Stephen Warren
2012-06-18 15:45               ` Stephen Warren
2012-06-18 16:40               ` Roland Stigge
2012-06-18 16:40                 ` Roland Stigge

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4FDEF293.9080305@antcom.de \
    --to=stigge@antcom.de \
    --cc=aletes.xgr@gmail.com \
    --cc=cjb@laptop.org \
    --cc=grant.likely@secretlab.ca \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=rmk+kernel@arm.linux.org.uk \
    --cc=rob.herring@calxeda.com \
    --cc=swarren@wwwdotorg.org \
    --cc=ulf.hansson@stericsson.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.