Re: [PATCH v2 1/3] usb: phy: generic: migrate to gpio_desc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Linus ?

On Wed, Jan 28, 2015 at 07:54:44PM +0100, Robert Jarzmik wrote:
> Felipe Balbi <balbi@xxxxxx> writes:
> 
> >>         nop->gpiod_reset = devm_gpiod_get_optional(dev, "reset");
> >>         if (gpiod_is_active_low(nop->gpiod_reset))
> >>             gpiod_direction_output(nop->gpiod_reset, GPIOD_OUT_LOW);
> >>         else
> >>             gpiod_direction_output(nop->gpiod_reset, GPIOD_OUT_HIGH);
> >
> > won't the descriptor itself handle that for us ? Linus ?
> >
> > I want to hear from Linus W first.
> 
> Yes, so do I.
> 
> Let's add a bit of context for Linus :
>  1) In the past, the driver was doing a ;
>     gpio_request_one()
>       -> gpiod_direction_output_raw()
>  2) After the conversion to gpio descriptors, it is doing :
>     gpiod_get_optional(dev, "reset");
>       -> ...
>         -> __gpiod_get_index(dev, "reset", 0, 0)
>           -> this of course doesn't call gpiod_direction()
> 
> The problem is that we cannot call:
>   gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
> because we don't know before the call if the GPIO is active high or low. The
> former gpio_request_one() was clever and did a gpio_direction_output_raw(..,
> (flags & GPIOF_INIT_HIGH) ? 1 : 0).
> 
> So what is the right way out ? :
>  - is it to call gpiod_direction_output(nop->gpiod, 0) just after
>    gpiod_get_optional() in probe code ?
>  - is it when the gpio is used to call gpiod_direction_output(gpiod, x) instead
>    of gpiod_set_value() ?
>  - is it something else ?
> 
> Cheers.
> 
> -- 
> Robert

-- 
balbi

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux