Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1354895

Re: [PATCH 3/5] gpio: of: Return error if gpio hog configuration failed

From Laxman Dewangan <ldewangan@nvidia.com>
Newsgroups linux.kernel
Subject Re: [PATCH 3/5] gpio: of: Return error if gpio hog configuration failed
Date 2016-03-10 08:20 +0100
Message-ID <rb334-3w5-23@gated-at.bofh.it> (permalink)
References <raoMi-Hp-7@gated-at.bofh.it> <raoMj-Hp-25@gated-at.bofh.it> <raPWb-2G3-29@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


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);

Back to linux.kernel | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

[PATCH 0/5] gpio: of: Add error handling and support for multiple gpio in gpio-hog Laxman Dewangan <ldewangan@nvidia.com> - 2016-03-08 13:20 +0100
  [PATCH 3/5] gpio: of: Return error if gpio hog configuration failed Laxman Dewangan <ldewangan@nvidia.com> - 2016-03-08 13:20 +0100
    Re: [PATCH 3/5] gpio: of: Return error if gpio hog configuration  failed Thierry Reding <treding@nvidia.com> - 2016-03-08 15:30 +0100
    Re: [PATCH 3/5] gpio: of: Return error if gpio hog configuration  failed Stephen Warren <swarren@wwwdotorg.org> - 2016-03-09 18:20 +0100
      Re: [PATCH 3/5] gpio: of: Return error if gpio hog configuration  failed Laxman Dewangan <ldewangan@nvidia.com> - 2016-03-10 08:20 +0100

csiph-web