Commit 350bdb84 authored by Linus Walleij's avatar Linus Walleij

blackfin: Fix local <asm/gpio.h> includes

When making the pin control submenu globally visible, all kinds
of oddities appear, in blackfin a few files were #including
<linux/gpio.h> and relying on that to pull in <asm/gpio.h>.

This was not working when pin control but not GPIOLIB was
selected resulting in a breakage in allmodconfig. The code these
files were using was still there and defined in <asm/gpio.h>
just not pulle in from just including <linux/gpio.h>

Simply add the required includes explicitly in the blackfin
kernel core and everything compiles fine.

Delete the use of the incorrect <linux/gpio.h> where possible.

Add stubs to <asm/gpio.h> for the functions called from PM:
these should probably also depend on !PINCTRL but since the
global CONFIG_PM symbol is used to compile PM support,
we need some more intrusive thing here, to be tested by
Blackfin maintainers.

Cc: Steven Miao <realmz6@gmail.com>
Cc: Huanhuan Feng <huanhuan.feng@analog.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 1c363531
...@@ -183,6 +183,26 @@ static inline int irq_to_gpio(unsigned irq) ...@@ -183,6 +183,26 @@ static inline int irq_to_gpio(unsigned irq)
{ {
return irq - GPIO_IRQ_BASE; return irq - GPIO_IRQ_BASE;
} }
#else /* CONFIG_PINCTRL */
/*
* CONFIG_PM is not working with pin control and should probably
* avoid being selected when pin control is active, but so far,
* these stubs are here to make allyesconfig and allmodconfig
* compile properly. These functions are normally backed by the
* CONFIG_ADI_GPIO custom GPIO implementation.
*/
static inline int bfin_pm_standby_setup(void)
{
return 0;
}
static inline void bfin_pm_standby_restore(void)
{
}
#endif /* CONFIG_PINCTRL */ #endif /* CONFIG_PINCTRL */
#include <asm/irq.h> #include <asm/irq.h>
......
...@@ -15,6 +15,9 @@ ...@@ -15,6 +15,9 @@
/* FIXME: consumer API required for gpio_set_value() etc, get rid of this */ /* FIXME: consumer API required for gpio_set_value() etc, get rid of this */
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <asm/gpio.h>
#include <asm/irq_handler.h>
#include <asm/portmux.h>
#if ANOMALY_05000311 || ANOMALY_05000323 #if ANOMALY_05000311 || ANOMALY_05000323
enum { enum {
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/gpio.h>
#include <asm/blackfin.h> #include <asm/blackfin.h>
#include <asm/gptimers.h> #include <asm/gptimers.h>
...@@ -20,6 +19,7 @@ ...@@ -20,6 +19,7 @@
#include <asm/bfin_serial.h> #include <asm/bfin_serial.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
#include <asm/bfin_twi.h> #include <asm/bfin_twi.h>
#include <asm/gpio.h>
/* Common code defines PORT_MUX on us, so redirect the MMR back locally */ /* Common code defines PORT_MUX on us, so redirect the MMR back locally */
#ifdef BFIN_PORT_MUX #ifdef BFIN_PORT_MUX
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/sched/debug.h> #include <linux/sched/debug.h>
#include <linux/syscore_ops.h> #include <linux/syscore_ops.h>
#include <linux/gpio.h>
#include <asm/delay.h> #include <asm/delay.h>
#ifdef CONFIG_IPIPE #ifdef CONFIG_IPIPE
#include <linux/ipipe.h> #include <linux/ipipe.h>
...@@ -28,6 +27,7 @@ ...@@ -28,6 +27,7 @@
#include <asm/irq_handler.h> #include <asm/irq_handler.h>
#include <asm/dpmc.h> #include <asm/dpmc.h>
#include <asm/traps.h> #include <asm/traps.h>
#include <asm/gpio.h>
/* /*
* NOTES: * NOTES:
......
...@@ -15,12 +15,12 @@ ...@@ -15,12 +15,12 @@
#include <linux/io.h> #include <linux/io.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/gpio.h>
#include <asm/cplb.h> #include <asm/cplb.h>
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/dpmc.h> #include <asm/dpmc.h>
#include <asm/pm.h> #include <asm/pm.h>
#include <asm/gpio.h>
#ifdef CONFIG_BF60x #ifdef CONFIG_BF60x
struct bfin_cpu_pm_fns *bfin_cpu_pm; struct bfin_cpu_pm_fns *bfin_cpu_pm;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment