at91/gpio: make gpio register base soc independant
PATCH 1/3 at91/gpio: make gpio register base soc independant
--- arch/arm/mach-at91/at91cap9.c | 8 ++++---- arch/arm/mach-at91/at91rm9200.c | 8 ++++---- arch/arm/mach-at91/at91sam9260.c | 6 +++--- arch/arm/mach-at91/at91sam9261.c | 6 +++--- arch/arm/mach-at91/at91sam9263.c | 10 +++++----- arch/arm/mach-at91/at91sam9g45.c | 10 +++++----- arch/arm/mach-at91/at91sam9rl.c | 8 ++++---- arch/arm/mach-at91/generic.h | 2 +- arch/arm/mach-at91/gpio.c | 8 ++++++-- arch/arm/mach-at91/include/mach/at91cap9.h | 9 +++++---- arch/arm/mach-at91/include/mach/at91rm9200.h | 9 +++++---- arch/arm/mach-at91/include/mach/at91sam9260.h | 7 ++++--- arch/arm/mach-at91/include/mach/at91sam9261.h | 7 ++++--- arch/arm/mach-at91/include/mach/at91sam9263.h | 11 ++++++----- arch/arm/mach-at91/include/mach/at91sam9g45.h | 11 ++++++----- arch/arm/mach-at91/include/mach/at91sam9rl.h | 9 +++++---- 16 files changed, 70 insertions(+), 59 deletions(-)
arch/arm/mach-at91/at91cap9.c +4 -4
@@ -296,19 +296,19 @@ void __init at91cap9_set_console_clock(int id)static struct at91_gpio_bank at91cap9_gpio[] = { { .id =AT91CAP9_ID_PIOABCD , - .offset =AT91_PIOA , + .regbase =AT91CAP9_BASE_PIOA , .clock = &pioABCD_clk, }, { .id =AT91CAP9_ID_PIOABCD , - .offset =AT91_PIOB , + .regbase =AT91CAP9_BASE_PIOB , .clock = &pioABCD_clk, }, { .id =AT91CAP9_ID_PIOABCD , - .offset =AT91_PIOC , + .regbase =AT91CAP9_BASE_PIOC , .clock = &pioABCD_clk, }, { .id =AT91CAP9_ID_PIOABCD , - .offset =AT91_PIOD , + .regbase =AT91CAP9_BASE_PIOD , .clock = &pioABCD_clk, } };
arch/arm/mach-at91/at91rm9200.c +4 -4
@@ -271,19 +271,19 @@ void __init at91rm9200_set_console_clock(int id)static struct at91_gpio_bank at91rm9200_gpio[] = { { .id =AT91RM9200_ID_PIOA , - .offset =AT91_PIOA , + .regbase =AT91RM9200_BASE_PIOA , .clock = &pioA_clk, }, { .id =AT91RM9200_ID_PIOB , - .offset =AT91_PIOB , + .regbase =AT91RM9200_BASE_PIOB , .clock = &pioB_clk, }, { .id =AT91RM9200_ID_PIOC , - .offset =AT91_PIOC , + .regbase =AT91RM9200_BASE_PIOC , .clock = &pioC_clk, }, { .id =AT91RM9200_ID_PIOD , - .offset =AT91_PIOD , + .regbase =AT91RM9200_BASE_PIOD , .clock = &pioD_clk, } };
arch/arm/mach-at91/at91sam9260.c +3 -3
@@ -265,15 +265,15 @@ void __init at91sam9260_set_console_clock(int id)static struct at91_gpio_bank at91sam9260_gpio[] = { { .id =AT91SAM9260_ID_PIOA , - .offset =AT91_PIOA , + .regbase =AT91SAM9260_BASE_PIOA , .clock = &pioA_clk, }, { .id =AT91SAM9260_ID_PIOB , - .offset =AT91_PIOB , + .regbase =AT91SAM9260_BASE_PIOB , .clock = &pioB_clk, }, { .id =AT91SAM9260_ID_PIOC , - .offset =AT91_PIOC , + .regbase =AT91SAM9260_BASE_PIOC , .clock = &pioC_clk, } };
arch/arm/mach-at91/at91sam9261.c +3 -3
@@ -254,15 +254,15 @@ void __init at91sam9261_set_console_clock(int id)static struct at91_gpio_bank at91sam9261_gpio[] = { { .id =AT91SAM9261_ID_PIOA , - .offset =AT91_PIOA , + .regbase =AT91SAM9261_BASE_PIOA , .clock = &pioA_clk, }, { .id =AT91SAM9261_ID_PIOB , - .offset =AT91_PIOB , + .regbase =AT91SAM9261_BASE_PIOB , .clock = &pioB_clk, }, { .id =AT91SAM9261_ID_PIOC , - .offset =AT91_PIOC , + .regbase =AT91SAM9261_BASE_PIOC , .clock = &pioC_clk, } };
arch/arm/mach-at91/at91sam9263.c +5 -5
@@ -266,23 +266,23 @@ void __init at91sam9263_set_console_clock(int id)static struct at91_gpio_bank at91sam9263_gpio[] = { { .id =AT91SAM9263_ID_PIOA , - .offset =AT91_PIOA , + .regbase =AT91SAM9263_BASE_PIOA , .clock = &pioA_clk, }, { .id =AT91SAM9263_ID_PIOB , - .offset =AT91_PIOB , + .regbase =AT91SAM9263_BASE_PIOB , .clock = &pioB_clk, }, { .id =AT91SAM9263_ID_PIOCDE , - .offset =AT91_PIOC , + .regbase =AT91SAM9263_BASE_PIOC , .clock = &pioCDE_clk, }, { .id =AT91SAM9263_ID_PIOCDE , - .offset =AT91_PIOD , + .regbase =AT91SAM9263_BASE_PIOD , .clock = &pioCDE_clk, }, { .id =AT91SAM9263_ID_PIOCDE , - .offset =AT91_PIOE , + .regbase =AT91SAM9263_BASE_PIOE , .clock = &pioCDE_clk, } };
arch/arm/mach-at91/at91sam9g45.c +5 -5
@@ -282,23 +282,23 @@ void __init at91sam9g45_set_console_clock(int id)static struct at91_gpio_bank at91sam9g45_gpio[] = { { .id =AT91SAM9G45_ID_PIOA , - .offset =AT91_PIOA , + .regbase =AT91SAM9G45_BASE_PIOA , .clock = &pioA_clk, }, { .id =AT91SAM9G45_ID_PIOB , - .offset =AT91_PIOB , + .regbase =AT91SAM9G45_BASE_PIOB , .clock = &pioB_clk, }, { .id =AT91SAM9G45_ID_PIOC , - .offset =AT91_PIOC , + .regbase =AT91SAM9G45_BASE_PIOC , .clock = &pioC_clk, }, { .id =AT91SAM9G45_ID_PIODE , - .offset =AT91_PIOD , + .regbase =AT91SAM9G45_BASE_PIOD , .clock = &pioDE_clk, }, { .id =AT91SAM9G45_ID_PIODE , - .offset =AT91_PIOE , + .regbase =AT91SAM9G45_BASE_PIOE , .clock = &pioDE_clk, } };
arch/arm/mach-at91/at91sam9rl.c +4 -4
@@ -246,19 +246,19 @@ void __init at91sam9rl_set_console_clock(int id)static struct at91_gpio_bank at91sam9rl_gpio[] = { { .id =AT91SAM9RL_ID_PIOA , - .offset =AT91_PIOA , + .regbase =AT91SAM9RL_BASE_PIOA , .clock = &pioA_clk, }, { .id =AT91SAM9RL_ID_PIOB , - .offset =AT91_PIOB , + .regbase =AT91SAM9RL_BASE_PIOB , .clock = &pioB_clk, }, { .id =AT91SAM9RL_ID_PIOC , - .offset =AT91_PIOC , + .regbase =AT91SAM9RL_BASE_PIOC , .clock = &pioC_clk, }, { .id =AT91SAM9RL_ID_PIOD , - .offset =AT91_PIOD , + .regbase =AT91SAM9RL_BASE_PIOD , .clock = &pioD_clk, } };
arch/arm/mach-at91/generic.h +1 -1
@@ -65,7 +65,7 @@ extern void at91sam9_alt_reset(void);struct at91_gpio_bank {unsigned short id;/* peripheral ID */ -unsigned long offset;/* offset from system peripheral base */ +unsigned long regbase;/* offset from system peripheral base */ struct clk *clock;/* associated clock */ };extern void __init at91_gpio_init (struct at91_gpio_bank *,int nr_banks);
arch/arm/mach-at91/gpio.c +6 -2
@@ -616,8 +616,12 @@ void __init at91_gpio_init(struct at91_gpio_bank *data, int nr_banks) at91_gpio->bank = &data[i]; at91_gpio->chip.base =PIN_BASE + i *32 ; - at91_gpio->regbase = at91_gpio->bank->offset + - (void __iomem *)AT91_VA_BASE_SYS ; + + at91_gpio->regbase =ioremap (at91_gpio->bank->regbase,512 ); +if (!at91_gpio->regbase) { +pr_err ("at91_gpio.%d, failed to map registers, ignoring.\n" , i); +continue ; + }/* enable PIO controller's clock */ clk_enable (at91_gpio->bank->clock);
arch/arm/mach-at91/include/mach/at91cap9.h +5 -4
@@ -88,10 +88,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_PMC (0xfffffc00 - AT91_BASE_SYS)#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS)#define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS)
@@ -102,6 +98,11 @@ (0xfffffd50 - AT91_BASE_SYS) : \ (0xfffffd60 - AT91_BASE_SYS)) +#define AT91CAP9_BASE_PIOA 0xfffff200 +#define AT91CAP9_BASE_PIOB 0xfffff400 +#define AT91CAP9_BASE_PIOC 0xfffff600 +#define AT91CAP9_BASE_PIOD 0xfffff800 +#define AT91_USART0 AT91CAP9_BASE_US0#define AT91_USART1 AT91CAP9_BASE_US1#define AT91_USART2 AT91CAP9_BASE_US2
arch/arm/mach-at91/include/mach/at91rm9200.h +5 -4
@@ -81,15 +81,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 AT91RM9200_BASE_PIOA 0xfffff400/* PIO Controller A */ +#define AT91RM9200_BASE_PIOB 0xfffff600/* PIO Controller B */ +#define AT91RM9200_BASE_PIOC 0xfffff800/* PIO Controller C */ +#define AT91RM9200_BASE_PIOD 0xfffffa00/* PIO Controller D */ +#define AT91_USART0 AT91RM9200_BASE_US0#define AT91_USART1 AT91RM9200_BASE_US1#define AT91_USART2 AT91RM9200_BASE_US2
arch/arm/mach-at91/include/mach/at91sam9260.h +4 -3
@@ -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 AT91SAM9260_BASE_PIOA 0xfffff400 +#define AT91SAM9260_BASE_PIOB 0xfffff600 +#define AT91SAM9260_BASE_PIOC 0xfffff800 +#define AT91_USART0 AT91SAM9260_BASE_US0#define AT91_USART1 AT91SAM9260_BASE_US1#define AT91_USART2 AT91SAM9260_BASE_US2
arch/arm/mach-at91/include/mach/at91sam9261.h +4 -3
@@ -70,9 +70,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)
@@ -81,6 +78,10 @@#define AT91_WDT (0xfffffd40 - AT91_BASE_SYS)#define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) +#define AT91SAM9261_BASE_PIOA 0xfffff400 +#define AT91SAM9261_BASE_PIOB 0xfffff600 +#define AT91SAM9261_BASE_PIOC 0xfffff800 +#define AT91_USART0 AT91SAM9261_BASE_US0#define AT91_USART1 AT91SAM9261_BASE_US1#define AT91_USART2 AT91SAM9261_BASE_US2
arch/arm/mach-at91/include/mach/at91sam9263.h +6 -5
@@ -84,11 +84,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)
@@ -98,6 +93,12 @@#define AT91_RTT1 (0xfffffd50 - AT91_BASE_SYS)#define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) +#define AT91SAM9263_BASE_PIOA 0xfffff200 +#define AT91SAM9263_BASE_PIOB 0xfffff400 +#define AT91SAM9263_BASE_PIOC 0xfffff600 +#define AT91SAM9263_BASE_PIOD 0xfffff800 +#define AT91SAM9263_BASE_PIOE 0xfffffa00 +#define AT91_USART0 AT91SAM9263_BASE_US0#define AT91_USART1 AT91SAM9263_BASE_US1#define AT91_USART2 AT91SAM9263_BASE_US2
arch/arm/mach-at91/include/mach/at91sam9g45.h +6 -5
@@ -94,11 +94,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)
@@ -108,6 +103,12 @@#define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS)#define AT91_RTC (0xfffffdb0 - AT91_BASE_SYS) +#define AT91SAM9G45_BASE_PIOA 0xfffff200 +#define AT91SAM9G45_BASE_PIOB 0xfffff400 +#define AT91SAM9G45_BASE_PIOC 0xfffff600 +#define AT91SAM9G45_BASE_PIOD 0xfffff800 +#define AT91SAM9G45_BASE_PIOE 0xfffffa00 +#define AT91_USART0 AT91SAM9G45_BASE_US0#define AT91_USART1 AT91SAM9G45_BASE_US1#define AT91_USART2 AT91SAM9G45_BASE_US2
arch/arm/mach-at91/include/mach/at91sam9rl.h +5 -4
@@ -77,10 +77,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_PIOD (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)
@@ -91,6 +87,11 @@#define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS)#define AT91_RTC (0xfffffe00 - AT91_BASE_SYS) +#define AT91SAM9RL_BASE_PIOA 0xfffff400 +#define AT91SAM9RL_BASE_PIOB 0xfffff600 +#define AT91SAM9RL_BASE_PIOC 0xfffff800 +#define AT91SAM9RL_BASE_PIOD 0xfffffa00 +#define AT91_USART0 AT91SAM9RL_BASE_US0#define AT91_USART1 AT91SAM9RL_BASE_US1#define AT91_USART2 AT91SAM9RL_BASE_US2
Signature · 1 line
1.7.5.4
PATCH 2/3 at91/gpio: drop PIN_BASE
--- arch/arm/mach-at91/gpio.c | 54 ++-- arch/arm/mach-at91/include/mach/gpio.h | 454 ++++++++++++++++---------------- 2 files changed, 254 insertions(+), 254 deletions(-)
rewrite arch/arm/mach-at91/include/mach/gpio.h (78%)
arch/arm/mach-at91/gpio.c +28 -26
@@ -60,18 +60,17 @@ static int at91_gpiolib_direction_input(struct gpio_chip *chip, }static struct at91_gpio_chip gpio_chip[] = { -AT91_GPIO_CHIP ("A" ,0x00 +PIN_BASE ,32 ), -AT91_GPIO_CHIP ("B" ,0x20 +PIN_BASE ,32 ), -AT91_GPIO_CHIP ("C" ,0x40 +PIN_BASE ,32 ), -AT91_GPIO_CHIP ("D" ,0x60 +PIN_BASE ,32 ), -AT91_GPIO_CHIP ("E" ,0x80 +PIN_BASE ,32 ), +AT91_GPIO_CHIP ("A" ,0x00 ,32 ), +AT91_GPIO_CHIP ("B" ,0x20 ,32 ), +AT91_GPIO_CHIP ("C" ,0x40 ,32 ), +AT91_GPIO_CHIP ("D" ,0x60 ,32 ), +AT91_GPIO_CHIP ("E" ,0x80 ,32 ), };static int gpio_banks;static inline void __iomem *pin_to_controller (unsigned pin) { - pin -=PIN_BASE ; pin /=32 ;if (likely (pin < gpio_banks))return gpio_chip[pin].regbase;
@@ -81,7 +80,6 @@ static inline void __iomem *pin_to_controller(unsigned pin)static inline unsigned pin_to_mask (unsigned pin) { - pin -=PIN_BASE ;return 1 << (pin %32 ); }
@@ -276,8 +274,9 @@ static u32 backups[MAX_GPIO_BANKS];static int gpio_irq_set_wake (struct irq_data *d,unsigned state) { -unsigned mask =pin_to_mask (d->irq); -unsigned bank = (d->irq -PIN_BASE ) /32 ; +unsigned pin =irq_to_gpio (d->irq); +unsigned mask =pin_to_mask (pin); +unsigned bank = pin /32 ;if (unlikely (bank >=MAX_GPIO_BANKS ))return -EINVAL ;
@@ -346,8 +345,9 @@ void at91_gpio_resume(void)static void gpio_irq_mask (struct irq_data *d) { -void __iomem *pio =pin_to_controller (d->irq); -unsigned mask =pin_to_mask (d->irq); +unsigned pin =irq_to_gpio (d->irq); +void __iomem *pio =pin_to_controller (pin); +unsigned mask =pin_to_mask (pin);if (pio)__raw_writel (mask, pio +PIO_IDR );
@@ -355,8 +355,9 @@ static void gpio_irq_mask(struct irq_data *d)static void gpio_irq_unmask (struct irq_data *d) { -void __iomem *pio =pin_to_controller (d->irq); -unsigned mask =pin_to_mask (d->irq); +unsigned pin =irq_to_gpio (d->irq); +void __iomem *pio =pin_to_controller (pin); +unsigned mask =pin_to_mask (pin);if (pio)__raw_writel (mask, pio +PIO_IER );
@@ -384,7 +385,7 @@ static struct irq_chip gpio_irqchip = {static void gpio_irq_handler (unsigned irq,struct irq_desc *desc) { -unsigned pin; +unsigned irq_pin;struct irq_data *idata =irq_desc_get_irq_data (desc);struct irq_chip *chip =irq_data_get_irq_chip (idata);struct at91_gpio_chip *at91_gpio =irq_data_get_irq_chip_data (idata);
@@ -407,12 +408,12 @@ static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)continue ; } - pin = at91_gpio->chip.base; + irq_pin =gpio_to_irq (at91_gpio->chip.base);while (isr) {if (isr &1 ) -generic_handle_irq (pin); - pin++; +generic_handle_irq (irq_pin); + irq_pin++; isr >>=1 ; } }
@@ -440,7 +441,7 @@ static int at91_gpio_show(struct seq_file *s, void *unused)seq_printf (s,"%i:\t" , j);for (bank =0 ; bank < gpio_banks; bank++) { -unsigned pin =PIN_BASE + (32 * bank) + j; +unsigned pin = (32 * bank) + j;void __iomem *pio =pin_to_controller (pin);unsigned mask =pin_to_mask (pin);
@@ -493,10 +494,10 @@ static struct lock_class_key gpio_lock_class;*/ void __init at91_gpio_irq_setup (void ) { -unsigned pioc, pin; +unsigned pioc, irq =gpio_to_irq (0 );struct at91_gpio_chip *this, *prev; -for (pioc =0 , pin =PIN_BASE , this = gpio_chip, prev =NULL ; +for (pioc =0 , this = gpio_chip, prev =NULL ; pioc++ < gpio_banks; prev = this, this++) {unsigned id = this->bank->id;
@@ -504,16 +505,17 @@ void __init at91_gpio_irq_setup(void)__raw_writel (~0 , this->regbase +PIO_IDR ); -for (i =0 , pin = this->chip.base; i <32 ; i++, pin++) { -irq_set_lockdep_class (pin, &gpio_lock_class); +for (i =0 , irq =gpio_to_irq (this->chip.base); i <32 ; + i++, irq++) { +irq_set_lockdep_class (irq, &gpio_lock_class);/* * Can use the "simple" and not "edge" handler since it's * shorter, and the AIC handles interrupts sanely. */ -irq_set_chip_and_handler (pin, &gpio_irqchip, +irq_set_chip_and_handler (irq, &gpio_irqchip, handle_simple_irq); -set_irq_flags (pin,IRQF_VALID ); +set_irq_flags (irq,IRQF_VALID ); }/* The toplevel handler handles one bank of GPIOs, except
@@ -526,7 +528,7 @@ void __init at91_gpio_irq_setup(void)irq_set_chip_data (id, this);irq_set_chained_handler (id, gpio_irq_handler); } -pr_info ("AT91: %d gpio irqs in %d banks\n" , pin -PIN_BASE , gpio_banks); +pr_info ("AT91: %d gpio irqs in %d banks\n" , irq, gpio_banks); }/* gpiolib support */
@@ -615,7 +617,7 @@ void __init at91_gpio_init(struct at91_gpio_bank *data, int nr_banks) at91_gpio = &gpio_chip[i]; at91_gpio->bank = &data[i]; - at91_gpio->chip.base =PIN_BASE + i *32 ; + at91_gpio->chip.base = i *32 ; at91_gpio->regbase =ioremap (at91_gpio->bank->regbase,512 );if (!at91_gpio->regbase) {
arch/arm/mach-at91/include/mach/gpio.h +226 -228
454 lines not on this page · raw message
Signature · 1 line
1.7.5.4
PATCH 2/3 at91/gpio: drop PIN_BASE
Le 17/09/2011 20:58, Jean-Christophe PLAGNIOL-VILLARD :
Quoted 45 lines
Signed-off-by Jean-Christophe PLAGNIOL-VILLARD <[email protected]>Cc Nicolas Ferre <[email protected]>--- arch/arm/mach-at91/gpio.c | 54 ++-- arch/arm/mach-at91/include/mach/gpio.h | 454 ++++++++++++++++---------------- 2 files changed, 254 insertions(+), 254 deletions(-)rewrite
arch/arm/mach-at91/include/mach/gpio.h(78%)arch/arm/mach-at91/gpio.c +5
-7@@ -60,18 +60,17 @@ static int at91_gpiolib_direction_input(struct gpio_chip *chip, }static struct at91_gpio_chip gpio_chip[] = { -AT91_GPIO_CHIP ("A" ,0x00 +PIN_BASE ,32 ), -AT91_GPIO_CHIP ("B" ,0x20 +PIN_BASE ,32 ), -AT91_GPIO_CHIP ("C" ,0x40 +PIN_BASE ,32 ), -AT91_GPIO_CHIP ("D" ,0x60 +PIN_BASE ,32 ), -AT91_GPIO_CHIP ("E" ,0x80 +PIN_BASE ,32 ), +AT91_GPIO_CHIP ("A" ,0x00 ,32 ), +AT91_GPIO_CHIP ("B" ,0x20 ,32 ), +AT91_GPIO_CHIP ("C" ,0x40 ,32 ), +AT91_GPIO_CHIP ("D" ,0x60 ,32 ), +AT91_GPIO_CHIP ("E" ,0x80 ,32 ), };static int gpio_banks;static inline void __iomem *pin_to_controller (unsigned pin) { - pin -=PIN_BASE ; pin /=32 ;if (likely (pin < gpio_banks))return gpio_chip[pin].regbase;@@ -81,7 +80,6 @@ static inline void __iomem *pin_to_controller(unsigned pin)static inline unsigned pin_to_mask (unsigned pin) { - pin -=PIN_BASE ;return 1 << (pin %32 ); }
arch/arm/mach-at91/gpio.c static u32 backups[MAX_GPIO_BANKS]; · line 277
Quoted 6 lines
arch/arm/mach-at91/gpio.c +1
-2@@ -276,8 +274,9 @@ static u32 backups[MAX_GPIO_BANKS];static int gpio_irq_set_wake (struct irq_data *d,unsigned state) { -unsigned mask =pin_to_mask (d->irq); -unsigned bank = (d->irq -PIN_BASE ) /32 ; +unsigned pin =irq_to_gpio (d->irq);
No, we try to remove the use of this irq_to_gpio() function. So we have to avoid re-introducing it...
[..]
Best regards,
Signature · 1 line
Nicolas Ferre
PATCH 2/3 at91/gpio: drop PIN_BASE
Le 19/09/2011 10:36, Nicolas Ferre :
Quoted 47 lines
Le 17/09/2011 20:58, Jean-Christophe PLAGNIOL-VILLARD :
Quoted 46 lines
Signed-off-by Jean-Christophe PLAGNIOL-VILLARD <[email protected]>Cc Nicolas Ferre <[email protected]>--- arch/arm/mach-at91/gpio.c | 54 ++-- arch/arm/mach-at91/include/mach/gpio.h | 454 ++++++++++++++++---------------- 2 files changed, 254 insertions(+), 254 deletions(-)rewrite
arch/arm/mach-at91/include/mach/gpio.h(78%)arch/arm/mach-at91/gpio.c +5
-7@@ -60,18 +60,17 @@ static int at91_gpiolib_direction_input(struct gpio_chip *chip, }static struct at91_gpio_chip gpio_chip[] = { -AT91_GPIO_CHIP ("A" ,0x00 +PIN_BASE ,32 ), -AT91_GPIO_CHIP ("B" ,0x20 +PIN_BASE ,32 ), -AT91_GPIO_CHIP ("C" ,0x40 +PIN_BASE ,32 ), -AT91_GPIO_CHIP ("D" ,0x60 +PIN_BASE ,32 ), -AT91_GPIO_CHIP ("E" ,0x80 +PIN_BASE ,32 ), +AT91_GPIO_CHIP ("A" ,0x00 ,32 ), +AT91_GPIO_CHIP ("B" ,0x20 ,32 ), +AT91_GPIO_CHIP ("C" ,0x40 ,32 ), +AT91_GPIO_CHIP ("D" ,0x60 ,32 ), +AT91_GPIO_CHIP ("E" ,0x80 ,32 ), };static int gpio_banks;static inline void __iomem *pin_to_controller (unsigned pin) { - pin -=PIN_BASE ; pin /=32 ;if (likely (pin < gpio_banks))return gpio_chip[pin].regbase;@@ -81,7 +80,6 @@ static inline void __iomem *pin_to_controller(unsigned pin)static inline unsigned pin_to_mask (unsigned pin) { - pin -=PIN_BASE ;return 1 << (pin %32 ); }@@ -276,8 +274,9 @@ static u32 backups[MAX_GPIO_BANKS];
Quoted 8 lines
arch/arm/mach-at91/gpio.c static u32 backups[MAX_GPIO_BANKS]; · line 277
Quoted 5 lines
arch/arm/mach-at91/gpio.c +1
-2static int gpio_irq_set_wake (struct irq_data *d,unsigned state) { -unsigned mask =pin_to_mask (d->irq); -unsigned bank = (d->irq -PIN_BASE ) /32 ; +unsigned pin =irq_to_gpio (d->irq);No, we try to remove the use of this
irq_to_gpio()function. So we have to avoid re-introducing it...
Well, as this use is limited to the gpio driver itself it seems that we can accept it...
So we can go forward with this patch series.
Best regards,
Signature · 1 line
Nicolas Ferre
PATCH 3/3 at91/gpio: fix display of number of irq setuped
In reply to Jean-Christophe PLAGNIOL-VILLARD--- arch/arm/mach-at91/gpio.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
arch/arm/mach-at91/gpio.c +1 -1
@@ -528,7 +528,7 @@ void __init at91_gpio_irq_setup(void)irq_set_chip_data (id, this);irq_set_chained_handler (id, gpio_irq_handler); } -pr_info ("AT91: %d gpio irqs in %d banks\n" , irq, gpio_banks); +pr_info ("AT91: %d gpio irqs in %d banks\n" , irq -gpio_to_irq (0 ), gpio_banks); }/* gpiolib support */
Signature · 1 line
1.7.5.4
PATCH 1/3 at91/gpio: make gpio register base soc independant
In reply to Jean-Christophe PLAGNIOL-VILLARDQuoted 2 lines · Jean-Christophe PLAGNIOL-VILLARD
Signed-off-by Jean-Christophe PLAGNIOL-VILLARD <[email protected]>Cc Nicolas Ferre <[email protected]>
Looks good to me. For whole series:
Quoted 434 lines
--- arch/arm/mach-at91/at91cap9.c | 8 ++++---- arch/arm/mach-at91/at91rm9200.c | 8 ++++---- arch/arm/mach-at91/at91sam9260.c | 6 +++--- arch/arm/mach-at91/at91sam9261.c | 6 +++--- arch/arm/mach-at91/at91sam9263.c | 10 +++++----- arch/arm/mach-at91/at91sam9g45.c | 10 +++++----- arch/arm/mach-at91/at91sam9rl.c | 8 ++++---- arch/arm/mach-at91/generic.h | 2 +- arch/arm/mach-at91/gpio.c | 8 ++++++-- arch/arm/mach-at91/include/mach/at91cap9.h | 9 +++++---- arch/arm/mach-at91/include/mach/at91rm9200.h | 9 +++++---- arch/arm/mach-at91/include/mach/at91sam9260.h | 7 ++++--- arch/arm/mach-at91/include/mach/at91sam9261.h | 7 ++++--- arch/arm/mach-at91/include/mach/at91sam9263.h | 11 ++++++----- arch/arm/mach-at91/include/mach/at91sam9g45.h | 11 ++++++----- arch/arm/mach-at91/include/mach/at91sam9rl.h | 9 +++++---- 16 files changed, 70 insertions(+), 59 deletions(-)arch/arm/mach-at91/at91cap9.c +4
-4@@ -296,19 +296,19 @@ void __init at91cap9_set_console_clock(int id)static struct at91_gpio_bank at91cap9_gpio[] = { { .id =AT91CAP9_ID_PIOABCD , - .offset =AT91_PIOA , + .regbase =AT91CAP9_BASE_PIOA , .clock = &pioABCD_clk, }, { .id =AT91CAP9_ID_PIOABCD , - .offset =AT91_PIOB , + .regbase =AT91CAP9_BASE_PIOB , .clock = &pioABCD_clk, }, { .id =AT91CAP9_ID_PIOABCD , - .offset =AT91_PIOC , + .regbase =AT91CAP9_BASE_PIOC , .clock = &pioABCD_clk, }, { .id =AT91CAP9_ID_PIOABCD , - .offset =AT91_PIOD , + .regbase =AT91CAP9_BASE_PIOD , .clock = &pioABCD_clk, } };arch/arm/mach-at91/at91rm9200.c +4
-4@@ -271,19 +271,19 @@ void __init at91rm9200_set_console_clock(int id)static struct at91_gpio_bank at91rm9200_gpio[] = { { .id =AT91RM9200_ID_PIOA , - .offset =AT91_PIOA , + .regbase =AT91RM9200_BASE_PIOA , .clock = &pioA_clk, }, { .id =AT91RM9200_ID_PIOB , - .offset =AT91_PIOB , + .regbase =AT91RM9200_BASE_PIOB , .clock = &pioB_clk, }, { .id =AT91RM9200_ID_PIOC , - .offset =AT91_PIOC , + .regbase =AT91RM9200_BASE_PIOC , .clock = &pioC_clk, }, { .id =AT91RM9200_ID_PIOD , - .offset =AT91_PIOD , + .regbase =AT91RM9200_BASE_PIOD , .clock = &pioD_clk, } };arch/arm/mach-at91/at91sam9260.c +3
-3@@ -265,15 +265,15 @@ void __init at91sam9260_set_console_clock(int id)static struct at91_gpio_bank at91sam9260_gpio[] = { { .id =AT91SAM9260_ID_PIOA , - .offset =AT91_PIOA , + .regbase =AT91SAM9260_BASE_PIOA , .clock = &pioA_clk, }, { .id =AT91SAM9260_ID_PIOB , - .offset =AT91_PIOB , + .regbase =AT91SAM9260_BASE_PIOB , .clock = &pioB_clk, }, { .id =AT91SAM9260_ID_PIOC , - .offset =AT91_PIOC , + .regbase =AT91SAM9260_BASE_PIOC , .clock = &pioC_clk, } };arch/arm/mach-at91/at91sam9261.c +3
-3@@ -254,15 +254,15 @@ void __init at91sam9261_set_console_clock(int id)static struct at91_gpio_bank at91sam9261_gpio[] = { { .id =AT91SAM9261_ID_PIOA , - .offset =AT91_PIOA , + .regbase =AT91SAM9261_BASE_PIOA , .clock = &pioA_clk, }, { .id =AT91SAM9261_ID_PIOB , - .offset =AT91_PIOB , + .regbase =AT91SAM9261_BASE_PIOB , .clock = &pioB_clk, }, { .id =AT91SAM9261_ID_PIOC , - .offset =AT91_PIOC , + .regbase =AT91SAM9261_BASE_PIOC , .clock = &pioC_clk, } };arch/arm/mach-at91/at91sam9263.c +5
-5@@ -266,23 +266,23 @@ void __init at91sam9263_set_console_clock(int id)static struct at91_gpio_bank at91sam9263_gpio[] = { { .id =AT91SAM9263_ID_PIOA , - .offset =AT91_PIOA , + .regbase =AT91SAM9263_BASE_PIOA , .clock = &pioA_clk, }, { .id =AT91SAM9263_ID_PIOB , - .offset =AT91_PIOB , + .regbase =AT91SAM9263_BASE_PIOB , .clock = &pioB_clk, }, { .id =AT91SAM9263_ID_PIOCDE , - .offset =AT91_PIOC , + .regbase =AT91SAM9263_BASE_PIOC , .clock = &pioCDE_clk, }, { .id =AT91SAM9263_ID_PIOCDE , - .offset =AT91_PIOD , + .regbase =AT91SAM9263_BASE_PIOD , .clock = &pioCDE_clk, }, { .id =AT91SAM9263_ID_PIOCDE , - .offset =AT91_PIOE , + .regbase =AT91SAM9263_BASE_PIOE , .clock = &pioCDE_clk, } };arch/arm/mach-at91/at91sam9g45.c +5
-5@@ -282,23 +282,23 @@ void __init at91sam9g45_set_console_clock(int id)static struct at91_gpio_bank at91sam9g45_gpio[] = { { .id =AT91SAM9G45_ID_PIOA , - .offset =AT91_PIOA , + .regbase =AT91SAM9G45_BASE_PIOA , .clock = &pioA_clk, }, { .id =AT91SAM9G45_ID_PIOB , - .offset =AT91_PIOB , + .regbase =AT91SAM9G45_BASE_PIOB , .clock = &pioB_clk, }, { .id =AT91SAM9G45_ID_PIOC , - .offset =AT91_PIOC , + .regbase =AT91SAM9G45_BASE_PIOC , .clock = &pioC_clk, }, { .id =AT91SAM9G45_ID_PIODE , - .offset =AT91_PIOD , + .regbase =AT91SAM9G45_BASE_PIOD , .clock = &pioDE_clk, }, { .id =AT91SAM9G45_ID_PIODE , - .offset =AT91_PIOE , + .regbase =AT91SAM9G45_BASE_PIOE , .clock = &pioDE_clk, } };arch/arm/mach-at91/at91sam9rl.c +4
-4@@ -246,19 +246,19 @@ void __init at91sam9rl_set_console_clock(int id)static struct at91_gpio_bank at91sam9rl_gpio[] = { { .id =AT91SAM9RL_ID_PIOA , - .offset =AT91_PIOA , + .regbase =AT91SAM9RL_BASE_PIOA , .clock = &pioA_clk, }, { .id =AT91SAM9RL_ID_PIOB , - .offset =AT91_PIOB , + .regbase =AT91SAM9RL_BASE_PIOB , .clock = &pioB_clk, }, { .id =AT91SAM9RL_ID_PIOC , - .offset =AT91_PIOC , + .regbase =AT91SAM9RL_BASE_PIOC , .clock = &pioC_clk, }, { .id =AT91SAM9RL_ID_PIOD , - .offset =AT91_PIOD , + .regbase =AT91SAM9RL_BASE_PIOD , .clock = &pioD_clk, } };arch/arm/mach-at91/generic.h +1
-1@@ -65,7 +65,7 @@ extern void at91sam9_alt_reset(void);struct at91_gpio_bank {unsigned short id;/* peripheral ID */ -unsigned long offset;/* offset from system peripheral base */ +unsigned long regbase;/* offset from system peripheral base */ struct clk *clock;/* associated clock */ };extern void __init at91_gpio_init (struct at91_gpio_bank *,int nr_banks);arch/arm/mach-at91/gpio.c +6
-2@@ -616,8 +616,12 @@ void __init at91_gpio_init(struct at91_gpio_bank *data, int nr_banks) at91_gpio->bank = &data[i]; at91_gpio->chip.base =PIN_BASE + i *32 ; - at91_gpio->regbase = at91_gpio->bank->offset + - (void __iomem *)AT91_VA_BASE_SYS ; + + at91_gpio->regbase =ioremap (at91_gpio->bank->regbase,512 ); +if (!at91_gpio->regbase) { +pr_err ("at91_gpio.%d, failed to map registers, ignoring.\n" , i); +continue ; + }/* enable PIO controller's clock */ clk_enable (at91_gpio->bank->clock);arch/arm/mach-at91/include/mach/at91cap9.h +5
-4@@ -88,10 +88,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_PMC (0xfffffc00 - AT91_BASE_SYS)#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS)#define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS)@@ -102,6 +98,11 @@ (0xfffffd50 - AT91_BASE_SYS) : \ (0xfffffd60 - AT91_BASE_SYS)) +#define AT91CAP9_BASE_PIOA 0xfffff200 +#define AT91CAP9_BASE_PIOB 0xfffff400 +#define AT91CAP9_BASE_PIOC 0xfffff600 +#define AT91CAP9_BASE_PIOD 0xfffff800 +#define AT91_USART0 AT91CAP9_BASE_US0#define AT91_USART1 AT91CAP9_BASE_US1#define AT91_USART2 AT91CAP9_BASE_US2arch/arm/mach-at91/include/mach/at91rm9200.h +5
-4@@ -81,15 +81,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 AT91RM9200_BASE_PIOA 0xfffff400/* PIO Controller A */ +#define AT91RM9200_BASE_PIOB 0xfffff600/* PIO Controller B */ +#define AT91RM9200_BASE_PIOC 0xfffff800/* PIO Controller C */ +#define AT91RM9200_BASE_PIOD 0xfffffa00/* PIO Controller D */ +#define AT91_USART0 AT91RM9200_BASE_US0#define AT91_USART1 AT91RM9200_BASE_US1#define AT91_USART2 AT91RM9200_BASE_US2arch/arm/mach-at91/include/mach/at91sam9260.h +4
-3@@ -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 AT91SAM9260_BASE_PIOA 0xfffff400 +#define AT91SAM9260_BASE_PIOB 0xfffff600 +#define AT91SAM9260_BASE_PIOC 0xfffff800 +#define AT91_USART0 AT91SAM9260_BASE_US0#define AT91_USART1 AT91SAM9260_BASE_US1#define AT91_USART2 AT91SAM9260_BASE_US2arch/arm/mach-at91/include/mach/at91sam9261.h +4
-3@@ -70,9 +70,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)@@ -81,6 +78,10 @@#define AT91_WDT (0xfffffd40 - AT91_BASE_SYS)#define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) +#define AT91SAM9261_BASE_PIOA 0xfffff400 +#define AT91SAM9261_BASE_PIOB 0xfffff600 +#define AT91SAM9261_BASE_PIOC 0xfffff800 +#define AT91_USART0 AT91SAM9261_BASE_US0#define AT91_USART1 AT91SAM9261_BASE_US1#define AT91_USART2 AT91SAM9261_BASE_US2arch/arm/mach-at91/include/mach/at91sam9263.h +6
-5@@ -84,11 +84,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)@@ -98,6 +93,12 @@#define AT91_RTT1 (0xfffffd50 - AT91_BASE_SYS)#define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) +#define AT91SAM9263_BASE_PIOA 0xfffff200 +#define AT91SAM9263_BASE_PIOB 0xfffff400 +#define AT91SAM9263_BASE_PIOC 0xfffff600 +#define AT91SAM9263_BASE_PIOD 0xfffff800 +#define AT91SAM9263_BASE_PIOE 0xfffffa00 +#define AT91_USART0 AT91SAM9263_BASE_US0#define AT91_USART1 AT91SAM9263_BASE_US1#define AT91_USART2 AT91SAM9263_BASE_US2arch/arm/mach-at91/include/mach/at91sam9g45.h +6
-5@@ -94,11 +94,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)@@ -108,6 +103,12 @@#define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS)#define AT91_RTC (0xfffffdb0 - AT91_BASE_SYS) +#define AT91SAM9G45_BASE_PIOA 0xfffff200 +#define AT91SAM9G45_BASE_PIOB 0xfffff400 +#define AT91SAM9G45_BASE_PIOC 0xfffff600 +#define AT91SAM9G45_BASE_PIOD 0xfffff800 +#define AT91SAM9G45_BASE_PIOE 0xfffffa00 +#define AT91_USART0 AT91SAM9G45_BASE_US0#define AT91_USART1 AT91SAM9G45_BASE_US1#define AT91_USART2 AT91SAM9G45_BASE_US2arch/arm/mach-at91/include/mach/at91sam9rl.h +5
-4@@ -77,10 +77,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_PIOD (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)@@ -91,6 +87,11 @@#define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS)#define AT91_RTC (0xfffffe00 - AT91_BASE_SYS) +#define AT91SAM9RL_BASE_PIOA 0xfffff400 +#define AT91SAM9RL_BASE_PIOB 0xfffff600 +#define AT91SAM9RL_BASE_PIOC 0xfffff800 +#define AT91SAM9RL_BASE_PIOD 0xfffffa00 +#define AT91_USART0 AT91SAM9RL_BASE_US0#define AT91_USART1 AT91SAM9RL_BASE_US1#define AT91_USART2 AT91SAM9RL_BASE_US2