summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/blackfin/cpu/Makefile1
-rw-r--r--arch/blackfin/cpu/cmd_gpio.c118
-rw-r--r--arch/blackfin/include/asm/gpio.h53
-rw-r--r--arch/powerpc/config.mk2
-rw-r--r--arch/powerpc/cpu/74xx_7xx/start.S11
-rw-r--r--arch/powerpc/cpu/mpc512x/start.S11
-rw-r--r--arch/powerpc/cpu/mpc5xx/start.S11
-rw-r--r--arch/powerpc/cpu/mpc5xxx/start.S11
-rw-r--r--arch/powerpc/cpu/mpc8220/start.S11
-rw-r--r--arch/powerpc/cpu/mpc824x/start.S11
-rw-r--r--arch/powerpc/cpu/mpc8260/start.S6
-rw-r--r--arch/powerpc/cpu/mpc83xx/start.S11
-rw-r--r--arch/powerpc/cpu/mpc85xx/start.S10
-rw-r--r--arch/powerpc/cpu/mpc86xx/start.S11
-rw-r--r--arch/powerpc/cpu/mpc8xx/start.S11
-rw-r--r--arch/powerpc/cpu/ppc4xx/start.S22
16 files changed, 65 insertions, 246 deletions
diff --git a/arch/blackfin/cpu/Makefile b/arch/blackfin/cpu/Makefile
index 4a9e577..df10f1b 100644
--- a/arch/blackfin/cpu/Makefile
+++ b/arch/blackfin/cpu/Makefile
@@ -18,7 +18,6 @@ CEXTRA := initcode.o
SEXTRA := start.o
SOBJS := interrupt.o cache.o
COBJS-$(CONFIG_BOOTCOUNT_LIMIT) += bootcount.o
-COBJS-$(CONFIG_CMD_GPIO) += cmd_gpio.o
COBJS-y += cpu.o
COBJS-y += gpio.o
COBJS-y += interrupts.o
diff --git a/arch/blackfin/cpu/cmd_gpio.c b/arch/blackfin/cpu/cmd_gpio.c
deleted file mode 100644
index e96413b..0000000
--- a/arch/blackfin/cpu/cmd_gpio.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Control GPIO pins on the fly
- *
- * Copyright (c) 2008-2010 Analog Devices Inc.
- *
- * Licensed under the GPL-2 or later.
- */
-
-#include <common.h>
-#include <command.h>
-#include <linux/ctype.h>
-
-#include <asm/blackfin.h>
-#include <asm/gpio.h>
-
-enum {
- GPIO_INPUT,
- GPIO_SET,
- GPIO_CLEAR,
- GPIO_TOGGLE,
-};
-
-int do_gpio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
- if (argc == 2 && !strcmp(argv[1], "status")) {
- bfin_gpio_labels();
- return 0;
- }
-
- if (argc != 3)
- show_usage:
- return cmd_usage(cmdtp);
-
- /* parse the behavior */
- ulong sub_cmd;
- switch (argv[1][0]) {
- case 'i': sub_cmd = GPIO_INPUT; break;
- case 's': sub_cmd = GPIO_SET; break;
- case 'c': sub_cmd = GPIO_CLEAR; break;
- case 't': sub_cmd = GPIO_TOGGLE; break;
- default: goto show_usage;
- }
-
- /* parse the pin with format: [p][port]<#> */
- const char *str_pin = argv[2];
-
- /* grab the [p]<port> portion */
- ulong port_base;
- if (tolower(*str_pin) == 'p') ++str_pin;
- switch (tolower(*str_pin)) {
-#ifdef GPIO_PA0
- case 'a': port_base = GPIO_PA0; break;
-#endif
-#ifdef GPIO_PB0
- case 'b': port_base = GPIO_PB0; break;
-#endif
-#ifdef GPIO_PC0
- case 'c': port_base = GPIO_PC0; break;
-#endif
-#ifdef GPIO_PD0
- case 'd': port_base = GPIO_PD0; break;
-#endif
-#ifdef GPIO_PE0
- case 'e': port_base = GPIO_PE0; break;
-#endif
-#ifdef GPIO_PF0
- case 'f': port_base = GPIO_PF0; break;
-#endif
-#ifdef GPIO_PG0
- case 'g': port_base = GPIO_PG0; break;
-#endif
-#ifdef GPIO_PH0
- case 'h': port_base = GPIO_PH0; break;
-#endif
-#ifdef GPIO_PI0
- case 'i': port_base = GPIO_PI0; break;
-#endif
-#ifdef GPIO_PJ
- case 'j': port_base = GPIO_PJ0; break;
-#endif
- default: goto show_usage;
- }
-
- /* grab the <#> portion */
- ulong pin = simple_strtoul(str_pin + 1, NULL, 10);
- if (pin > 15)
- goto show_usage;
-
- /* grab the pin before we tweak it */
- ulong gpio = port_base + pin;
- gpio_request(gpio, "cmd_gpio");
-
- /* finally, let's do it: set direction and exec command */
- ulong value;
- if (sub_cmd == GPIO_INPUT) {
- gpio_direction_input(gpio);
- value = gpio_get_value(gpio);
- } else {
- switch (sub_cmd) {
- case GPIO_SET: value = 1; break;
- case GPIO_CLEAR: value = 0; break;
- case GPIO_TOGGLE: value = !gpio_get_value(gpio); break;
- default: goto show_usage;
- }
- gpio_direction_output(gpio, value);
- }
- printf("gpio: pin %lu on port %c (gpio %lu) value is %lu\n",
- pin, *str_pin, gpio, value);
-
- gpio_free(gpio);
-
- return value;
-}
-
-U_BOOT_CMD(gpio, 3, 0, do_gpio,
- "input/set/clear/toggle gpio output pins",
- "<input|set|clear|toggle> <port><pin>\n"
- " - input/set/clear/toggle the specified pin (e.g. PF10)");
diff --git a/arch/blackfin/include/asm/gpio.h b/arch/blackfin/include/asm/gpio.h
index b650ef0..9c0e5d1 100644
--- a/arch/blackfin/include/asm/gpio.h
+++ b/arch/blackfin/include/asm/gpio.h
@@ -196,6 +196,59 @@ static inline int gpio_is_valid(int number)
return number >= 0 && number < MAX_BLACKFIN_GPIOS;
}
+#include <linux/ctype.h>
+
+static inline int name_to_gpio(const char *name)
+{
+ int port_base;
+
+ if (tolower(*name) == 'p') {
+ ++name;
+
+ switch (tolower(*name)) {
+#ifdef GPIO_PA0
+ case 'a': port_base = GPIO_PA0; break;
+#endif
+#ifdef GPIO_PB0
+ case 'b': port_base = GPIO_PB0; break;
+#endif
+#ifdef GPIO_PC0
+ case 'c': port_base = GPIO_PC0; break;
+#endif
+#ifdef GPIO_PD0
+ case 'd': port_base = GPIO_PD0; break;
+#endif
+#ifdef GPIO_PE0
+ case 'e': port_base = GPIO_PE0; break;
+#endif
+#ifdef GPIO_PF0
+ case 'f': port_base = GPIO_PF0; break;
+#endif
+#ifdef GPIO_PG0
+ case 'g': port_base = GPIO_PG0; break;
+#endif
+#ifdef GPIO_PH0
+ case 'h': port_base = GPIO_PH0; break;
+#endif
+#ifdef GPIO_PI0
+ case 'i': port_base = GPIO_PI0; break;
+#endif
+#ifdef GPIO_PJ
+ case 'j': port_base = GPIO_PJ0; break;
+#endif
+ default: return -1;
+ }
+
+ ++name;
+ } else
+ port_base = 0;
+
+ return port_base + simple_strtoul(name, NULL, 10);
+}
+#define name_to_gpio(n) name_to_gpio(n)
+
+#define gpio_status() bfin_gpio_labels()
+
#endif /* __ASSEMBLY__ */
#endif /* __ARCH_BLACKFIN_GPIO_H__ */
diff --git a/arch/powerpc/config.mk b/arch/powerpc/config.mk
index 3afc439..e682071 100644
--- a/arch/powerpc/config.mk
+++ b/arch/powerpc/config.mk
@@ -26,8 +26,6 @@ CROSS_COMPILE ?= ppc_8xx-
CONFIG_STANDALONE_LOAD_ADDR ?= 0x40000
LDFLAGS_FINAL += --gc-sections
PLATFORM_RELFLAGS += -fpic -mrelocatable -ffunction-sections -fdata-sections
-PLATFORM_RELFLAGS += $(call cc-option,-msingle-pic-base,)
-PLATFORM_RELFLAGS += $(call cc-option,-fno-jump-tables,)
PLATFORM_CPPFLAGS += -DCONFIG_PPC -D__powerpc__
PLATFORM_LDFLAGS += -n
diff --git a/arch/powerpc/cpu/74xx_7xx/start.S b/arch/powerpc/cpu/74xx_7xx/start.S
index ab9412a..f6011fc 100644
--- a/arch/powerpc/cpu/74xx_7xx/start.S
+++ b/arch/powerpc/cpu/74xx_7xx/start.S
@@ -274,11 +274,7 @@ in_flash:
stwu r0, -4(r1) /* stack backtraces terminate cleanly */
GET_GOT /* initialize GOT access */
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
+
/* run low-level CPU init code (from Flash) */
bl cpu_init_f
sync
@@ -592,11 +588,6 @@ relocate_code:
mr r10, r5 /* Save copy of Destination Address */
GET_GOT
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
mr r3, r5 /* Destination Address */
lis r4, CONFIG_SYS_MONITOR_BASE@h /* Source Address */
ori r4, r4, CONFIG_SYS_MONITOR_BASE@l
diff --git a/arch/powerpc/cpu/mpc512x/start.S b/arch/powerpc/cpu/mpc512x/start.S
index 632f967..9c2e488 100644
--- a/arch/powerpc/cpu/mpc512x/start.S
+++ b/arch/powerpc/cpu/mpc512x/start.S
@@ -255,11 +255,7 @@ in_flash:
/*------------------------------------------------------*/
GET_GOT /* initialize GOT access */
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
+
/* r3: IMMR */
lis r3, CONFIG_SYS_IMMR@h
/* run low-level CPU init code (in Flash) */
@@ -490,11 +486,6 @@ relocate_code:
mr r10, r5 /* Save copy of Destination Address */
GET_GOT
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
mr r3, r5 /* Destination Address */
lis r4, CONFIG_SYS_MONITOR_BASE@h /* Source Address */
ori r4, r4, CONFIG_SYS_MONITOR_BASE@l
diff --git a/arch/powerpc/cpu/mpc5xx/start.S b/arch/powerpc/cpu/mpc5xx/start.S
index 4fb2047..cc11c8f 100644
--- a/arch/powerpc/cpu/mpc5xx/start.S
+++ b/arch/powerpc/cpu/mpc5xx/start.S
@@ -174,11 +174,7 @@ in_flash:
/*----------------------------------------------------------------------*/
GET_GOT /* initialize GOT access */
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
+
/* r3: IMMR */
bl cpu_init_f /* run low-level CPU init code (from Flash) */
@@ -367,11 +363,6 @@ relocate_code:
mr r10, r5 /* Save copy of monitor destination Address in SRAM */
GET_GOT
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
mr r3, r5 /* Destination Address */
lis r4, CONFIG_SYS_MONITOR_BASE@h /* Source Address */
ori r4, r4, CONFIG_SYS_MONITOR_BASE@l
diff --git a/arch/powerpc/cpu/mpc5xxx/start.S b/arch/powerpc/cpu/mpc5xxx/start.S
index 0a05361..192aa50 100644
--- a/arch/powerpc/cpu/mpc5xxx/start.S
+++ b/arch/powerpc/cpu/mpc5xxx/start.S
@@ -160,11 +160,7 @@ lowboot_reentry:
/*--------------------------------------------------------------*/
GET_GOT /* initialize GOT access */
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
+
/* r3: IMMR */
bl cpu_init_f /* run low-level CPU init code (in Flash)*/
@@ -553,11 +549,6 @@ relocate_code:
mr r10, r5 /* Save copy of Destination Address */
GET_GOT
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
mr r3, r5 /* Destination Address */
lis r4, CONFIG_SYS_MONITOR_BASE@h /* Source Address */
ori r4, r4, CONFIG_SYS_MONITOR_BASE@l
diff --git a/arch/powerpc/cpu/mpc8220/start.S b/arch/powerpc/cpu/mpc8220/start.S
index 1df87a6..300b35c 100644
--- a/arch/powerpc/cpu/mpc8220/start.S
+++ b/arch/powerpc/cpu/mpc8220/start.S
@@ -129,11 +129,7 @@ _start:
/*--------------------------------------------------------------*/
GET_GOT /* initialize GOT access */
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
+
/* r3: IMMR */
bl cpu_init_f /* run low-level CPU init code (in Flash)*/
@@ -526,11 +522,6 @@ relocate_code:
mr r10, r5 /* Save copy of Destination Address */
GET_GOT
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
mr r3, r5 /* Destination Address */
lis r4, CONFIG_SYS_MONITOR_BASE@h /* Source Address */
ori r4, r4, CONFIG_SYS_MONITOR_BASE@l
diff --git a/arch/powerpc/cpu/mpc824x/start.S b/arch/powerpc/cpu/mpc824x/start.S
index cc98875..fc4e922 100644
--- a/arch/powerpc/cpu/mpc824x/start.S
+++ b/arch/powerpc/cpu/mpc824x/start.S
@@ -183,11 +183,7 @@ in_flash:
/*----------------------------------------------------------------------*/
GET_GOT /* initialize GOT access */
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
+
/* r3: IMMR */
bl cpu_init_f /* run low-level CPU init code (from Flash) */
@@ -456,11 +452,6 @@ relocate_code:
mr r10, r5 /* Save copy of Destination Address */
GET_GOT
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
mr r3, r5 /* Destination Address */
#ifdef CONFIG_SYS_RAMBOOT
lis r4, CONFIG_SYS_SDRAM_BASE@h /* Source Address */
diff --git a/arch/powerpc/cpu/mpc8260/start.S b/arch/powerpc/cpu/mpc8260/start.S
index 23151cd..702546e 100644
--- a/arch/powerpc/cpu/mpc8260/start.S
+++ b/arch/powerpc/cpu/mpc8260/start.S
@@ -236,11 +236,7 @@ in_flash:
/*--------------------------------------------------------------*/
GET_GOT /* initialize GOT access */
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
+
/* r3: IMMR */
bl cpu_init_f /* run low-level CPU init code (in Flash)*/
diff --git a/arch/powerpc/cpu/mpc83xx/start.S b/arch/powerpc/cpu/mpc83xx/start.S
index a9acb83..7e60315 100644
--- a/arch/powerpc/cpu/mpc83xx/start.S
+++ b/arch/powerpc/cpu/mpc83xx/start.S
@@ -285,11 +285,7 @@ in_flash:
/*------------------------------------------------------*/
GET_GOT /* initialize GOT access */
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
+
/* r3: IMMR */
lis r3, CONFIG_SYS_IMMR@h
/* run low-level CPU init code (in Flash)*/
@@ -826,11 +822,6 @@ relocate_code:
mr r10, r5 /* Save copy of Destination Address */
GET_GOT
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
mr r3, r5 /* Destination Address */
lis r4, CONFIG_SYS_MONITOR_BASE@h /* Source Address */
ori r4, r4, CONFIG_SYS_MONITOR_BASE@l
diff --git a/arch/powerpc/cpu/mpc85xx/start.S b/arch/powerpc/cpu/mpc85xx/start.S
index 3623357..5777493 100644
--- a/arch/powerpc/cpu/mpc85xx/start.S
+++ b/arch/powerpc/cpu/mpc85xx/start.S
@@ -421,11 +421,6 @@ _start_cont:
stw r0,+12(r1) /* Save return addr (underflow vect) */
GET_GOT
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
bl cpu_init_early_f
/* switch back to AS = 0 */
@@ -926,11 +921,6 @@ relocate_code:
mr r10,r5 /* Save copy of Destination Address */
GET_GOT
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
mr r3,r5 /* Destination Address */
lis r4,CONFIG_SYS_MONITOR_BASE@h /* Source Address */
ori r4,r4,CONFIG_SYS_MONITOR_BASE@l
diff --git a/arch/powerpc/cpu/mpc86xx/start.S b/arch/powerpc/cpu/mpc86xx/start.S
index 2ec7fd4..3e3c21e 100644
--- a/arch/powerpc/cpu/mpc86xx/start.S
+++ b/arch/powerpc/cpu/mpc86xx/start.S
@@ -255,11 +255,7 @@ addr_trans_enabled:
stwu r0, -4(r1) /* stack backtraces terminate cleanly */
GET_GOT /* initialize GOT access */
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
+
/* run low-level CPU init code (from Flash) */
bl cpu_init_f
sync
@@ -624,11 +620,6 @@ relocate_code:
mr r10, r5 /* Save copy of Destination Address */
GET_GOT
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
mr r3, r5 /* Destination Address */
lis r4, CONFIG_SYS_MONITOR_BASE@h /* Source Address */
ori r4, r4, CONFIG_SYS_MONITOR_BASE@l
diff --git a/arch/powerpc/cpu/mpc8xx/start.S b/arch/powerpc/cpu/mpc8xx/start.S
index f8256bf..fe3daa2 100644
--- a/arch/powerpc/cpu/mpc8xx/start.S
+++ b/arch/powerpc/cpu/mpc8xx/start.S
@@ -188,11 +188,7 @@ in_flash:
/*----------------------------------------------------------------------*/
GET_GOT /* initialize GOT access */
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
+
/* r3: IMMR */
bl cpu_init_f /* run low-level CPU init code (from Flash) */
@@ -477,11 +473,6 @@ relocate_code:
mr r10, r5 /* Save copy of Destination Address */
GET_GOT
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
mr r3, r5 /* Destination Address */
lis r4, CONFIG_SYS_MONITOR_BASE@h /* Source Address */
ori r4, r4, CONFIG_SYS_MONITOR_BASE@l
diff --git a/arch/powerpc/cpu/ppc4xx/start.S b/arch/powerpc/cpu/ppc4xx/start.S
index aa03d9a..b43e22c 100644
--- a/arch/powerpc/cpu/ppc4xx/start.S
+++ b/arch/powerpc/cpu/ppc4xx/start.S
@@ -262,11 +262,6 @@
bl reconfig_tlb0
#endif
GET_GOT
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
bl cpu_init_f /* run low-level CPU init code (from Flash) */
bl board_init_f
/* NOTREACHED - board_init_f() does not return */
@@ -804,11 +799,7 @@ _start:
ori r0,r0, RESET_VECTOR@l
stwu r1,-8(r1) /* Save back chain and move SP */
stw r0,+12(r1) /* Save return addr (underflow vect) */
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
+
#ifdef CONFIG_NAND_SPL
bl nand_boot_common /* will not return */
#else
@@ -923,11 +914,7 @@ _start:
stwu r0, -4(r1) /* stack backtraces terminate cleanly */
GET_GOT /* initialize GOT access */
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
+
bl board_init_f /* run first part of init code (from Flash) */
/* NOTREACHED - board_init_f() does not return */
@@ -1192,11 +1179,6 @@ _start:
stw r0, +12(r1) /* Save return addr (underflow vect) */
#endif /* CONFIG_SYS_INIT_DCACHE_CS */
-#if defined(__pic__) && __pic__ == 1
- /* Needed for upcoming -msingle-pic-base */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
-#endif
#ifdef CONFIG_NAND_SPL
bl nand_boot_common /* will not return */
#else