On Thu, Sep 25, 2014 at 11:47 AM,  <robert.jarz...@free.fr> wrote:
> De: "Linus Walleij" <linus.wall...@linaro.org>
>> @@ -2415,7 +2411,13 @@ static int pxa_udc_probe(struct platform_device *pdev)
>>  {
>>         struct resource *regs;
>>         struct pxa_udc *udc = &memory;
>> -       int retval = 0, gpio;
>> +       struct pxa2xx_udc_mach_info *mach = dev_get_platdata(&pdev->dev);
>> +       int retval = 0;
>> +
>> +       if (mach) {
>> +               udc->gpiod = gpio_to_desc(mach->gpio_pullup);
>> +               udc->mach = mach;
>> +       }
>
>> } else {
>>     udv->gpiod = devm_gpiod_get(&pdev->dev, ...);
>> }
>> Here you can also use the flags.
>
> Yeah, but my problem is in the if statement, not in the else. The else is for
> the DT/ACPI cases, in which there is no problem.

In that case, that whole clause is actually using the old API without
explicit request, so you can just do this:

if (mach) {
              /* This clause will go away when we have transitioned to
just using descriptors */
              if (devm_gpio_request_one(&pdev->dev, mach->gpio_pullup,
                                        mach->gpio_pullup_inverted ?
GPIOF_ACTIVE_LOW : 0,
"my pin"))
                  goto err;
              udc->gpiod = gpio_to_desc(mach->gpio_pullup);
              udc->mach = mach;
} else {
...
}

> On the other hand, the "if" is for the legacy platform_data cases which 
> bother me.
> The mach info contains :
>  - gpio_pullup : number of the gpio
>  - gpio_pullup_inverted : the active low state
>
> What I would have needed would be something like :
> if (mach) {
>         udc->gpiod = gpio_to_desc(mach->gpio_pullup);
>         gpiod_MAGIC_FUNC_set_flags(udc->gpiod, mach->gpio_pullup_inverted ? 
> ACTIVE_LOW : 0);
>         udc->mach = mach;
> } else {
>     udv->gpiod = devm_gpiod_get(&pdev->dev, ...);
> }
>
> The "MAGIC_FUNC" is what I'm missing here. And I agree this is something that 
> is bound in
> electronics, and eventually will have to be shifted to platform code. The 
> porting issue I
> have is that I don't want the dependency of changing *all* pxa27x machines as 
> a dependency
> for a patch to pxa27x_udc to support device-tree.
> Or alternatively have something like :
>         udc->gpiod = gpio_to_desc_with_flags(mach->gpio_pullup, flags).
> Or another way, to enable a smooth transition without the dependency.
>
> Even I have not found any machine code using this inverted flag, I might have 
> overlooked
> something, and I'm not feeling confortable killing a platform because I made 
> a wrong
> decision.
>
> Cheers.
>
> --
> Robert
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to