gpio: xgene: Fix kconfig for standby GIPO contoller
diff mbox

Message ID 1457091732-21924-1-git-send-email-mbrugger@suse.com
State New
Headers show

Commit Message

Matthias Brugger March 4, 2016, 11:42 a.m. UTC
The standby GPIO controller can be used as a interrupt controller.
Select GPIOLIB_IRQCHIP when compiling this driver. Otherwise we get
a compilation error:

drivers/gpio/gpio-xgene-sb.c: In function 'xgene_gpio_sb_probe':
drivers/gpio/gpio-xgene-sb.c:312:10: error: 'struct gpio_chip' has no member named 'irqdomain'
  priv->gc.irqdomain = priv->irq_domain;
          ^
scripts/Makefile.build:295: recipe for target 'drivers/gpio/gpio-xgene-sb.o' failed
make[2]: *** [drivers/gpio/gpio-xgene-sb.o] Error 1

Apart if compiled as module, we get the following modpost errors:
ERROR: "irq_chip_eoi_parent" [drivers/gpio/gpio-xgene-sb.ko] undefined!
ERROR: "irq_chip_unmask_parent" [drivers/gpio/gpio-xgene-sb.ko] undefined!
ERROR: "irq_chip_mask_parent" [drivers/gpio/gpio-xgene-sb.ko] undefined!
ERROR: "irq_domain_create_hierarchy" [drivers/gpio/gpio-xgene-sb.ko] undefined!
ERROR: "gpiochip_get_data" [drivers/gpio/gpio-xgene-sb.ko] undefined!
ERROR: "irq_chip_set_type_parent" [drivers/gpio/gpio-xgene-sb.ko] undefined!
ERROR: "irq_domain_alloc_irqs_parent" [drivers/gpio/gpio-xgene-sb.ko] undefined!
ERROR: "irq_domain_set_hwirq_and_chip" [drivers/gpio/gpio-xgene-sb.ko] undefined!
ERROR: "irq_domain_reset_irq_data" [drivers/gpio/gpio-xgene-sb.ko] undefined!

This patch changes the kconfig so that the gpio controller can only be
build-in and selects GPIOLIB_IRQCHIP.

Fixes: 1013fc41 "gpio: xgene: Enable X-Gene standby GPIO as interrupt controller"
Cc: Quan Nguyen <qnguyen@apm.com>
Signed-off-by: Matthias Brugger <mbrugger@suse.com>
---

Changes for v2:
- Add modprobe fix, changing tristate to bool
- Add Cc tag

 drivers/gpio/Kconfig | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Linus Walleij March 7, 2016, 7:41 a.m. UTC | #1
On Fri, Mar 4, 2016 at 6:42 PM, Matthias Brugger <mbrugger@suse.com> wrote:

> The standby GPIO controller can be used as a interrupt controller.
> Select GPIOLIB_IRQCHIP when compiling this driver. Otherwise we get
> a compilation error:
>
> drivers/gpio/gpio-xgene-sb.c: In function 'xgene_gpio_sb_probe':
> drivers/gpio/gpio-xgene-sb.c:312:10: error: 'struct gpio_chip' has no member named 'irqdomain'
>   priv->gc.irqdomain = priv->irq_domain;
>           ^
> scripts/Makefile.build:295: recipe for target 'drivers/gpio/gpio-xgene-sb.o' failed
> make[2]: *** [drivers/gpio/gpio-xgene-sb.o] Error 1
>
> Apart if compiled as module, we get the following modpost errors:
> ERROR: "irq_chip_eoi_parent" [drivers/gpio/gpio-xgene-sb.ko] undefined!
> ERROR: "irq_chip_unmask_parent" [drivers/gpio/gpio-xgene-sb.ko] undefined!
> ERROR: "irq_chip_mask_parent" [drivers/gpio/gpio-xgene-sb.ko] undefined!
> ERROR: "irq_domain_create_hierarchy" [drivers/gpio/gpio-xgene-sb.ko] undefined!
> ERROR: "gpiochip_get_data" [drivers/gpio/gpio-xgene-sb.ko] undefined!
> ERROR: "irq_chip_set_type_parent" [drivers/gpio/gpio-xgene-sb.ko] undefined!
> ERROR: "irq_domain_alloc_irqs_parent" [drivers/gpio/gpio-xgene-sb.ko] undefined!
> ERROR: "irq_domain_set_hwirq_and_chip" [drivers/gpio/gpio-xgene-sb.ko] undefined!
> ERROR: "irq_domain_reset_irq_data" [drivers/gpio/gpio-xgene-sb.ko] undefined!
>
> This patch changes the kconfig so that the gpio controller can only be
> build-in and selects GPIOLIB_IRQCHIP.
>
> Fixes: 1013fc41 "gpio: xgene: Enable X-Gene standby GPIO as interrupt controller"
> Cc: Quan Nguyen <qnguyen@apm.com>
> Signed-off-by: Matthias Brugger <mbrugger@suse.com>
> ---
>
> Changes for v2:
> - Add modprobe fix, changing tristate to bool
> - Add Cc tag

Quan has sent a patch exporting the offending functions, but no reply from
the irqchip maintainers yet.

If they don't react we'll have to merge this and handle the module loading
later.

Yours,
Linus Walleij
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Matthias Brugger March 7, 2016, 10:47 a.m. UTC | #2
On 07/03/16 08:41, Linus Walleij wrote:
> On Fri, Mar 4, 2016 at 6:42 PM, Matthias Brugger <mbrugger@suse.com> wrote:
>
>> The standby GPIO controller can be used as a interrupt controller.
>> Select GPIOLIB_IRQCHIP when compiling this driver. Otherwise we get
>> a compilation error:
>>
>> drivers/gpio/gpio-xgene-sb.c: In function 'xgene_gpio_sb_probe':
>> drivers/gpio/gpio-xgene-sb.c:312:10: error: 'struct gpio_chip' has no member named 'irqdomain'
>>    priv->gc.irqdomain = priv->irq_domain;
>>            ^
>> scripts/Makefile.build:295: recipe for target 'drivers/gpio/gpio-xgene-sb.o' failed
>> make[2]: *** [drivers/gpio/gpio-xgene-sb.o] Error 1
>>
>> Apart if compiled as module, we get the following modpost errors:
>> ERROR: "irq_chip_eoi_parent" [drivers/gpio/gpio-xgene-sb.ko] undefined!
>> ERROR: "irq_chip_unmask_parent" [drivers/gpio/gpio-xgene-sb.ko] undefined!
>> ERROR: "irq_chip_mask_parent" [drivers/gpio/gpio-xgene-sb.ko] undefined!
>> ERROR: "irq_domain_create_hierarchy" [drivers/gpio/gpio-xgene-sb.ko] undefined!
>> ERROR: "gpiochip_get_data" [drivers/gpio/gpio-xgene-sb.ko] undefined!
>> ERROR: "irq_chip_set_type_parent" [drivers/gpio/gpio-xgene-sb.ko] undefined!
>> ERROR: "irq_domain_alloc_irqs_parent" [drivers/gpio/gpio-xgene-sb.ko] undefined!
>> ERROR: "irq_domain_set_hwirq_and_chip" [drivers/gpio/gpio-xgene-sb.ko] undefined!
>> ERROR: "irq_domain_reset_irq_data" [drivers/gpio/gpio-xgene-sb.ko] undefined!
>>
>> This patch changes the kconfig so that the gpio controller can only be
>> build-in and selects GPIOLIB_IRQCHIP.
>>
>> Fixes: 1013fc41 "gpio: xgene: Enable X-Gene standby GPIO as interrupt controller"
>> Cc: Quan Nguyen <qnguyen@apm.com>
>> Signed-off-by: Matthias Brugger <mbrugger@suse.com>
>> ---
>>
>> Changes for v2:
>> - Add modprobe fix, changing tristate to bool
>> - Add Cc tag
>
> Quan has sent a patch exporting the offending functions, but no reply from
> the irqchip maintainers yet.
>
> If they don't react we'll have to merge this and handle the module loading
> later.
>

Thanks for the info.

Just as a heads up, this patch fix two problems. Apart from the missing 
exports for the irqchip functions, it selects GPIOLIB_IRQCHIP as 
otherwise the config may be broken.

Actually v1 of this patch just fixes this:
https://patchwork.kernel.org/patch/8502401/

Regards,
Matthias
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Quan Nguyen March 8, 2016, 4:43 a.m. UTC | #3
On Mon, Mar 7, 2016 at 5:47 PM, Matthias Brugger <mbrugger@suse.com> wrote:
>
>
> On 07/03/16 08:41, Linus Walleij wrote:
>>
>> On Fri, Mar 4, 2016 at 6:42 PM, Matthias Brugger <mbrugger@suse.com>
>> wrote:
>>
>>> The standby GPIO controller can be used as a interrupt controller.
>>> Select GPIOLIB_IRQCHIP when compiling this driver. Otherwise we get
>>> a compilation error:
>>>
>>> drivers/gpio/gpio-xgene-sb.c: In function 'xgene_gpio_sb_probe':
>>> drivers/gpio/gpio-xgene-sb.c:312:10: error: 'struct gpio_chip' has no
>>> member named 'irqdomain'
>>>    priv->gc.irqdomain = priv->irq_domain;
>>>            ^
>>> scripts/Makefile.build:295: recipe for target
>>> 'drivers/gpio/gpio-xgene-sb.o' failed
>>> make[2]: *** [drivers/gpio/gpio-xgene-sb.o] Error 1
>>>
>>> Apart if compiled as module, we get the following modpost errors:
>>> ERROR: "irq_chip_eoi_parent" [drivers/gpio/gpio-xgene-sb.ko] undefined!
>>> ERROR: "irq_chip_unmask_parent" [drivers/gpio/gpio-xgene-sb.ko]
>>> undefined!
>>> ERROR: "irq_chip_mask_parent" [drivers/gpio/gpio-xgene-sb.ko] undefined!
>>> ERROR: "irq_domain_create_hierarchy" [drivers/gpio/gpio-xgene-sb.ko]
>>> undefined!
>>> ERROR: "gpiochip_get_data" [drivers/gpio/gpio-xgene-sb.ko] undefined!
>>> ERROR: "irq_chip_set_type_parent" [drivers/gpio/gpio-xgene-sb.ko]
>>> undefined!
>>> ERROR: "irq_domain_alloc_irqs_parent" [drivers/gpio/gpio-xgene-sb.ko]
>>> undefined!
>>> ERROR: "irq_domain_set_hwirq_and_chip" [drivers/gpio/gpio-xgene-sb.ko]
>>> undefined!
>>> ERROR: "irq_domain_reset_irq_data" [drivers/gpio/gpio-xgene-sb.ko]
>>> undefined!
>>>
>>> This patch changes the kconfig so that the gpio controller can only be
>>> build-in and selects GPIOLIB_IRQCHIP.
>>>
>>> Fixes: 1013fc41 "gpio: xgene: Enable X-Gene standby GPIO as interrupt
>>> controller"
>>> Cc: Quan Nguyen <qnguyen@apm.com>
>>> Signed-off-by: Matthias Brugger <mbrugger@suse.com>
>>> ---
>>>
>>> Changes for v2:
>>> - Add modprobe fix, changing tristate to bool
>>> - Add Cc tag
>>
>>
>> Quan has sent a patch exporting the offending functions, but no reply from
>> the irqchip maintainers yet.
>>
>> If they don't react we'll have to merge this and handle the module loading
>> later.
>>
>
> Thanks for the info.
>
> Just as a heads up, this patch fix two problems. Apart from the missing
> exports for the irqchip functions, it selects GPIOLIB_IRQCHIP as otherwise
> the config may be broken.
>
> Actually v1 of this patch just fixes this:
> https://patchwork.kernel.org/patch/8502401/

Hi Matthias,
I have acked your v1 as it helps fixing compile error if
CONFIG_GPIOLIB_IRQCHIP missing.
I also agreed with Linus on your v2.
Hence, I only acked the v2 patch if my patch
(https://lkml.org/lkml/2016/3/3/497) missed the merge windows as this
drivers can actually work as a module.

>
> Regards,
> Matthias
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch
diff mbox

diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
index 619767b..ff67dc3 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -449,9 +449,10 @@  config GPIO_XGENE
 	  here to enable the GFC GPIO functionality.
 
 config GPIO_XGENE_SB
-	tristate "APM X-Gene GPIO standby controller support"
+	bool "APM X-Gene GPIO standby controller support"
 	depends on ARCH_XGENE && OF_GPIO
 	select GPIO_GENERIC
+	select GPIOLIB_IRQCHIP
 	help
 	  This driver supports the GPIO block within the APM X-Gene
 	  Standby Domain. Say yes here to enable the GPIO functionality.