|
@@ -68,36 +68,20 @@
|
|
|
#define OMAP1610_GPIO_SET_DATAOUT 0x00f0
|
|
|
|
|
|
/*
|
|
|
- * OMAP730 specific GPIO registers
|
|
|
+ * OMAP7XX specific GPIO registers
|
|
|
*/
|
|
|
-#define OMAP730_GPIO1_BASE OMAP1_IO_ADDRESS(0xfffbc000)
|
|
|
-#define OMAP730_GPIO2_BASE OMAP1_IO_ADDRESS(0xfffbc800)
|
|
|
-#define OMAP730_GPIO3_BASE OMAP1_IO_ADDRESS(0xfffbd000)
|
|
|
-#define OMAP730_GPIO4_BASE OMAP1_IO_ADDRESS(0xfffbd800)
|
|
|
-#define OMAP730_GPIO5_BASE OMAP1_IO_ADDRESS(0xfffbe000)
|
|
|
-#define OMAP730_GPIO6_BASE OMAP1_IO_ADDRESS(0xfffbe800)
|
|
|
-#define OMAP730_GPIO_DATA_INPUT 0x00
|
|
|
-#define OMAP730_GPIO_DATA_OUTPUT 0x04
|
|
|
-#define OMAP730_GPIO_DIR_CONTROL 0x08
|
|
|
-#define OMAP730_GPIO_INT_CONTROL 0x0c
|
|
|
-#define OMAP730_GPIO_INT_MASK 0x10
|
|
|
-#define OMAP730_GPIO_INT_STATUS 0x14
|
|
|
-
|
|
|
-/*
|
|
|
- * OMAP850 specific GPIO registers
|
|
|
- */
|
|
|
-#define OMAP850_GPIO1_BASE OMAP1_IO_ADDRESS(0xfffbc000)
|
|
|
-#define OMAP850_GPIO2_BASE OMAP1_IO_ADDRESS(0xfffbc800)
|
|
|
-#define OMAP850_GPIO3_BASE OMAP1_IO_ADDRESS(0xfffbd000)
|
|
|
-#define OMAP850_GPIO4_BASE OMAP1_IO_ADDRESS(0xfffbd800)
|
|
|
-#define OMAP850_GPIO5_BASE OMAP1_IO_ADDRESS(0xfffbe000)
|
|
|
-#define OMAP850_GPIO6_BASE OMAP1_IO_ADDRESS(0xfffbe800)
|
|
|
-#define OMAP850_GPIO_DATA_INPUT 0x00
|
|
|
-#define OMAP850_GPIO_DATA_OUTPUT 0x04
|
|
|
-#define OMAP850_GPIO_DIR_CONTROL 0x08
|
|
|
-#define OMAP850_GPIO_INT_CONTROL 0x0c
|
|
|
-#define OMAP850_GPIO_INT_MASK 0x10
|
|
|
-#define OMAP850_GPIO_INT_STATUS 0x14
|
|
|
+#define OMAP7XX_GPIO1_BASE OMAP1_IO_ADDRESS(0xfffbc000)
|
|
|
+#define OMAP7XX_GPIO2_BASE OMAP1_IO_ADDRESS(0xfffbc800)
|
|
|
+#define OMAP7XX_GPIO3_BASE OMAP1_IO_ADDRESS(0xfffbd000)
|
|
|
+#define OMAP7XX_GPIO4_BASE OMAP1_IO_ADDRESS(0xfffbd800)
|
|
|
+#define OMAP7XX_GPIO5_BASE OMAP1_IO_ADDRESS(0xfffbe000)
|
|
|
+#define OMAP7XX_GPIO6_BASE OMAP1_IO_ADDRESS(0xfffbe800)
|
|
|
+#define OMAP7XX_GPIO_DATA_INPUT 0x00
|
|
|
+#define OMAP7XX_GPIO_DATA_OUTPUT 0x04
|
|
|
+#define OMAP7XX_GPIO_DIR_CONTROL 0x08
|
|
|
+#define OMAP7XX_GPIO_INT_CONTROL 0x0c
|
|
|
+#define OMAP7XX_GPIO_INT_MASK 0x10
|
|
|
+#define OMAP7XX_GPIO_INT_STATUS 0x14
|
|
|
|
|
|
#define OMAP1_MPUIO_VBASE OMAP1_IO_ADDRESS(OMAP1_MPUIO_BASE)
|
|
|
|
|
@@ -215,8 +199,7 @@ struct gpio_bank {
|
|
|
#define METHOD_MPUIO 0
|
|
|
#define METHOD_GPIO_1510 1
|
|
|
#define METHOD_GPIO_1610 2
|
|
|
-#define METHOD_GPIO_730 3
|
|
|
-#define METHOD_GPIO_850 4
|
|
|
+#define METHOD_GPIO_7XX 3
|
|
|
#define METHOD_GPIO_24XX 5
|
|
|
|
|
|
#ifdef CONFIG_ARCH_OMAP16XX
|
|
@@ -236,31 +219,18 @@ static struct gpio_bank gpio_bank_1510[2] = {
|
|
|
};
|
|
|
#endif
|
|
|
|
|
|
-#ifdef CONFIG_ARCH_OMAP730
|
|
|
-static struct gpio_bank gpio_bank_730[7] = {
|
|
|
- { OMAP1_MPUIO_VBASE, INT_730_MPUIO, IH_MPUIO_BASE, METHOD_MPUIO },
|
|
|
- { OMAP730_GPIO1_BASE, INT_730_GPIO_BANK1, IH_GPIO_BASE, METHOD_GPIO_730 },
|
|
|
- { OMAP730_GPIO2_BASE, INT_730_GPIO_BANK2, IH_GPIO_BASE + 32, METHOD_GPIO_730 },
|
|
|
- { OMAP730_GPIO3_BASE, INT_730_GPIO_BANK3, IH_GPIO_BASE + 64, METHOD_GPIO_730 },
|
|
|
- { OMAP730_GPIO4_BASE, INT_730_GPIO_BANK4, IH_GPIO_BASE + 96, METHOD_GPIO_730 },
|
|
|
- { OMAP730_GPIO5_BASE, INT_730_GPIO_BANK5, IH_GPIO_BASE + 128, METHOD_GPIO_730 },
|
|
|
- { OMAP730_GPIO6_BASE, INT_730_GPIO_BANK6, IH_GPIO_BASE + 160, METHOD_GPIO_730 },
|
|
|
+#if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
|
|
|
+static struct gpio_bank gpio_bank_7xx[7] = {
|
|
|
+ { OMAP1_MPUIO_VBASE, INT_7XX_MPUIO, IH_MPUIO_BASE, METHOD_MPUIO },
|
|
|
+ { OMAP7XX_GPIO1_BASE, INT_7XX_GPIO_BANK1, IH_GPIO_BASE, METHOD_GPIO_7XX },
|
|
|
+ { OMAP7XX_GPIO2_BASE, INT_7XX_GPIO_BANK2, IH_GPIO_BASE + 32, METHOD_GPIO_7XX },
|
|
|
+ { OMAP7XX_GPIO3_BASE, INT_7XX_GPIO_BANK3, IH_GPIO_BASE + 64, METHOD_GPIO_7XX },
|
|
|
+ { OMAP7XX_GPIO4_BASE, INT_7XX_GPIO_BANK4, IH_GPIO_BASE + 96, METHOD_GPIO_7XX },
|
|
|
+ { OMAP7XX_GPIO5_BASE, INT_7XX_GPIO_BANK5, IH_GPIO_BASE + 128, METHOD_GPIO_7XX },
|
|
|
+ { OMAP7XX_GPIO6_BASE, INT_7XX_GPIO_BANK6, IH_GPIO_BASE + 160, METHOD_GPIO_7XX },
|
|
|
};
|
|
|
#endif
|
|
|
|
|
|
-#ifdef CONFIG_ARCH_OMAP850
|
|
|
-static struct gpio_bank gpio_bank_850[7] = {
|
|
|
- { OMAP1_MPUIO_VBASE, INT_850_MPUIO, IH_MPUIO_BASE, METHOD_MPUIO },
|
|
|
- { OMAP850_GPIO1_BASE, INT_850_GPIO_BANK1, IH_GPIO_BASE, METHOD_GPIO_850 },
|
|
|
- { OMAP850_GPIO2_BASE, INT_850_GPIO_BANK2, IH_GPIO_BASE + 32, METHOD_GPIO_850 },
|
|
|
- { OMAP850_GPIO3_BASE, INT_850_GPIO_BANK3, IH_GPIO_BASE + 64, METHOD_GPIO_850 },
|
|
|
- { OMAP850_GPIO4_BASE, INT_850_GPIO_BANK4, IH_GPIO_BASE + 96, METHOD_GPIO_850 },
|
|
|
- { OMAP850_GPIO5_BASE, INT_850_GPIO_BANK5, IH_GPIO_BASE + 128, METHOD_GPIO_850 },
|
|
|
- { OMAP850_GPIO6_BASE, INT_850_GPIO_BANK6, IH_GPIO_BASE + 160, METHOD_GPIO_850 },
|
|
|
-};
|
|
|
-#endif
|
|
|
-
|
|
|
-
|
|
|
#ifdef CONFIG_ARCH_OMAP24XX
|
|
|
|
|
|
static struct gpio_bank gpio_bank_242x[4] = {
|
|
@@ -402,14 +372,9 @@ static void _set_gpio_direction(struct gpio_bank *bank, int gpio, int is_input)
|
|
|
reg += OMAP1610_GPIO_DIRECTION;
|
|
|
break;
|
|
|
#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP730
|
|
|
- case METHOD_GPIO_730:
|
|
|
- reg += OMAP730_GPIO_DIR_CONTROL;
|
|
|
- break;
|
|
|
-#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP850
|
|
|
- case METHOD_GPIO_850:
|
|
|
- reg += OMAP850_GPIO_DIR_CONTROL;
|
|
|
+#if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
|
|
|
+ case METHOD_GPIO_7XX:
|
|
|
+ reg += OMAP7XX_GPIO_DIR_CONTROL;
|
|
|
break;
|
|
|
#endif
|
|
|
#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
|
|
@@ -469,19 +434,9 @@ static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable)
|
|
|
l = 1 << gpio;
|
|
|
break;
|
|
|
#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP730
|
|
|
- case METHOD_GPIO_730:
|
|
|
- reg += OMAP730_GPIO_DATA_OUTPUT;
|
|
|
- l = __raw_readl(reg);
|
|
|
- if (enable)
|
|
|
- l |= 1 << gpio;
|
|
|
- else
|
|
|
- l &= ~(1 << gpio);
|
|
|
- break;
|
|
|
-#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP850
|
|
|
- case METHOD_GPIO_850:
|
|
|
- reg += OMAP850_GPIO_DATA_OUTPUT;
|
|
|
+#if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
|
|
|
+ case METHOD_GPIO_7XX:
|
|
|
+ reg += OMAP7XX_GPIO_DATA_OUTPUT;
|
|
|
l = __raw_readl(reg);
|
|
|
if (enable)
|
|
|
l |= 1 << gpio;
|
|
@@ -537,14 +492,9 @@ static int _get_gpio_datain(struct gpio_bank *bank, int gpio)
|
|
|
reg += OMAP1610_GPIO_DATAIN;
|
|
|
break;
|
|
|
#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP730
|
|
|
- case METHOD_GPIO_730:
|
|
|
- reg += OMAP730_GPIO_DATA_INPUT;
|
|
|
- break;
|
|
|
-#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP850
|
|
|
- case METHOD_GPIO_850:
|
|
|
- reg += OMAP850_GPIO_DATA_INPUT;
|
|
|
+#if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
|
|
|
+ case METHOD_GPIO_7XX:
|
|
|
+ reg += OMAP7XX_GPIO_DATA_INPUT;
|
|
|
break;
|
|
|
#endif
|
|
|
#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
|
|
@@ -588,14 +538,9 @@ static int _get_gpio_dataout(struct gpio_bank *bank, int gpio)
|
|
|
reg += OMAP1610_GPIO_DATAOUT;
|
|
|
break;
|
|
|
#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP730
|
|
|
- case METHOD_GPIO_730:
|
|
|
- reg += OMAP730_GPIO_DATA_OUTPUT;
|
|
|
- break;
|
|
|
-#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP850
|
|
|
- case METHOD_GPIO_850:
|
|
|
- reg += OMAP850_GPIO_DATA_OUTPUT;
|
|
|
+#if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
|
|
|
+ case METHOD_GPIO_7XX:
|
|
|
+ reg += OMAP7XX_GPIO_DATA_OUTPUT;
|
|
|
break;
|
|
|
#endif
|
|
|
#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) || \
|
|
@@ -797,21 +742,9 @@ static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger)
|
|
|
__raw_writel(1 << gpio, bank->base + OMAP1610_GPIO_CLEAR_WAKEUPENA);
|
|
|
break;
|
|
|
#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP730
|
|
|
- case METHOD_GPIO_730:
|
|
|
- reg += OMAP730_GPIO_INT_CONTROL;
|
|
|
- l = __raw_readl(reg);
|
|
|
- if (trigger & IRQ_TYPE_EDGE_RISING)
|
|
|
- l |= 1 << gpio;
|
|
|
- else if (trigger & IRQ_TYPE_EDGE_FALLING)
|
|
|
- l &= ~(1 << gpio);
|
|
|
- else
|
|
|
- goto bad;
|
|
|
- break;
|
|
|
-#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP850
|
|
|
- case METHOD_GPIO_850:
|
|
|
- reg += OMAP850_GPIO_INT_CONTROL;
|
|
|
+#if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
|
|
|
+ case METHOD_GPIO_7XX:
|
|
|
+ reg += OMAP7XX_GPIO_INT_CONTROL;
|
|
|
l = __raw_readl(reg);
|
|
|
if (trigger & IRQ_TYPE_EDGE_RISING)
|
|
|
l |= 1 << gpio;
|
|
@@ -897,14 +830,9 @@ static void _clear_gpio_irqbank(struct gpio_bank *bank, int gpio_mask)
|
|
|
reg += OMAP1610_GPIO_IRQSTATUS1;
|
|
|
break;
|
|
|
#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP730
|
|
|
- case METHOD_GPIO_730:
|
|
|
- reg += OMAP730_GPIO_INT_STATUS;
|
|
|
- break;
|
|
|
-#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP850
|
|
|
- case METHOD_GPIO_850:
|
|
|
- reg += OMAP850_GPIO_INT_STATUS;
|
|
|
+#if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
|
|
|
+ case METHOD_GPIO_7XX:
|
|
|
+ reg += OMAP7XX_GPIO_INT_STATUS;
|
|
|
break;
|
|
|
#endif
|
|
|
#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
|
|
@@ -971,16 +899,9 @@ static u32 _get_gpio_irqbank_mask(struct gpio_bank *bank)
|
|
|
mask = 0xffff;
|
|
|
break;
|
|
|
#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP730
|
|
|
- case METHOD_GPIO_730:
|
|
|
- reg += OMAP730_GPIO_INT_MASK;
|
|
|
- mask = 0xffffffff;
|
|
|
- inv = 1;
|
|
|
- break;
|
|
|
-#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP850
|
|
|
- case METHOD_GPIO_850:
|
|
|
- reg += OMAP850_GPIO_INT_MASK;
|
|
|
+#if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
|
|
|
+ case METHOD_GPIO_7XX:
|
|
|
+ reg += OMAP7XX_GPIO_INT_MASK;
|
|
|
mask = 0xffffffff;
|
|
|
inv = 1;
|
|
|
break;
|
|
@@ -1044,19 +965,9 @@ static void _enable_gpio_irqbank(struct gpio_bank *bank, int gpio_mask, int enab
|
|
|
l = gpio_mask;
|
|
|
break;
|
|
|
#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP730
|
|
|
- case METHOD_GPIO_730:
|
|
|
- reg += OMAP730_GPIO_INT_MASK;
|
|
|
- l = __raw_readl(reg);
|
|
|
- if (enable)
|
|
|
- l &= ~(gpio_mask);
|
|
|
- else
|
|
|
- l |= gpio_mask;
|
|
|
- break;
|
|
|
-#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP850
|
|
|
- case METHOD_GPIO_850:
|
|
|
- reg += OMAP850_GPIO_INT_MASK;
|
|
|
+#if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
|
|
|
+ case METHOD_GPIO_7XX:
|
|
|
+ reg += OMAP7XX_GPIO_INT_MASK;
|
|
|
l = __raw_readl(reg);
|
|
|
if (enable)
|
|
|
l &= ~(gpio_mask);
|
|
@@ -1249,13 +1160,9 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
|
|
|
if (bank->method == METHOD_GPIO_1610)
|
|
|
isr_reg = bank->base + OMAP1610_GPIO_IRQSTATUS1;
|
|
|
#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP730
|
|
|
- if (bank->method == METHOD_GPIO_730)
|
|
|
- isr_reg = bank->base + OMAP730_GPIO_INT_STATUS;
|
|
|
-#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP850
|
|
|
- if (bank->method == METHOD_GPIO_850)
|
|
|
- isr_reg = bank->base + OMAP850_GPIO_INT_STATUS;
|
|
|
+#if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
|
|
|
+ if (bank->method == METHOD_GPIO_7XX)
|
|
|
+ isr_reg = bank->base + OMAP7XX_GPIO_INT_STATUS;
|
|
|
#endif
|
|
|
#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
|
|
|
if (bank->method == METHOD_GPIO_24XX)
|
|
@@ -1524,11 +1431,8 @@ static int gpio_is_input(struct gpio_bank *bank, int mask)
|
|
|
case METHOD_GPIO_1610:
|
|
|
reg += OMAP1610_GPIO_DIRECTION;
|
|
|
break;
|
|
|
- case METHOD_GPIO_730:
|
|
|
- reg += OMAP730_GPIO_DIR_CONTROL;
|
|
|
- break;
|
|
|
- case METHOD_GPIO_850:
|
|
|
- reg += OMAP850_GPIO_DIR_CONTROL;
|
|
|
+ case METHOD_GPIO_7XX:
|
|
|
+ reg += OMAP7XX_GPIO_DIR_CONTROL;
|
|
|
break;
|
|
|
case METHOD_GPIO_24XX:
|
|
|
reg += OMAP24XX_GPIO_OE;
|
|
@@ -1695,21 +1599,13 @@ static int __init _omap_gpio_init(void)
|
|
|
(rev >> 4) & 0x0f, rev & 0x0f);
|
|
|
}
|
|
|
#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP730
|
|
|
- if (cpu_is_omap730()) {
|
|
|
- printk(KERN_INFO "OMAP730 GPIO hardware\n");
|
|
|
- gpio_bank_count = 7;
|
|
|
- gpio_bank = gpio_bank_730;
|
|
|
- }
|
|
|
-#endif
|
|
|
-#ifdef CONFIG_ARCH_OMAP850
|
|
|
- if (cpu_is_omap850()) {
|
|
|
- printk(KERN_INFO "OMAP850 GPIO hardware\n");
|
|
|
+#if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
|
|
|
+ if (cpu_is_omap7xx()) {
|
|
|
+ printk(KERN_INFO "OMAP7XX GPIO hardware\n");
|
|
|
gpio_bank_count = 7;
|
|
|
- gpio_bank = gpio_bank_850;
|
|
|
+ gpio_bank = gpio_bank_7xx;
|
|
|
}
|
|
|
#endif
|
|
|
-
|
|
|
#ifdef CONFIG_ARCH_OMAP24XX
|
|
|
if (cpu_is_omap242x()) {
|
|
|
int rev;
|
|
@@ -1768,11 +1664,11 @@ static int __init _omap_gpio_init(void)
|
|
|
__raw_writew(0xffff, bank->base + OMAP1610_GPIO_IRQSTATUS1);
|
|
|
__raw_writew(0x0014, bank->base + OMAP1610_GPIO_SYSCONFIG);
|
|
|
}
|
|
|
- if (cpu_is_omap7xx() && bank->method == METHOD_GPIO_730) {
|
|
|
- __raw_writel(0xffffffff, bank->base + OMAP730_GPIO_INT_MASK);
|
|
|
- __raw_writel(0x00000000, bank->base + OMAP730_GPIO_INT_STATUS);
|
|
|
+ if (cpu_is_omap7xx() && bank->method == METHOD_GPIO_7XX) {
|
|
|
+ __raw_writel(0xffffffff, bank->base + OMAP7XX_GPIO_INT_MASK);
|
|
|
+ __raw_writel(0x00000000, bank->base + OMAP7XX_GPIO_INT_STATUS);
|
|
|
|
|
|
- gpio_count = 32; /* 730 has 32-bit GPIOs */
|
|
|
+ gpio_count = 32; /* 7xx has 32-bit GPIOs */
|
|
|
}
|
|
|
|
|
|
#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) || \
|
|
@@ -2160,8 +2056,7 @@ static int dbg_gpio_show(struct seq_file *s, void *unused)
|
|
|
|
|
|
if (bank_is_mpuio(bank))
|
|
|
gpio = OMAP_MPUIO(0);
|
|
|
- else if (cpu_class_is_omap2() || cpu_is_omap730() ||
|
|
|
- cpu_is_omap850())
|
|
|
+ else if (cpu_class_is_omap2() || cpu_is_omap7xx())
|
|
|
bankwidth = 32;
|
|
|
|
|
|
for (j = 0; j < bankwidth; j++, gpio++, mask <<= 1) {
|