Commit d0d665a8 authored by Charulatha V's avatar Charulatha V Committed by Tarun Kanti DebBarma

gpio/omap: remove bank->method & METHOD_* macros

The only bank->type (method) used in the OMAP GPIO driver is MPUIO type as they
need to be handled separately. Identify the same using a flag and remove all
METHOD_* macros.

mpuio_init() function is defined under #ifdefs. It is required only in case
of MPUIO bank type and only when PM operations are supported by it.
This is applicable only in case of OMAP16xx SoC's MPUIO GPIO bank type.
For all the other cases it is a dummy function. Hence clean up the same
and remove all the OMAP SoC specific #ifdefs.
Signed-off-by: default avatarCharulatha V <charu@ti.com>
Signed-off-by: default avatarTarun Kanti DebBarma <tarun.kanti@ti.com>
Reviewed-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: default avatarTony Lindgren <tony@atomide.com>
Reviewed-by: default avatarKevin Hilman <khilman@ti.com>
Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
parent d3901eaf
...@@ -47,7 +47,7 @@ static struct omap_gpio_reg_offs omap15xx_mpuio_regs = { ...@@ -47,7 +47,7 @@ static struct omap_gpio_reg_offs omap15xx_mpuio_regs = {
static struct __initdata omap_gpio_platform_data omap15xx_mpu_gpio_config = { static struct __initdata omap_gpio_platform_data omap15xx_mpu_gpio_config = {
.virtual_irq_start = IH_MPUIO_BASE, .virtual_irq_start = IH_MPUIO_BASE,
.bank_type = METHOD_MPUIO, .is_mpuio = true,
.bank_width = 16, .bank_width = 16,
.bank_stride = 1, .bank_stride = 1,
.regs = &omap15xx_mpuio_regs, .regs = &omap15xx_mpuio_regs,
...@@ -90,7 +90,6 @@ static struct omap_gpio_reg_offs omap15xx_gpio_regs = { ...@@ -90,7 +90,6 @@ static struct omap_gpio_reg_offs omap15xx_gpio_regs = {
static struct __initdata omap_gpio_platform_data omap15xx_gpio_config = { static struct __initdata omap_gpio_platform_data omap15xx_gpio_config = {
.virtual_irq_start = IH_GPIO_BASE, .virtual_irq_start = IH_GPIO_BASE,
.bank_type = METHOD_GPIO_1510,
.bank_width = 16, .bank_width = 16,
.regs = &omap15xx_gpio_regs, .regs = &omap15xx_gpio_regs,
}; };
......
...@@ -53,7 +53,7 @@ static struct omap_gpio_reg_offs omap16xx_mpuio_regs = { ...@@ -53,7 +53,7 @@ static struct omap_gpio_reg_offs omap16xx_mpuio_regs = {
static struct __initdata omap_gpio_platform_data omap16xx_mpu_gpio_config = { static struct __initdata omap_gpio_platform_data omap16xx_mpu_gpio_config = {
.virtual_irq_start = IH_MPUIO_BASE, .virtual_irq_start = IH_MPUIO_BASE,
.bank_type = METHOD_MPUIO, .is_mpuio = true,
.bank_width = 16, .bank_width = 16,
.bank_stride = 1, .bank_stride = 1,
.regs = &omap16xx_mpuio_regs, .regs = &omap16xx_mpuio_regs,
...@@ -100,7 +100,6 @@ static struct omap_gpio_reg_offs omap16xx_gpio_regs = { ...@@ -100,7 +100,6 @@ static struct omap_gpio_reg_offs omap16xx_gpio_regs = {
static struct __initdata omap_gpio_platform_data omap16xx_gpio1_config = { static struct __initdata omap_gpio_platform_data omap16xx_gpio1_config = {
.virtual_irq_start = IH_GPIO_BASE, .virtual_irq_start = IH_GPIO_BASE,
.bank_type = METHOD_GPIO_1610,
.bank_width = 16, .bank_width = 16,
.regs = &omap16xx_gpio_regs, .regs = &omap16xx_gpio_regs,
}; };
...@@ -130,7 +129,6 @@ static struct __initdata resource omap16xx_gpio2_resources[] = { ...@@ -130,7 +129,6 @@ static struct __initdata resource omap16xx_gpio2_resources[] = {
static struct __initdata omap_gpio_platform_data omap16xx_gpio2_config = { static struct __initdata omap_gpio_platform_data omap16xx_gpio2_config = {
.virtual_irq_start = IH_GPIO_BASE + 16, .virtual_irq_start = IH_GPIO_BASE + 16,
.bank_type = METHOD_GPIO_1610,
.bank_width = 16, .bank_width = 16,
.regs = &omap16xx_gpio_regs, .regs = &omap16xx_gpio_regs,
}; };
...@@ -160,7 +158,6 @@ static struct __initdata resource omap16xx_gpio3_resources[] = { ...@@ -160,7 +158,6 @@ static struct __initdata resource omap16xx_gpio3_resources[] = {
static struct __initdata omap_gpio_platform_data omap16xx_gpio3_config = { static struct __initdata omap_gpio_platform_data omap16xx_gpio3_config = {
.virtual_irq_start = IH_GPIO_BASE + 32, .virtual_irq_start = IH_GPIO_BASE + 32,
.bank_type = METHOD_GPIO_1610,
.bank_width = 16, .bank_width = 16,
.regs = &omap16xx_gpio_regs, .regs = &omap16xx_gpio_regs,
}; };
...@@ -190,7 +187,6 @@ static struct __initdata resource omap16xx_gpio4_resources[] = { ...@@ -190,7 +187,6 @@ static struct __initdata resource omap16xx_gpio4_resources[] = {
static struct __initdata omap_gpio_platform_data omap16xx_gpio4_config = { static struct __initdata omap_gpio_platform_data omap16xx_gpio4_config = {
.virtual_irq_start = IH_GPIO_BASE + 48, .virtual_irq_start = IH_GPIO_BASE + 48,
.bank_type = METHOD_GPIO_1610,
.bank_width = 16, .bank_width = 16,
.regs = &omap16xx_gpio_regs, .regs = &omap16xx_gpio_regs,
}; };
......
...@@ -52,8 +52,8 @@ static struct omap_gpio_reg_offs omap7xx_mpuio_regs = { ...@@ -52,8 +52,8 @@ static struct omap_gpio_reg_offs omap7xx_mpuio_regs = {
static struct __initdata omap_gpio_platform_data omap7xx_mpu_gpio_config = { static struct __initdata omap_gpio_platform_data omap7xx_mpu_gpio_config = {
.virtual_irq_start = IH_MPUIO_BASE, .virtual_irq_start = IH_MPUIO_BASE,
.bank_type = METHOD_MPUIO,
.bank_width = 32, .bank_width = 32,
.is_mpuio = true,
.bank_stride = 2, .bank_stride = 2,
.regs = &omap7xx_mpuio_regs, .regs = &omap7xx_mpuio_regs,
}; };
...@@ -94,7 +94,6 @@ static struct omap_gpio_reg_offs omap7xx_gpio_regs = { ...@@ -94,7 +94,6 @@ static struct omap_gpio_reg_offs omap7xx_gpio_regs = {
static struct __initdata omap_gpio_platform_data omap7xx_gpio1_config = { static struct __initdata omap_gpio_platform_data omap7xx_gpio1_config = {
.virtual_irq_start = IH_GPIO_BASE, .virtual_irq_start = IH_GPIO_BASE,
.bank_type = METHOD_GPIO_7XX,
.bank_width = 32, .bank_width = 32,
.regs = &omap7xx_gpio_regs, .regs = &omap7xx_gpio_regs,
}; };
...@@ -124,7 +123,6 @@ static struct __initdata resource omap7xx_gpio2_resources[] = { ...@@ -124,7 +123,6 @@ static struct __initdata resource omap7xx_gpio2_resources[] = {
static struct __initdata omap_gpio_platform_data omap7xx_gpio2_config = { static struct __initdata omap_gpio_platform_data omap7xx_gpio2_config = {
.virtual_irq_start = IH_GPIO_BASE + 32, .virtual_irq_start = IH_GPIO_BASE + 32,
.bank_type = METHOD_GPIO_7XX,
.bank_width = 32, .bank_width = 32,
.regs = &omap7xx_gpio_regs, .regs = &omap7xx_gpio_regs,
}; };
...@@ -154,7 +152,6 @@ static struct __initdata resource omap7xx_gpio3_resources[] = { ...@@ -154,7 +152,6 @@ static struct __initdata resource omap7xx_gpio3_resources[] = {
static struct __initdata omap_gpio_platform_data omap7xx_gpio3_config = { static struct __initdata omap_gpio_platform_data omap7xx_gpio3_config = {
.virtual_irq_start = IH_GPIO_BASE + 64, .virtual_irq_start = IH_GPIO_BASE + 64,
.bank_type = METHOD_GPIO_7XX,
.bank_width = 32, .bank_width = 32,
.regs = &omap7xx_gpio_regs, .regs = &omap7xx_gpio_regs,
}; };
...@@ -184,7 +181,6 @@ static struct __initdata resource omap7xx_gpio4_resources[] = { ...@@ -184,7 +181,6 @@ static struct __initdata resource omap7xx_gpio4_resources[] = {
static struct __initdata omap_gpio_platform_data omap7xx_gpio4_config = { static struct __initdata omap_gpio_platform_data omap7xx_gpio4_config = {
.virtual_irq_start = IH_GPIO_BASE + 96, .virtual_irq_start = IH_GPIO_BASE + 96,
.bank_type = METHOD_GPIO_7XX,
.bank_width = 32, .bank_width = 32,
.regs = &omap7xx_gpio_regs, .regs = &omap7xx_gpio_regs,
}; };
...@@ -214,7 +210,6 @@ static struct __initdata resource omap7xx_gpio5_resources[] = { ...@@ -214,7 +210,6 @@ static struct __initdata resource omap7xx_gpio5_resources[] = {
static struct __initdata omap_gpio_platform_data omap7xx_gpio5_config = { static struct __initdata omap_gpio_platform_data omap7xx_gpio5_config = {
.virtual_irq_start = IH_GPIO_BASE + 128, .virtual_irq_start = IH_GPIO_BASE + 128,
.bank_type = METHOD_GPIO_7XX,
.bank_width = 32, .bank_width = 32,
.regs = &omap7xx_gpio_regs, .regs = &omap7xx_gpio_regs,
}; };
...@@ -244,7 +239,6 @@ static struct __initdata resource omap7xx_gpio6_resources[] = { ...@@ -244,7 +239,6 @@ static struct __initdata resource omap7xx_gpio6_resources[] = {
static struct __initdata omap_gpio_platform_data omap7xx_gpio6_config = { static struct __initdata omap_gpio_platform_data omap7xx_gpio6_config = {
.virtual_irq_start = IH_GPIO_BASE + 160, .virtual_irq_start = IH_GPIO_BASE + 160,
.bank_type = METHOD_GPIO_7XX,
.bank_width = 32, .bank_width = 32,
.regs = &omap7xx_gpio_regs, .regs = &omap7xx_gpio_regs,
}; };
......
...@@ -74,7 +74,6 @@ static int omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused) ...@@ -74,7 +74,6 @@ static int omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused)
/* fall through */ /* fall through */
case 1: case 1:
pdata->bank_type = METHOD_GPIO_24XX;
pdata->regs->revision = OMAP24XX_GPIO_REVISION; pdata->regs->revision = OMAP24XX_GPIO_REVISION;
pdata->regs->direction = OMAP24XX_GPIO_OE; pdata->regs->direction = OMAP24XX_GPIO_OE;
pdata->regs->datain = OMAP24XX_GPIO_DATAIN; pdata->regs->datain = OMAP24XX_GPIO_DATAIN;
...@@ -97,7 +96,6 @@ static int omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused) ...@@ -97,7 +96,6 @@ static int omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused)
pdata->regs->fallingdetect = OMAP24XX_GPIO_FALLINGDETECT; pdata->regs->fallingdetect = OMAP24XX_GPIO_FALLINGDETECT;
break; break;
case 2: case 2:
pdata->bank_type = METHOD_GPIO_44XX;
pdata->regs->revision = OMAP4_GPIO_REVISION; pdata->regs->revision = OMAP4_GPIO_REVISION;
pdata->regs->direction = OMAP4_GPIO_OE; pdata->regs->direction = OMAP4_GPIO_OE;
pdata->regs->datain = OMAP4_GPIO_DATAIN; pdata->regs->datain = OMAP4_GPIO_DATAIN;
......
...@@ -162,13 +162,6 @@ ...@@ -162,13 +162,6 @@
IH_MPUIO_BASE + ((nr) & 0x0f) : \ IH_MPUIO_BASE + ((nr) & 0x0f) : \
IH_GPIO_BASE + (nr)) IH_GPIO_BASE + (nr))
#define METHOD_MPUIO 0
#define METHOD_GPIO_1510 1
#define METHOD_GPIO_1610 2
#define METHOD_GPIO_7XX 3
#define METHOD_GPIO_24XX 5
#define METHOD_GPIO_44XX 6
struct omap_gpio_dev_attr { struct omap_gpio_dev_attr {
int bank_width; /* GPIO bank width */ int bank_width; /* GPIO bank width */
bool dbck_flag; /* dbck required or not - True for OMAP3&4 */ bool dbck_flag; /* dbck required or not - True for OMAP3&4 */
...@@ -210,6 +203,7 @@ struct omap_gpio_platform_data { ...@@ -210,6 +203,7 @@ struct omap_gpio_platform_data {
int bank_stride; /* Only needed for omap1 MPUIO */ int bank_stride; /* Only needed for omap1 MPUIO */
bool dbck_flag; /* dbck required or not - True for OMAP3&4 */ bool dbck_flag; /* dbck required or not - True for OMAP3&4 */
bool loses_context; /* whether the bank would ever lose context */ bool loses_context; /* whether the bank would ever lose context */
bool is_mpuio; /* whether the bank is of type MPUIO */
u32 non_wakeup_gpios; u32 non_wakeup_gpios;
struct omap_gpio_reg_offs *regs; struct omap_gpio_reg_offs *regs;
......
...@@ -49,7 +49,6 @@ struct gpio_bank { ...@@ -49,7 +49,6 @@ struct gpio_bank {
void __iomem *base; void __iomem *base;
u16 irq; u16 irq;
u16 virtual_irq_start; u16 virtual_irq_start;
int method;
u32 suspend_wakeup; u32 suspend_wakeup;
u32 saved_wakeup; u32 saved_wakeup;
u32 non_wakeup_gpios; u32 non_wakeup_gpios;
...@@ -66,6 +65,7 @@ struct gpio_bank { ...@@ -66,6 +65,7 @@ struct gpio_bank {
u32 mod_usage; u32 mod_usage;
u32 dbck_enable_mask; u32 dbck_enable_mask;
struct device *dev; struct device *dev;
bool is_mpuio;
bool dbck_flag; bool dbck_flag;
bool loses_context; bool loses_context;
int stride; int stride;
...@@ -693,14 +693,6 @@ static struct irq_chip gpio_irq_chip = { ...@@ -693,14 +693,6 @@ static struct irq_chip gpio_irq_chip = {
/*---------------------------------------------------------------------*/ /*---------------------------------------------------------------------*/
#ifdef CONFIG_ARCH_OMAP1
#define bank_is_mpuio(bank) ((bank)->method == METHOD_MPUIO)
#ifdef CONFIG_ARCH_OMAP16XX
#include <linux/platform_device.h>
static int omap_mpuio_suspend_noirq(struct device *dev) static int omap_mpuio_suspend_noirq(struct device *dev)
{ {
struct platform_device *pdev = to_platform_device(dev); struct platform_device *pdev = to_platform_device(dev);
...@@ -762,23 +754,8 @@ static inline void mpuio_init(struct gpio_bank *bank) ...@@ -762,23 +754,8 @@ static inline void mpuio_init(struct gpio_bank *bank)
(void) platform_device_register(&omap_mpuio_device); (void) platform_device_register(&omap_mpuio_device);
} }
#else
static inline void mpuio_init(struct gpio_bank *bank) {}
#endif /* 16xx */
#else
#define bank_is_mpuio(bank) 0
static inline void mpuio_init(struct gpio_bank *bank) {}
#endif
/*---------------------------------------------------------------------*/ /*---------------------------------------------------------------------*/
/* REVISIT these are stupid implementations! replace by ones that
* don't switch on METHOD_* and which mostly avoid spinlocks
*/
static int gpio_input(struct gpio_chip *chip, unsigned offset) static int gpio_input(struct gpio_chip *chip, unsigned offset)
{ {
struct gpio_bank *bank; struct gpio_bank *bank;
...@@ -899,7 +876,7 @@ static void omap_gpio_mod_init(struct gpio_bank *bank) ...@@ -899,7 +876,7 @@ static void omap_gpio_mod_init(struct gpio_bank *bank)
if (bank->width == 16) if (bank->width == 16)
l = 0xffff; l = 0xffff;
if (bank_is_mpuio(bank)) { if (bank->is_mpuio) {
__raw_writel(l, bank->base + bank->regs->irqenable); __raw_writel(l, bank->base + bank->regs->irqenable);
return; return;
} }
...@@ -951,7 +928,6 @@ static void __devinit omap_gpio_chip_init(struct gpio_bank *bank) ...@@ -951,7 +928,6 @@ static void __devinit omap_gpio_chip_init(struct gpio_bank *bank)
int j; int j;
static int gpio; static int gpio;
bank->mod_usage = 0;
/* /*
* REVISIT eventually switch from OMAP-specific gpio structs * REVISIT eventually switch from OMAP-specific gpio structs
* over to the generic ones * over to the generic ones
...@@ -964,12 +940,10 @@ static void __devinit omap_gpio_chip_init(struct gpio_bank *bank) ...@@ -964,12 +940,10 @@ static void __devinit omap_gpio_chip_init(struct gpio_bank *bank)
bank->chip.set_debounce = gpio_debounce; bank->chip.set_debounce = gpio_debounce;
bank->chip.set = gpio_set; bank->chip.set = gpio_set;
bank->chip.to_irq = gpio_2irq; bank->chip.to_irq = gpio_2irq;
if (bank_is_mpuio(bank)) { if (bank->is_mpuio) {
bank->chip.label = "mpuio"; bank->chip.label = "mpuio";
#ifdef CONFIG_ARCH_OMAP16XX
if (bank->regs->wkup_en) if (bank->regs->wkup_en)
bank->chip.dev = &omap_mpuio_device.dev; bank->chip.dev = &omap_mpuio_device.dev;
#endif
bank->chip.base = OMAP_MPUIO(0); bank->chip.base = OMAP_MPUIO(0);
} else { } else {
bank->chip.label = "gpio"; bank->chip.label = "gpio";
...@@ -984,7 +958,7 @@ static void __devinit omap_gpio_chip_init(struct gpio_bank *bank) ...@@ -984,7 +958,7 @@ static void __devinit omap_gpio_chip_init(struct gpio_bank *bank)
j < bank->virtual_irq_start + bank->width; j++) { j < bank->virtual_irq_start + bank->width; j++) {
irq_set_lockdep_class(j, &gpio_lock_class); irq_set_lockdep_class(j, &gpio_lock_class);
irq_set_chip_data(j, bank); irq_set_chip_data(j, bank);
if (bank_is_mpuio(bank)) { if (bank->is_mpuio) {
omap_mpuio_alloc_gc(bank, j, bank->width); omap_mpuio_alloc_gc(bank, j, bank->width);
} else { } else {
irq_set_chip(j, &gpio_irq_chip); irq_set_chip(j, &gpio_irq_chip);
...@@ -1028,11 +1002,11 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev) ...@@ -1028,11 +1002,11 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev)
pdata = pdev->dev.platform_data; pdata = pdev->dev.platform_data;
bank->virtual_irq_start = pdata->virtual_irq_start; bank->virtual_irq_start = pdata->virtual_irq_start;
bank->method = pdata->bank_type;
bank->dev = &pdev->dev; bank->dev = &pdev->dev;
bank->dbck_flag = pdata->dbck_flag; bank->dbck_flag = pdata->dbck_flag;
bank->stride = pdata->bank_stride; bank->stride = pdata->bank_stride;
bank->width = pdata->bank_width; bank->width = pdata->bank_width;
bank->is_mpuio = pdata->is_mpuio;
bank->non_wakeup_gpios = pdata->non_wakeup_gpios; bank->non_wakeup_gpios = pdata->non_wakeup_gpios;
bank->loses_context = pdata->loses_context; bank->loses_context = pdata->loses_context;
bank->get_context_loss_count = pdata->get_context_loss_count; bank->get_context_loss_count = pdata->get_context_loss_count;
...@@ -1065,7 +1039,7 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev) ...@@ -1065,7 +1039,7 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev)
pm_runtime_enable(bank->dev); pm_runtime_enable(bank->dev);
pm_runtime_get_sync(bank->dev); pm_runtime_get_sync(bank->dev);
if (bank_is_mpuio(bank)) if (bank->is_mpuio)
mpuio_init(bank); mpuio_init(bank);
omap_gpio_mod_init(bank); omap_gpio_mod_init(bank);
......
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