summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-at91/at91sam9x5.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-at91/at91sam9x5.c')
-rw-r--r--arch/arm/mach-at91/at91sam9x5.c42
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