Subject: Re: linux-next: build failure after merge of the gpio tree

From: Chanwoo Choi <[email-masked]>
Date: Thu, 13 Aug 2015 09:19:12 +0900

Hi Stephen,

On 08/13/2015 08:02 AM, Stephen Rothwell wrote:
> Hi Uwe,
> 
> On Wed, 12 Aug 2015 22:16:42 +0200 Uwe Kleine-König <[email-masked]> wrote:
>>
>> On Wed, Aug 12, 2015 at 06:10:45PM +1000, Stephen Rothwell wrote:
>>> After merging the gpio tree, today's linux-next build (powerpc
>>> allyesconfig) failed like this:
>>>
>>> drivers/extcon/extcon-palmas.c:211:25: error: too few arguments to function 'devm_gpiod_get_optional'
>>>   palmas_usb->id_gpiod = devm_gpiod_get_optional(&pdev->dev, "id");
>>>                          ^
>>> In file included from /home/sfr/next/next/include/asm-generic/gpio.h:13:0,
>>>                  from /home/sfr/next/next/include/linux/gpio.h:51,
>>>                  from /home/sfr/next/next/include/linux/of_gpio.h:20,
>>>                  from /home/sfr/next/next/include/linux/mfd/palmas.h:24,
>>>                  from /home/sfr/next/next/drivers/extcon/extcon-palmas.c:28:
>>> /home/sfr/next/next/include/linux/gpio/consumer.h:80:32: note: declared here
>>>  struct gpio_desc *__must_check devm_gpiod_get_optional(struct device *dev,
>>>                                 ^
>>>
>>> Caused by commit
>>>
>>>   b17d1bf16cc7 ("gpio: make flags mandatory for gpiod_get functions")
>>>
>>> interacting with commit
>>>
>>>   92b7cb5dc885 ("extcon: palmas: Support GPIO based USB ID detection")
>> that commit is not correct. After
>>
>> 	palmas_usb->id_gpiod = devm_gpiod_get_optional(&pdev->dev, "id");
>>
>> it does
>>
>> 	palmas_usb->gpio_id_irq = gpiod_to_irq(palmas_usb->id_gpiod);
>>
>> without setting the gpio to input. So the right fix is not to add
>> GPIOD_ASIS but GPIOD_IN.
> 
> OK, I have fixed my merge fix patch, but can you submit a correct patch
> to the extcon tree maintainer, please?  I assume it can be fixed in
> that tree right now, right?
> 

I'll fix it as Uwe comment as following:

--- a/drivers/extcon/extcon-palmas.c
+++ b/drivers/extcon/extcon-palmas.c
@@ -208,7 +208,8 @@ static int palmas_usb_probe(struct platform_device *pdev)
                        palmas_usb->wakeup = pdata->wakeup;
        }
 
-       palmas_usb->id_gpiod = devm_gpiod_get_optional(&pdev->dev, "id");
+       palmas_usb->id_gpiod =
+               devm_gpiod_get_optional(&pdev->dev, "id", GPIOD_IN);
        if (IS_ERR(palmas_usb->id_gpiod)) {
                dev_err(&pdev->dev, "failed to get id gpio\n");
                return PTR_ERR(palmas_usb->id_gpiod);

I'll send it to LKML and apply it on extcon-next tree.

Thanks,
Chanwoo Choi