From: Laxman Dewangan <ldewangan@nvidia.com>
To: Stephen Warren <swarren@wwwdotorg.org>
Cc: linus.walleij@linaro.org, robh+dt@kernel.org, pawel.moll@arm.com,
mark.rutland@arm.com, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org,
treding@nvidia.com, Benoit Parrot <bparrot@ti.com>,
Alexandre Courbot <acourbot@nvidia.com>
Subject: Re: [PATCH 3/5] gpio: of: Return error if gpio hog configuration failed
Date: Thu, 10 Mar 2016 12:32:22 +0530 [thread overview]
Message-ID: <56E11BFE.3040906@nvidia.com> (raw)
In-Reply-To: <56E05930.4080805@wwwdotorg.org>
On Wednesday 09 March 2016 10:41 PM, Stephen Warren wrote:
> On 03/08/2016 05:02 AM, Laxman Dewangan wrote:
>> If GPIO hog configuration failed while adding OF based
>> gpiochip() then return the error instead of ignoring it.
>>
>> This helps of properly handling the gpio driver dependency.
>>
>> When adding the gpio hog nodes for NVIDIA's Tegra210 platforms,
>> the gpio_hogd() fails with EPROBE_DEFER because pinctrl is not
>> ready at this time and gpio_request() for Tegra GPIO driver
>> returns error. The error was not causing the Tegra GPIO driver
>> to fail as the error was getting ignored.
>
>> diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c
>
>> @@ -218,9 +220,12 @@ static void of_gpiochip_scan_gpios(struct
>> gpio_chip *chip)
>> if (IS_ERR(desc))
>> continue;
>>
>> - if (gpiod_hog(desc, name, lflags, dflags))
>> - continue;
>> + ret = gpiod_hog(desc, name, lflags, dflags);
>> + if (ret < 0)
>> + return ret;
>> }
>> +
>> + return 0;
>> }
>
> If there are multiple child nodes (which the code above is looping
> over), and the hog for entries 0, 1, 2 succeed and the hog for entry 3
> fails, don't you need to go back and unhog for nodes 0..2 so that the
> next time this function is called, those hogs won't already be in
> place thus preventing them from being hogged the second time around?
> Or does hogging not take ownership of the resource and thus prevent it
> from being acquired again?
The gpiolib take care per the error handling:
status = of_gpiochip_add(chip);
if (status)
goto err_remove_chip;
:::
err_remove_chip:
acpi_gpiochip_remove(chip);
gpiochip_free_hogs(chip);
of_gpiochip_remove(chip);
WARNING: multiple messages have this Message-ID (diff)
From: Laxman Dewangan <ldewangan@nvidia.com>
To: Stephen Warren <swarren@wwwdotorg.org>
Cc: <linus.walleij@linaro.org>, <robh+dt@kernel.org>,
<pawel.moll@arm.com>, <mark.rutland@arm.com>,
<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<linux-gpio@vger.kernel.org>, <treding@nvidia.com>,
Benoit Parrot <bparrot@ti.com>,
Alexandre Courbot <acourbot@nvidia.com>
Subject: Re: [PATCH 3/5] gpio: of: Return error if gpio hog configuration failed
Date: Thu, 10 Mar 2016 12:32:22 +0530 [thread overview]
Message-ID: <56E11BFE.3040906@nvidia.com> (raw)
In-Reply-To: <56E05930.4080805@wwwdotorg.org>
On Wednesday 09 March 2016 10:41 PM, Stephen Warren wrote:
> On 03/08/2016 05:02 AM, Laxman Dewangan wrote:
>> If GPIO hog configuration failed while adding OF based
>> gpiochip() then return the error instead of ignoring it.
>>
>> This helps of properly handling the gpio driver dependency.
>>
>> When adding the gpio hog nodes for NVIDIA's Tegra210 platforms,
>> the gpio_hogd() fails with EPROBE_DEFER because pinctrl is not
>> ready at this time and gpio_request() for Tegra GPIO driver
>> returns error. The error was not causing the Tegra GPIO driver
>> to fail as the error was getting ignored.
>
>> diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c
>
>> @@ -218,9 +220,12 @@ static void of_gpiochip_scan_gpios(struct
>> gpio_chip *chip)
>> if (IS_ERR(desc))
>> continue;
>>
>> - if (gpiod_hog(desc, name, lflags, dflags))
>> - continue;
>> + ret = gpiod_hog(desc, name, lflags, dflags);
>> + if (ret < 0)
>> + return ret;
>> }
>> +
>> + return 0;
>> }
>
> If there are multiple child nodes (which the code above is looping
> over), and the hog for entries 0, 1, 2 succeed and the hog for entry 3
> fails, don't you need to go back and unhog for nodes 0..2 so that the
> next time this function is called, those hogs won't already be in
> place thus preventing them from being hogged the second time around?
> Or does hogging not take ownership of the resource and thus prevent it
> from being acquired again?
The gpiolib take care per the error handling:
status = of_gpiochip_add(chip);
if (status)
goto err_remove_chip;
:::
err_remove_chip:
acpi_gpiochip_remove(chip);
gpiochip_free_hogs(chip);
of_gpiochip_remove(chip);
next prev parent reply other threads:[~2016-03-10 7:15 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-08 12:02 [PATCH 0/5] gpio: of: Add error handling and support for multiple gpio in gpio-hog Laxman Dewangan
2016-03-08 12:02 ` Laxman Dewangan
2016-03-08 12:02 ` [PATCH 1/5] gpio: of: Scan available child node for gpio-hog Laxman Dewangan
2016-03-08 12:02 ` Laxman Dewangan
2016-03-08 14:18 ` Thierry Reding
2016-03-08 14:18 ` Thierry Reding
2016-03-08 12:02 ` [PATCH 2/5] gpio: gpiolib: Print error number if gpio hog failed Laxman Dewangan
2016-03-08 12:02 ` Laxman Dewangan
2016-03-08 12:27 ` Vladimir Zapolskiy
2016-03-08 12:27 ` Vladimir Zapolskiy
2016-03-08 14:22 ` Thierry Reding
2016-03-08 14:22 ` Thierry Reding
2016-03-08 15:32 ` Laxman Dewangan
2016-03-08 15:32 ` Laxman Dewangan
2016-03-09 17:07 ` Stephen Warren
[not found] ` <56E0584B.9050607-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2016-03-10 6:58 ` Laxman Dewangan
2016-03-10 6:58 ` Laxman Dewangan
2016-03-08 12:02 ` [PATCH 3/5] gpio: of: Return error if gpio hog configuration failed Laxman Dewangan
2016-03-08 12:02 ` Laxman Dewangan
2016-03-08 14:23 ` Thierry Reding
2016-03-08 14:23 ` Thierry Reding
2016-03-09 17:11 ` Stephen Warren
2016-03-10 7:02 ` Laxman Dewangan [this message]
2016-03-10 7:02 ` Laxman Dewangan
2016-03-08 12:02 ` [PATCH 4/5] gpio: of: Add support to have multiple gpios in gpio-hog Laxman Dewangan
2016-03-08 12:02 ` Laxman Dewangan
2016-03-09 6:28 ` Markus Pargmann
2016-03-09 13:20 ` Laxman Dewangan
2016-03-09 13:20 ` Laxman Dewangan
[not found] ` <56E02335.6020901-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-03-09 17:17 ` Stephen Warren
2016-03-09 17:17 ` Stephen Warren
[not found] ` <56E05AA9.8000503-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2016-03-10 7:07 ` Laxman Dewangan
2016-03-10 7:07 ` Laxman Dewangan
2016-03-10 11:16 ` Markus Pargmann
2016-03-10 11:53 ` Laxman Dewangan
2016-03-10 11:53 ` Laxman Dewangan
2016-03-17 15:46 ` Rob Herring
2016-03-17 17:44 ` Laxman Dewangan
2016-03-17 17:44 ` Laxman Dewangan
2016-03-08 12:02 ` [PATCH 5/5] gpio: DT: Rephrase property "gpios" of hog node to support multiple gpios Laxman Dewangan
2016-03-08 12:02 ` Laxman Dewangan
2016-03-09 17:18 ` Stephen Warren
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=56E11BFE.3040906@nvidia.com \
--to=ldewangan@nvidia.com \
--cc=acourbot@nvidia.com \
--cc=bparrot@ti.com \
--cc=devicetree@vger.kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=pawel.moll@arm.com \
--cc=robh+dt@kernel.org \
--cc=swarren@wwwdotorg.org \
--cc=treding@nvidia.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.