Subject: [RFC PATCH v2 1/4] tty: serial_mctrl_gpio: Add irqs helpers for input lines

From: [email-masked] (Janusz Użycki)
Date: Tue, 13 Jan 2015 15:33:47 +0100

W dniu 2015-01-13 o 15:30, Richard Genoud pisze:
> 2015-01-13 14:52 GMT+01:00 Janusz U?ycki <[email-masked]>:
>> W dniu 2015-01-13 o 14:04, Richard Genoud pisze:
>>
>>> 2015-01-10 15:32 GMT+01:00 Janusz Uzycki <[email-masked]>:
>>>> diff --git a/drivers/tty/serial/serial_mctrl_gpio.h
>>>> b/drivers/tty/serial/serial_mctrl_gpio.h
>>>> index 400ba04..13ba3f4 100644
>>>> --- a/drivers/tty/serial/serial_mctrl_gpio.h
>>>> +++ b/drivers/tty/serial/serial_mctrl_gpio.h
>>>> @@ -21,6 +21,7 @@
>>>>    #include <linux/err.h>
>>>>    #include <linux/device.h>
>>>>    #include <linux/gpio/consumer.h>
>>>> +#include <linux/serial_core.h>
>>>>
>>>>    enum mctrl_gpio_idx {
>>>>           UART_GPIO_CTS,
>>>> @@ -40,6 +41,13 @@ enum mctrl_gpio_idx {
>>>>     */
>>>>    struct mctrl_gpios;
>>>>
>>>> +/*
>>>> + * Return true if gidx is GPIO line, otherwise false.
>>>> + * It assumes that gpios is allocated and not NULL.
>>>> + */
>>>> +inline
>>>> +bool mctrl_gpio_is_gpio(struct mctrl_gpios *gpios, enum mctrl_gpio_idx
>>>> gidx);
>>>> +
>>> This leads to a compile error :
>>>     CC      drivers/tty/serial/atmel_serial.o
>>> In file included from drivers/tty/serial/atmel_serial.c:64:0:
>>> drivers/tty/serial/atmel_serial.c: In function 'atmel_disable_ms.part.22':
>>> drivers/tty/serial/serial_mctrl_gpio.h:49:6: error: inlining failed in
>>> call to always_inline 'mctrl_gpio_is_gpio': function body not
>>> available
>>> drivers/tty/serial/atmel_serial.c:536:25: error: called from here
>>> In file included from drivers/tty/serial/atmel_serial.c:64:0:
>>> drivers/tty/serial/serial_mctrl_gpio.h:49:6: error: inlining failed in
>>> call to always_inline 'mctrl_gpio_is_gpio': function body not
>>> available
>>> drivers/tty/serial/atmel_serial.c:539:25: error: called from here
>>> In file included from drivers/tty/serial/atmel_serial.c:64:0:
>>> drivers/tty/serial/serial_mctrl_gpio.h:49:6: error: inlining failed in
>>> call to always_inline 'mctrl_gpio_is_gpio': function body not
>>> available
>>> drivers/tty/serial/atmel_serial.c:542:25: error: called from here
>>> In file included from drivers/tty/serial/atmel_serial.c:64:0:
>>> drivers/tty/serial/serial_mctrl_gpio.h:49:6: error: inlining failed in
>>> call to always_inline 'mctrl_gpio_is_gpio': function body not
>>> available
>>> drivers/tty/serial/atmel_serial.c:545:25: error: called from here
>>> In file included from drivers/tty/serial/atmel_serial.c:64:0:
>>> drivers/tty/serial/atmel_serial.c: In function 'atmel_enable_ms':
>>> drivers/tty/serial/serial_mctrl_gpio.h:49:6: error: inlining failed in
>>> call to always_inline 'mctrl_gpio_is_gpio': function body not
>>> available
>>> drivers/tty/serial/atmel_serial.c:503:25: error: called from here
>>> In file included from drivers/tty/serial/atmel_serial.c:64:0:
>>> drivers/tty/serial/serial_mctrl_gpio.h:49:6: error: inlining failed in
>>> call to always_inline 'mctrl_gpio_is_gpio': function body not
>>> available
>>> drivers/tty/serial/atmel_serial.c:506:25: error: called from here
>>> In file included from drivers/tty/serial/atmel_serial.c:64:0:
>>> drivers/tty/serial/serial_mctrl_gpio.h:49:6: error: inlining failed in
>>> call to always_inline 'mctrl_gpio_is_gpio': function body not
>>> available
>>> drivers/tty/serial/atmel_serial.c:509:25: error: called from here
>>> In file included from drivers/tty/serial/atmel_serial.c:64:0:
>>> drivers/tty/serial/serial_mctrl_gpio.h:49:6: error: inlining failed in
>>> call to always_inline 'mctrl_gpio_is_gpio': function body not
>>> available
>>> drivers/tty/serial/atmel_serial.c:512:25: error: called from here
>>> make[3]: *** [drivers/tty/serial/atmel_serial.o] Error 1
>>> make[2]: *** [drivers/tty/serial] Error 2
>>> make[1]: *** [drivers/tty] Error 2
>>> make: *** [drivers] Error 2
>>
>> Do you compile atmel_serial as module? I compiled built-in and it was fine
>> for me.
>> So the function should be exported like mctrl_gpio_to_gpiod() I guess.
>> An other reason can be you have CONFIG_GPIOLIB=n ?
>> In fact, mctrl_gpio_is_gpio() should depend on CONFIG_GPIOLIB for empty
>> body.
>>
> well, I'm also compiling it built-in (I even have config_module=N)

You have no CONFIG_GPIOLIB enabled and it is the bug in the patchset.
Thanks.
Janusz

> kernel is 3.19-rc3 with your patches ontop.
> I attached my .config (saved as a defconfig)
>
> arm-linux-gcc (GCC) 4.7.3