diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2011-12-31 16:21:34 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-01-02 12:08:25 +0100 |
commit | 1c2e95d654da57043ac3ab94cdcdc2e3fea1c9d8 (patch) | |
tree | f512a7041d1757ae188ca414bf96a76fb0f9d54e /arch | |
parent | b609ac72c6645472e26879cd56a04025c7d99bbf (diff) | |
download | barebox-1c2e95d654da57043ac3ab94cdcdc2e3fea1c9d8.tar.gz barebox-1c2e95d654da57043ac3ab94cdcdc2e3fea1c9d8.tar.xz |
at91/gpio: simplify resources
drop irq id and rebase instead of of offset
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-at91/at91rm9200.c | 12 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9260.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9261.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9263.c | 15 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam926x_lowlevel_init.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9g45.c | 15 | ||||
-rw-r--r-- | arch/arm/mach-at91/gpio.c | 13 | ||||
-rw-r--r-- | arch/arm/mach-at91/include/mach/at91rm9200.h | 9 | ||||
-rw-r--r-- | arch/arm/mach-at91/include/mach/at91sam9260.h | 7 | ||||
-rw-r--r-- | arch/arm/mach-at91/include/mach/at91sam9261.h | 7 | ||||
-rw-r--r-- | arch/arm/mach-at91/include/mach/at91sam9263.h | 11 | ||||
-rw-r--r-- | arch/arm/mach-at91/include/mach/at91sam9g45.h | 11 | ||||
-rw-r--r-- | arch/arm/mach-at91/include/mach/gpio.h | 4 |
13 files changed, 52 insertions, 80 deletions
diff --git a/arch/arm/mach-at91/at91rm9200.c b/arch/arm/mach-at91/at91rm9200.c index b902eab59c..5e3fdeb31c 100644 --- a/arch/arm/mach-at91/at91rm9200.c +++ b/arch/arm/mach-at91/at91rm9200.c @@ -216,20 +216,16 @@ static void __init at91rm9200_register_clocks(void) static struct at91_gpio_bank at91rm9200_gpio[] = { { - .id = AT91RM9200_ID_PIOA, - .offset = AT91_PIOA, + .regbase = IOMEM(AT91_BASE_PIOA), .clock = &pioA_clk, }, { - .id = AT91RM9200_ID_PIOB, - .offset = AT91_PIOB, + .regbase = IOMEM(AT91_BASE_PIOB), .clock = &pioB_clk, }, { - .id = AT91RM9200_ID_PIOC, - .offset = AT91_PIOC, + .regbase = IOMEM(AT91_BASE_PIOC), .clock = &pioC_clk, }, { - .id = AT91RM9200_ID_PIOD, - .offset = AT91_PIOD, + .regbase = IOMEM(AT91_BASE_PIOD), .clock = &pioD_clk, } }; diff --git a/arch/arm/mach-at91/at91sam9260.c b/arch/arm/mach-at91/at91sam9260.c index 3af5747f8a..cf9e51191c 100644 --- a/arch/arm/mach-at91/at91sam9260.c +++ b/arch/arm/mach-at91/at91sam9260.c @@ -223,16 +223,13 @@ static void __init at91sam9260_register_clocks(void) static struct at91_gpio_bank at91sam9260_gpio[] = { { - .id = AT91SAM9260_ID_PIOA, - .offset = AT91_PIOA, + .regbase = IOMEM(AT91_BASE_PIOA), .clock = &pioA_clk, }, { - .id = AT91SAM9260_ID_PIOB, - .offset = AT91_PIOB, + .regbase = IOMEM(AT91_BASE_PIOB), .clock = &pioB_clk, }, { - .id = AT91SAM9260_ID_PIOC, - .offset = AT91_PIOC, + .regbase = IOMEM(AT91_BASE_PIOC), .clock = &pioC_clk, } }; diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c index b1e09ef53f..d20b2502cd 100644 --- a/arch/arm/mach-at91/at91sam9261.c +++ b/arch/arm/mach-at91/at91sam9261.c @@ -216,16 +216,13 @@ static void at91sam9261_register_clocks(void) static struct at91_gpio_bank at91sam9261_gpio[] = { { - .id = AT91SAM9261_ID_PIOA, - .offset = AT91_PIOA, + .regbase = IOMEM(AT91_BASE_PIOA), .clock = &pioA_clk, }, { - .id = AT91SAM9261_ID_PIOB, - .offset = AT91_PIOB, + .regbase = IOMEM(AT91_BASE_PIOB), .clock = &pioB_clk, }, { - .id = AT91SAM9261_ID_PIOC, - .offset = AT91_PIOC, + .regbase = IOMEM(AT91_BASE_PIOC), .clock = &pioC_clk, } }; diff --git a/arch/arm/mach-at91/at91sam9263.c b/arch/arm/mach-at91/at91sam9263.c index eef7ad08ef..b3116d33d3 100644 --- a/arch/arm/mach-at91/at91sam9263.c +++ b/arch/arm/mach-at91/at91sam9263.c @@ -230,24 +230,19 @@ static void __init at91sam9263_register_clocks(void) static struct at91_gpio_bank at91sam9263_gpio[] = { { - .id = AT91SAM9263_ID_PIOA, - .offset = AT91_PIOA, + .regbase = IOMEM(AT91_BASE_PIOA), .clock = &pioA_clk, }, { - .id = AT91SAM9263_ID_PIOB, - .offset = AT91_PIOB, + .regbase = IOMEM(AT91_BASE_PIOB), .clock = &pioB_clk, }, { - .id = AT91SAM9263_ID_PIOCDE, - .offset = AT91_PIOC, + .regbase = IOMEM(AT91_BASE_PIOC), .clock = &pioCDE_clk, }, { - .id = AT91SAM9263_ID_PIOCDE, - .offset = AT91_PIOD, + .regbase = IOMEM(AT91_BASE_PIOD), .clock = &pioCDE_clk, }, { - .id = AT91SAM9263_ID_PIOCDE, - .offset = AT91_PIOE, + .regbase = IOMEM(AT91_BASE_PIOE), .clock = &pioCDE_clk, } }; diff --git a/arch/arm/mach-at91/at91sam926x_lowlevel_init.c b/arch/arm/mach-at91/at91sam926x_lowlevel_init.c index b664afcb44..211074cc3f 100644 --- a/arch/arm/mach-at91/at91sam926x_lowlevel_init.c +++ b/arch/arm/mach-at91/at91sam926x_lowlevel_init.c @@ -42,12 +42,12 @@ void __naked __bare_init board_init_lowlevel(void) /* configure PIOx as EBI0 D[16-31] */ #ifdef CONFIG_ARCH_AT91SAM9263 - at91_sys_write(AT91_PIOD + PIO_PDR, CONFIG_SYS_PIOD_PDR_VAL1); - at91_sys_write(AT91_PIOD + PIO_PUDR, CONFIG_SYS_PIOD_PPUDR_VAL); - at91_sys_write(AT91_PIOD + PIO_ASR, CONFIG_SYS_PIOD_PPUDR_VAL); + __raw_writel(CONFIG_SYS_PIOD_PDR_VAL1, AT91_BASE_PIOD + PIO_PDR); + __raw_writel(CONFIG_SYS_PIOD_PPUDR_VAL, AT91_BASE_PIOD + PIO_PUDR); + __raw_writel(CONFIG_SYS_PIOD_PPUDR_VAL, AT91_BASE_PIOD + PIO_ASR); #else - at91_sys_write(AT91_PIOC + PIO_PDR, CONFIG_SYS_PIOC_PDR_VAL1); - at91_sys_write(AT91_PIOC + PIO_PUDR, CONFIG_SYS_PIOC_PPUDR_VAL); + __raw_writel(CONFIG_SYS_PIOC_PDR_VAL1, AT91_BASE_PIOC + PIO_PDR); + __raw_writel(CONFIG_SYS_PIOC_PPUDR_VAL, AT91_BASE_PIOC + PIO_PUDR); #endif #if defined(AT91_MATRIX_EBI0CSA) diff --git a/arch/arm/mach-at91/at91sam9g45.c b/arch/arm/mach-at91/at91sam9g45.c index 6b9fbc5542..a6717f1968 100644 --- a/arch/arm/mach-at91/at91sam9g45.c +++ b/arch/arm/mach-at91/at91sam9g45.c @@ -242,24 +242,19 @@ static void __init at91sam9g45_register_clocks(void) static struct at91_gpio_bank at91sam9g45_gpio[] = { { - .id = AT91SAM9G45_ID_PIOA, - .offset = AT91_PIOA, + .regbase = IOMEM(AT91_BASE_PIOA), .clock = &pioA_clk, }, { - .id = AT91SAM9G45_ID_PIOB, - .offset = AT91_PIOB, + .regbase = IOMEM(AT91_BASE_PIOB), .clock = &pioB_clk, }, { - .id = AT91SAM9G45_ID_PIOC, - .offset = AT91_PIOC, + .regbase = IOMEM(AT91_BASE_PIOC), .clock = &pioC_clk, }, { - .id = AT91SAM9G45_ID_PIODE, - .offset = AT91_PIOD, + .regbase = IOMEM(AT91_BASE_PIOD), .clock = &pioDE_clk, }, { - .id = AT91SAM9G45_ID_PIODE, - .offset = AT91_PIOE, + .regbase = IOMEM(AT91_BASE_PIOE), .clock = &pioDE_clk, } }; diff --git a/arch/arm/mach-at91/gpio.c b/arch/arm/mach-at91/gpio.c index c34df0520e..06da5af2f8 100644 --- a/arch/arm/mach-at91/gpio.c +++ b/arch/arm/mach-at91/gpio.c @@ -235,23 +235,14 @@ EXPORT_SYMBOL(gpio_direction_output); int at91_gpio_init(struct at91_gpio_bank *data, int nr_banks) { - unsigned i; - struct at91_gpio_bank *last; + unsigned i; gpio = data; gpio_banks = nr_banks; - for (i = 0, last = NULL; i < nr_banks; i++, last = data, data++) { - data->chipbase = PIN_BASE + i * 32; - data->regbase = data->offset + - (void __iomem *)AT91_BASE_SYS; - + for (i = 0; i < nr_banks; i++, data++) { /* enable PIO controller's clock */ clk_enable(data->clock); - - /* AT91SAM9263_ID_PIOCDE groups PIOC, PIOD, PIOE */ - if (last && last->id == data->id) - last->next = data; } return 0; diff --git a/arch/arm/mach-at91/include/mach/at91rm9200.h b/arch/arm/mach-at91/include/mach/at91rm9200.h index 985977fd3f..39b1e15c44 100644 --- a/arch/arm/mach-at91/include/mach/at91rm9200.h +++ b/arch/arm/mach-at91/include/mach/at91rm9200.h @@ -84,15 +84,16 @@ */ #define AT91_AIC (0xfffff000 - AT91_BASE_SYS) /* Advanced Interrupt Controller */ #define AT91_DBGU (0xfffff200 - AT91_BASE_SYS) /* Debug Unit */ -#define AT91_PIOA (0xfffff400 - AT91_BASE_SYS) /* PIO Controller A */ -#define AT91_PIOB (0xfffff600 - AT91_BASE_SYS) /* PIO Controller B */ -#define AT91_PIOC (0xfffff800 - AT91_BASE_SYS) /* PIO Controller C */ -#define AT91_PIOD (0xfffffa00 - AT91_BASE_SYS) /* PIO Controller D */ #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) /* Power Management Controller */ #define AT91_ST (0xfffffd00 - AT91_BASE_SYS) /* System Timer */ #define AT91_RTC (0xfffffe00 - AT91_BASE_SYS) /* Real-Time Clock */ #define AT91_MC (0xffffff00 - AT91_BASE_SYS) /* Memory Controllers */ +#define AT91_BASE_PIOA 0xfffff400 /* PIO Controller A */ +#define AT91_BASE_PIOB 0xfffff600 /* PIO Controller B */ +#define AT91_BASE_PIOC 0xfffff800 /* PIO Controller C */ +#define AT91_BASE_PIOD 0xfffffa00 /* PIO Controller D */ + #define AT91_USART0 AT91RM9200_BASE_US0 #define AT91_USART1 AT91RM9200_BASE_US1 #define AT91_USART2 AT91RM9200_BASE_US2 diff --git a/arch/arm/mach-at91/include/mach/at91sam9260.h b/arch/arm/mach-at91/include/mach/at91sam9260.h index 771e7563c9..72dc93199d 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9260.h +++ b/arch/arm/mach-at91/include/mach/at91sam9260.h @@ -87,9 +87,6 @@ #define AT91_CCFG (0xffffef10 - AT91_BASE_SYS) #define AT91_AIC (0xfffff000 - AT91_BASE_SYS) #define AT91_DBGU (0xfffff200 - AT91_BASE_SYS) -#define AT91_PIOA (0xfffff400 - AT91_BASE_SYS) -#define AT91_PIOB (0xfffff600 - AT91_BASE_SYS) -#define AT91_PIOC (0xfffff800 - AT91_BASE_SYS) #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) #define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) #define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS) @@ -98,6 +95,10 @@ #define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) +#define AT91_BASE_PIOA 0xfffff400 +#define AT91_BASE_PIOB 0xfffff600 +#define AT91_BASE_PIOC 0xfffff800 + #define AT91_USART0 AT91SAM9260_BASE_US0 #define AT91_USART1 AT91SAM9260_BASE_US1 #define AT91_USART2 AT91SAM9260_BASE_US2 diff --git a/arch/arm/mach-at91/include/mach/at91sam9261.h b/arch/arm/mach-at91/include/mach/at91sam9261.h index c863887326..3be80870cf 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9261.h +++ b/arch/arm/mach-at91/include/mach/at91sam9261.h @@ -73,9 +73,6 @@ #define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS) #define AT91_AIC (0xfffff000 - AT91_BASE_SYS) #define AT91_DBGU (0xfffff200 - AT91_BASE_SYS) -#define AT91_PIOA (0xfffff400 - AT91_BASE_SYS) -#define AT91_PIOB (0xfffff600 - AT91_BASE_SYS) -#define AT91_PIOC (0xfffff800 - AT91_BASE_SYS) #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) #define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) #define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS) @@ -84,6 +81,10 @@ #define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) +#define AT91_BASE_PIOA 0xfffff400 +#define AT91_BASE_PIOB 0xfffff600 +#define AT91_BASE_PIOC 0xfffff800 + #define AT91_USART0 AT91SAM9261_BASE_US0 #define AT91_USART1 AT91SAM9261_BASE_US1 #define AT91_USART2 AT91SAM9261_BASE_US2 diff --git a/arch/arm/mach-at91/include/mach/at91sam9263.h b/arch/arm/mach-at91/include/mach/at91sam9263.h index 7bab1a4b10..64f4fccefe 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9263.h +++ b/arch/arm/mach-at91/include/mach/at91sam9263.h @@ -87,11 +87,6 @@ #define AT91_CCFG (0xffffed10 - AT91_BASE_SYS) #define AT91_DBGU (0xffffee00 - AT91_BASE_SYS) #define AT91_AIC (0xfffff000 - AT91_BASE_SYS) -#define AT91_PIOA (0xfffff200 - AT91_BASE_SYS) -#define AT91_PIOB (0xfffff400 - AT91_BASE_SYS) -#define AT91_PIOC (0xfffff600 - AT91_BASE_SYS) -#define AT91_PIOD (0xfffff800 - AT91_BASE_SYS) -#define AT91_PIOE (0xfffffa00 - AT91_BASE_SYS) #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) #define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) #define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS) @@ -101,6 +96,12 @@ #define AT91_RTT1 (0xfffffd50 - AT91_BASE_SYS) #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) +#define AT91_BASE_PIOA 0xfffff200 +#define AT91_BASE_PIOB 0xfffff400 +#define AT91_BASE_PIOC 0xfffff600 +#define AT91_BASE_PIOD 0xfffff800 +#define AT91_BASE_PIOE 0xfffffa00 + #define AT91_USART0 AT91SAM9263_BASE_US0 #define AT91_USART1 AT91SAM9263_BASE_US1 #define AT91_USART2 AT91SAM9263_BASE_US2 diff --git a/arch/arm/mach-at91/include/mach/at91sam9g45.h b/arch/arm/mach-at91/include/mach/at91sam9g45.h index c5c7f497d4..18fa6c50ff 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9g45.h +++ b/arch/arm/mach-at91/include/mach/at91sam9g45.h @@ -97,11 +97,6 @@ #define AT91_DMA (0xffffec00 - AT91_BASE_SYS) #define AT91_DBGU (0xffffee00 - AT91_BASE_SYS) #define AT91_AIC (0xfffff000 - AT91_BASE_SYS) -#define AT91_PIOA (0xfffff200 - AT91_BASE_SYS) -#define AT91_PIOB (0xfffff400 - AT91_BASE_SYS) -#define AT91_PIOC (0xfffff600 - AT91_BASE_SYS) -#define AT91_PIOD (0xfffff800 - AT91_BASE_SYS) -#define AT91_PIOE (0xfffffa00 - AT91_BASE_SYS) #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) #define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) #define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS) @@ -111,6 +106,12 @@ #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) #define AT91_RTC (0xfffffdb0 - AT91_BASE_SYS) +#define AT91_BASE_PIOA 0xfffff200 +#define AT91_BASE_PIOB 0xfffff400 +#define AT91_BASE_PIOC 0xfffff600 +#define AT91_BASE_PIOD 0xfffff800 +#define AT91_BASE_PIOE 0xfffffa00 + #define AT91_USART0 AT91SAM9G45_BASE_US0 #define AT91_USART1 AT91SAM9G45_BASE_US1 #define AT91_USART2 AT91SAM9G45_BASE_US2 diff --git a/arch/arm/mach-at91/include/mach/gpio.h b/arch/arm/mach-at91/include/mach/gpio.h index f3239f5f42..95a4bd479b 100644 --- a/arch/arm/mach-at91/include/mach/gpio.h +++ b/arch/arm/mach-at91/include/mach/gpio.h @@ -236,11 +236,7 @@ int at91_set_gpio_value(unsigned pin, int value); int at91_get_gpio_value(unsigned pin); struct at91_gpio_bank { - unsigned chipbase; /* bank's first GPIO number */ void __iomem *regbase; /* base of register bank */ - struct at91_gpio_bank *next; /* bank sharing same IRQ/clock/... */ - unsigned short id; /* peripheral ID */ - unsigned long offset; /* offset from system peripheral base */ struct clk *clock; }; |