diff options
Diffstat (limited to 'arch/arm/mach-at91/at91sam9x5.c')
-rw-r--r-- | arch/arm/mach-at91/at91sam9x5.c | 42 |
1 files changed, 18 insertions, 24 deletions
diff --git a/arch/arm/mach-at91/at91sam9x5.c b/arch/arm/mach-at91/at91sam9x5.c index 7c7d997260..5d43423eb3 100644 --- a/arch/arm/mach-at91/at91sam9x5.c +++ b/arch/arm/mach-at91/at91sam9x5.c @@ -6,6 +6,7 @@ #include <mach/io.h> #include <mach/cpu.h> +#include "soc.h" #include "generic.h" #include "clock.h" @@ -209,6 +210,11 @@ static struct clk_lookup periph_clocks_lookups[] = { CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi1", &spi1_clk), CLKDEV_CON_DEV_ID("mci_clk", "atmel_mci0", &mmc0_clk), CLKDEV_CON_DEV_ID("mci_clk", "atmel_mci1", &mmc1_clk), + CLKDEV_DEV_ID("at91sam9x5-gpio0", &pioAB_clk), + CLKDEV_DEV_ID("at91sam9x5-gpio1", &pioAB_clk), + CLKDEV_DEV_ID("at91sam9x5-gpio2", &pioCD_clk), + CLKDEV_DEV_ID("at91sam9x5-gpio3", &pioCD_clk), + CLKDEV_DEV_ID("at91-pit", &mck), }; static struct clk_lookup usart_clocks_lookups[] = { @@ -280,30 +286,10 @@ static void __init at91sam9x5_register_clocks(void) } /* -------------------------------------------------------------------- - * GPIO - * -------------------------------------------------------------------- */ - -static struct at91_gpio_bank at91sam9x5_gpio[] = { - { - .regbase = IOMEM(AT91_BASE_PIOA), - .clock = &pioAB_clk, - }, { - .regbase = IOMEM(AT91_BASE_PIOB), - .clock = &pioAB_clk, - }, { - .regbase = IOMEM(AT91_BASE_PIOC), - .clock = &pioCD_clk, - }, { - .regbase = IOMEM(AT91_BASE_PIOD), - .clock = &pioCD_clk, - } -}; - -/* -------------------------------------------------------------------- * AT91SAM9x5 processor initialization * -------------------------------------------------------------------- */ -static int at91sam9x5_initialize(void) +static void at91sam9x5_initialize(void) { /* Init clock subsystem */ at91_clock_init(AT91_MAIN_CLOCK); @@ -312,7 +298,15 @@ static int at91sam9x5_initialize(void) at91sam9x5_register_clocks(); /* Register GPIO subsystem */ - at91_gpio_init(at91sam9x5_gpio, 4); - return 0; + at91_add_sam9x5_gpio(0, AT91SAM9X5_BASE_PIOA); + at91_add_sam9x5_gpio(1, AT91SAM9X5_BASE_PIOB); + at91_add_sam9x5_gpio(2, AT91SAM9X5_BASE_PIOC); + at91_add_sam9x5_gpio(3, AT91SAM9X5_BASE_PIOD); + + at91_add_pit(AT91SAM9X5_BASE_PIT); + at91_add_sam9_smc(DEVICE_ID_SINGLE, AT91SAM9X5_BASE_SMC, 0x200); } -core_initcall(at91sam9x5_initialize); + +AT91_SOC_START(sam9x5) + .init = at91sam9x5_initialize, +AT91_SOC_END |