Change the Nomadik GPIO driver to get the base addresses from platform specific code, since it will be used on multiple platforms with different base addresses.
Acked-by: Alessandro Rubini <rub...@unipv.it> Acked-by: Michael Brandt <michael.bra...@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vinc...@stericsson.com> --- board/st/nhk8815/nhk8815.c | 9 +++++++++ drivers/gpio/nomadik_gpio.c | 11 ++--------- include/configs/nhk8815.h | 1 + include/nomadik.h | 2 ++ 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/board/st/nhk8815/nhk8815.c b/board/st/nhk8815/nhk8815.c index fc5d3b8..08fb332 100644 --- a/board/st/nhk8815/nhk8815.c +++ b/board/st/nhk8815/nhk8815.c @@ -32,6 +32,15 @@ DECLARE_GLOBAL_DATA_PTR; +#ifdef CONFIG_NOMADIK_GPIO +unsigned long nmk_gpio_base[CONFIG_NOMADIK_GPIO_NUM_BANKS] = { + NOMADIK_GPIO0_BASE, + NOMADIK_GPIO1_BASE, + NOMADIK_GPIO2_BASE, + NOMADIK_GPIO3_BASE +}; +#endif + #ifdef CONFIG_SHOW_BOOT_PROGRESS void show_boot_progress(int progress) { diff --git a/drivers/gpio/nomadik_gpio.c b/drivers/gpio/nomadik_gpio.c index d084235..721c167 100644 --- a/drivers/gpio/nomadik_gpio.c +++ b/drivers/gpio/nomadik_gpio.c @@ -24,13 +24,6 @@ #include <asm/io.h> #include <nomadik.h> -static unsigned long gpio_base[4] = { - NOMADIK_GPIO0_BASE, - NOMADIK_GPIO1_BASE, - NOMADIK_GPIO2_BASE, - NOMADIK_GPIO3_BASE -}; - enum gpio_registers { GPIO_DAT = 0x00, /* data register */ GPIO_DATS = 0x04, /* data set */ @@ -45,12 +38,12 @@ enum gpio_registers { static inline unsigned long gpio_to_base(int gpio) { - if ((gpio / 32) >= ARRAY_SIZE(gpio_base)) { + if ((gpio / 32) >= ARRAY_SIZE(nmk_gpio_base)) { printf("nomadik-gpio: invalid gpio %d\n", gpio); return 0; } - return gpio_base[gpio / 32]; + return nmk_gpio_base[gpio / 32]; } static inline u32 gpio_to_bit(int gpio) diff --git a/include/configs/nhk8815.h b/include/configs/nhk8815.h index f882715..c7700b3 100644 --- a/include/configs/nhk8815.h +++ b/include/configs/nhk8815.h @@ -101,6 +101,7 @@ /* GPIO */ #define CONFIG_NOMADIK_GPIO +#define CONFIG_NOMADIK_GPIO_NUM_BANKS 4 /* serial port (PL011) configuration */ #define CONFIG_PL011_SERIAL diff --git a/include/nomadik.h b/include/nomadik.h index 1d3c9ce..72f7e88 100644 --- a/include/nomadik.h +++ b/include/nomadik.h @@ -34,6 +34,8 @@ enum nmk_af { /* alternate function settings */ GPIO_ALT_C }; +extern unsigned long nmk_gpio_base[CONFIG_NOMADIK_GPIO_NUM_BANKS]; + extern void nmk_gpio_af(int gpio, int alternate_function); extern void nmk_gpio_dir(int gpio, int dir); extern void nmk_gpio_set(int gpio, int val); -- 1.7.0 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot