summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>2011-12-31 16:21:34 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2012-01-02 12:08:25 +0100
commit1c2e95d654da57043ac3ab94cdcdc2e3fea1c9d8 (patch)
treef512a7041d1757ae188ca414bf96a76fb0f9d54e /arch
parentb609ac72c6645472e26879cd56a04025c7d99bbf (diff)
downloadbarebox-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.c12
-rw-r--r--arch/arm/mach-at91/at91sam9260.c9
-rw-r--r--arch/arm/mach-at91/at91sam9261.c9
-rw-r--r--arch/arm/mach-at91/at91sam9263.c15
-rw-r--r--arch/arm/mach-at91/at91sam926x_lowlevel_init.c10
-rw-r--r--arch/arm/mach-at91/at91sam9g45.c15
-rw-r--r--arch/arm/mach-at91/gpio.c13
-rw-r--r--arch/arm/mach-at91/include/mach/at91rm9200.h9
-rw-r--r--arch/arm/mach-at91/include/mach/at91sam9260.h7
-rw-r--r--arch/arm/mach-at91/include/mach/at91sam9261.h7
-rw-r--r--arch/arm/mach-at91/include/mach/at91sam9263.h11
-rw-r--r--arch/arm/mach-at91/include/mach/at91sam9g45.h11
-rw-r--r--arch/arm/mach-at91/include/mach/gpio.h4
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;
};