blackfin: Move machine specific gpio_port_t structure back to blackfin arch folder.
authorSteven Miao <realmz6@gmail.com>
Wed, 23 Oct 2013 06:44:09 +0000 (14:44 +0800)
committerSonic Zhang <sonic.zhang@analog.com>
Mon, 4 Nov 2013 08:50:46 +0000 (16:50 +0800)
The gpio register mappings are different among blackfin processors.

Signed-off-by: Steven Miao <realmz6@gmail.com>
Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
arch/blackfin/cpu/Makefile
arch/blackfin/cpu/gpio.c
arch/blackfin/include/asm/gpio.h
drivers/gpio/adi_gpio2.c

index 1421cb2ca25e2867889d258be12fe778533f75fa..929fc8b7cece8c9e869a7857765c13ead9ecfff7 100644 (file)
@@ -18,7 +18,7 @@ CEXTRA   := initcode.o
 SEXTRA   := start.o
 SOBJS    := interrupt.o cache.o
 COBJS-y  += cpu.o
-COBJS-$(CONFIG_ADI_GPIO1) += gpio.o
+COBJS- += gpio.o
 COBJS-y  += interrupts.o
 COBJS-$(CONFIG_JTAG_CONSOLE) += jtag-console.o
 COBJS-y  += os_log.o
index f9aff4d894ae95f2d69239e60127485cc5b1a1cc..5e9c68af85ac0460ace557d867a3414d5455bb57 100644 (file)
@@ -12,6 +12,7 @@
 #include <asm/gpio.h>
 #include <asm/portmux.h>
 
+#ifdef CONFIG_ADI_GPIO1
 #if ANOMALY_05000311 || ANOMALY_05000323
 enum {
        AWA_data = SYSCR,
@@ -774,3 +775,19 @@ void gpio_labels(void)
                        continue;
        }
 }
+#else
+struct gpio_port_t * const gpio_array[] = {
+       (struct gpio_port_t *)PORTA_FER,
+       (struct gpio_port_t *)PORTB_FER,
+       (struct gpio_port_t *)PORTC_FER,
+       (struct gpio_port_t *)PORTD_FER,
+       (struct gpio_port_t *)PORTE_FER,
+       (struct gpio_port_t *)PORTF_FER,
+       (struct gpio_port_t *)PORTG_FER,
+#if defined(CONFIG_BF54x)
+       (struct gpio_port_t *)PORTH_FER,
+       (struct gpio_port_t *)PORTI_FER,
+       (struct gpio_port_t *)PORTJ_FER,
+#endif
+};
+#endif
index 58a619110779ed628e51248defb7ae58b02cbfb1..376ec02b650897fa8a52b15ff38f8cc8abf1a48d 100644 (file)
@@ -8,6 +8,7 @@
 #define __ARCH_BLACKFIN_GPIO_H__
 
 #include <asm-generic/gpio.h>
+#include <asm/portmux.h>
 
 #define gpio_bank(x)   ((x) >> 4)
 #define gpio_bit(x)    (1<<((x) & 0xF))
@@ -141,6 +142,8 @@ struct gpio_port_t {
        unsigned short dummy16;
        unsigned short inen;
 };
+#else
+extern struct gpio_port_t * const gpio_array[];
 #endif
 
 #ifdef ADI_SPECIAL_GPIO_BANKS
index 051073cee3b5d47a2caeb4a9e600e3ed616aa866..88cd65b87fcfa202d941d66c531da7e62426410e 100644 (file)
 #include <common.h>
 #include <asm/errno.h>
 #include <asm/gpio.h>
-#include <asm/portmux.h>
-
-static struct gpio_port_t * const gpio_array[] = {
-       (struct gpio_port_t *)PORTA_FER,
-       (struct gpio_port_t *)PORTB_FER,
-       (struct gpio_port_t *)PORTC_FER,
-       (struct gpio_port_t *)PORTD_FER,
-       (struct gpio_port_t *)PORTE_FER,
-       (struct gpio_port_t *)PORTF_FER,
-       (struct gpio_port_t *)PORTG_FER,
-#if defined(CONFIG_BF54x)
-       (struct gpio_port_t *)PORTH_FER,
-       (struct gpio_port_t *)PORTI_FER,
-       (struct gpio_port_t *)PORTJ_FER,
-#endif
-};
 
 #define RESOURCE_LABEL_SIZE    16
 
@@ -98,7 +82,6 @@ static void port_setup(unsigned gpio, unsigned short usage)
        else
                gpio_array[gpio_bank(gpio)]->port_fer_set = gpio_bit(gpio);
 #endif
-       SSYNC();
 }
 
 inline void portmux_setup(unsigned short per)