Re: [PATCH 1/3] gpio - Add EXAR XRA1403 SPI GPIO expander driver

From: Linus Walleij
Date: Fri Apr 07 2017 - 06:07:49 EST


On Wed, Apr 5, 2017 at 3:24 PM, Han, Nandor (GE Healthcare)
<nandor.han@xxxxxx> wrote:
> [Me]
>> > + /* bring the chip out of reset */
>> > + reset_gpio = gpiod_get_optional(&spi->dev, "reset", GPIOD_OUT_LOW);
>> > + if (IS_ERR(reset_gpio))
>> > + dev_warn(&spi->dev, "could not get reset-gpios\n");
>> > + else if (reset_gpio)
>> > + gpiod_put(reset_gpio);
>>
>> I don't think you should put it, other than in the remove()
>> function and in that case you need to have it in the
>> state container.
>
> Can you please be more explicit here.
>
> Currently I'm trying to bring the device out from reset in case reset GPIO is provided.
> I don't see how this could be done in remove() :)

If you issue gpiod_put() you release the GPIO hande so something else
can go in and grab the GPIO and assert the reset.

This is not what you want to make possible: you want to hold this gpiod handle
as long as the driver is running. devm_gpiod_get_optional() will do the
trick if you don't want to put the handle under explicit control.

Yours,
Linus Walleij