diff options
Diffstat (limited to 'arch/arm/mach-orion5x/db88f5281-setup.c')
-rw-r--r-- | arch/arm/mach-orion5x/db88f5281-setup.c | 82 |
1 files changed, 44 insertions, 38 deletions
diff --git a/arch/arm/mach-orion5x/db88f5281-setup.c b/arch/arm/mach-orion5x/db88f5281-setup.c index 44c64342dacb..88405e74e5e3 100644 --- a/arch/arm/mach-orion5x/db88f5281-setup.c +++ b/arch/arm/mach-orion5x/db88f5281-setup.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <asm/arch/orion5x.h> | 27 | #include <asm/arch/orion5x.h> |
28 | #include <asm/plat-orion/orion_nand.h> | 28 | #include <asm/plat-orion/orion_nand.h> |
29 | #include "common.h" | 29 | #include "common.h" |
30 | #include "mpp.h" | ||
30 | 31 | ||
31 | /***************************************************************************** | 32 | /***************************************************************************** |
32 | * DB-88F5281 on board devices | 33 | * DB-88F5281 on board devices |
@@ -86,7 +87,7 @@ static struct platform_device db88f5281_boot_flash = { | |||
86 | .name = "physmap-flash", | 87 | .name = "physmap-flash", |
87 | .id = 0, | 88 | .id = 0, |
88 | .dev = { | 89 | .dev = { |
89 | .platform_data = &db88f5281_boot_flash_data, | 90 | .platform_data = &db88f5281_boot_flash_data, |
90 | }, | 91 | }, |
91 | .num_resources = 1, | 92 | .num_resources = 1, |
92 | .resource = &db88f5281_boot_flash_resource, | 93 | .resource = &db88f5281_boot_flash_resource, |
@@ -110,7 +111,7 @@ static struct platform_device db88f5281_nor_flash = { | |||
110 | .name = "physmap-flash", | 111 | .name = "physmap-flash", |
111 | .id = 1, | 112 | .id = 1, |
112 | .dev = { | 113 | .dev = { |
113 | .platform_data = &db88f5281_nor_flash_data, | 114 | .platform_data = &db88f5281_nor_flash_data, |
114 | }, | 115 | }, |
115 | .num_resources = 1, | 116 | .num_resources = 1, |
116 | .resource = &db88f5281_nor_flash_resource, | 117 | .resource = &db88f5281_nor_flash_resource, |
@@ -125,18 +126,15 @@ static struct mtd_partition db88f5281_nand_parts[] = { | |||
125 | .name = "kernel", | 126 | .name = "kernel", |
126 | .offset = 0, | 127 | .offset = 0, |
127 | .size = SZ_2M, | 128 | .size = SZ_2M, |
128 | }, | 129 | }, { |
129 | { | ||
130 | .name = "root", | 130 | .name = "root", |
131 | .offset = SZ_2M, | 131 | .offset = SZ_2M, |
132 | .size = (SZ_16M - SZ_2M), | 132 | .size = (SZ_16M - SZ_2M), |
133 | }, | 133 | }, { |
134 | { | ||
135 | .name = "user", | 134 | .name = "user", |
136 | .offset = SZ_16M, | 135 | .offset = SZ_16M, |
137 | .size = SZ_8M, | 136 | .size = SZ_8M, |
138 | }, | 137 | }, { |
139 | { | ||
140 | .name = "recovery", | 138 | .name = "recovery", |
141 | .offset = (SZ_16M + SZ_8M), | 139 | .offset = (SZ_16M + SZ_8M), |
142 | .size = SZ_8M, | 140 | .size = SZ_8M, |
@@ -288,7 +286,6 @@ subsys_initcall(db88f5281_pci_init); | |||
288 | ****************************************************************************/ | 286 | ****************************************************************************/ |
289 | static struct mv643xx_eth_platform_data db88f5281_eth_data = { | 287 | static struct mv643xx_eth_platform_data db88f5281_eth_data = { |
290 | .phy_addr = 8, | 288 | .phy_addr = 8, |
291 | .force_phy_addr = 1, | ||
292 | }; | 289 | }; |
293 | 290 | ||
294 | /***************************************************************************** | 291 | /***************************************************************************** |
@@ -301,11 +298,28 @@ static struct i2c_board_info __initdata db88f5281_i2c_rtc = { | |||
301 | /***************************************************************************** | 298 | /***************************************************************************** |
302 | * General Setup | 299 | * General Setup |
303 | ****************************************************************************/ | 300 | ****************************************************************************/ |
304 | 301 | static struct orion5x_mpp_mode db88f5281_mpp_modes[] __initdata = { | |
305 | static struct platform_device *db88f5281_devs[] __initdata = { | 302 | { 0, MPP_GPIO }, /* USB Over Current */ |
306 | &db88f5281_boot_flash, | 303 | { 1, MPP_GPIO }, /* USB Vbat input */ |
307 | &db88f5281_nor_flash, | 304 | { 2, MPP_PCI_ARB }, /* PCI_REQn[2] */ |
308 | &db88f5281_nand_flash, | 305 | { 3, MPP_PCI_ARB }, /* PCI_GNTn[2] */ |
306 | { 4, MPP_PCI_ARB }, /* PCI_REQn[3] */ | ||
307 | { 5, MPP_PCI_ARB }, /* PCI_GNTn[3] */ | ||
308 | { 6, MPP_GPIO }, /* JP0, CON17.2 */ | ||
309 | { 7, MPP_GPIO }, /* JP1, CON17.1 */ | ||
310 | { 8, MPP_GPIO }, /* JP2, CON11.2 */ | ||
311 | { 9, MPP_GPIO }, /* JP3, CON11.3 */ | ||
312 | { 10, MPP_GPIO }, /* RTC int */ | ||
313 | { 11, MPP_GPIO }, /* Baud Rate Generator */ | ||
314 | { 12, MPP_GPIO }, /* PCI int 1 */ | ||
315 | { 13, MPP_GPIO }, /* PCI int 2 */ | ||
316 | { 14, MPP_NAND }, /* NAND_REn[2] */ | ||
317 | { 15, MPP_NAND }, /* NAND_WEn[2] */ | ||
318 | { 16, MPP_UART }, /* UART1_RX */ | ||
319 | { 17, MPP_UART }, /* UART1_TX */ | ||
320 | { 18, MPP_UART }, /* UART1_CTSn */ | ||
321 | { 19, MPP_UART }, /* UART1_RTSn */ | ||
322 | { -1 }, | ||
309 | }; | 323 | }; |
310 | 324 | ||
311 | static void __init db88f5281_init(void) | 325 | static void __init db88f5281_init(void) |
@@ -315,39 +329,31 @@ static void __init db88f5281_init(void) | |||
315 | */ | 329 | */ |
316 | orion5x_init(); | 330 | orion5x_init(); |
317 | 331 | ||
332 | orion5x_mpp_conf(db88f5281_mpp_modes); | ||
333 | writel(0, MPP_DEV_CTRL); /* DEV_D[31:16] */ | ||
334 | |||
318 | /* | 335 | /* |
319 | * Setup the CPU address decode windows for our on-board devices | 336 | * Configure peripherals. |
320 | */ | 337 | */ |
338 | orion5x_ehci0_init(); | ||
339 | orion5x_eth_init(&db88f5281_eth_data); | ||
340 | orion5x_i2c_init(); | ||
341 | orion5x_uart0_init(); | ||
342 | orion5x_uart1_init(); | ||
343 | |||
321 | orion5x_setup_dev_boot_win(DB88F5281_NOR_BOOT_BASE, | 344 | orion5x_setup_dev_boot_win(DB88F5281_NOR_BOOT_BASE, |
322 | DB88F5281_NOR_BOOT_SIZE); | 345 | DB88F5281_NOR_BOOT_SIZE); |
346 | platform_device_register(&db88f5281_boot_flash); | ||
347 | |||
323 | orion5x_setup_dev0_win(DB88F5281_7SEG_BASE, DB88F5281_7SEG_SIZE); | 348 | orion5x_setup_dev0_win(DB88F5281_7SEG_BASE, DB88F5281_7SEG_SIZE); |
324 | orion5x_setup_dev1_win(DB88F5281_NOR_BASE, DB88F5281_NOR_SIZE); | ||
325 | orion5x_setup_dev2_win(DB88F5281_NAND_BASE, DB88F5281_NAND_SIZE); | ||
326 | 349 | ||
327 | /* | 350 | orion5x_setup_dev1_win(DB88F5281_NOR_BASE, DB88F5281_NOR_SIZE); |
328 | * Setup Multiplexing Pins: | 351 | platform_device_register(&db88f5281_nor_flash); |
329 | * MPP0: GPIO (USB Over Current) MPP1: GPIO (USB Vbat input) | ||
330 | * MPP2: PCI_REQn[2] MPP3: PCI_GNTn[2] | ||
331 | * MPP4: PCI_REQn[3] MPP5: PCI_GNTn[3] | ||
332 | * MPP6: GPIO (JP0, CON17.2) MPP7: GPIO (JP1, CON17.1) | ||
333 | * MPP8: GPIO (JP2, CON11.2) MPP9: GPIO (JP3, CON11.3) | ||
334 | * MPP10: GPIO (RTC int) MPP11: GPIO (Baud Rate Generator) | ||
335 | * MPP12: GPIO (PCI int 1) MPP13: GPIO (PCI int 2) | ||
336 | * MPP14: NAND_REn[2] MPP15: NAND_WEn[2] | ||
337 | * MPP16: UART1_RX MPP17: UART1_TX | ||
338 | * MPP18: UART1_CTS MPP19: UART1_RTS | ||
339 | * MPP-DEV: DEV_D[16:31] | ||
340 | */ | ||
341 | orion5x_write(MPP_0_7_CTRL, 0x00222203); | ||
342 | orion5x_write(MPP_8_15_CTRL, 0x44000000); | ||
343 | orion5x_write(MPP_16_19_CTRL, 0); | ||
344 | orion5x_write(MPP_DEV_CTRL, 0); | ||
345 | 352 | ||
346 | orion5x_gpio_set_valid_pins(0x00003fc3); | 353 | orion5x_setup_dev2_win(DB88F5281_NAND_BASE, DB88F5281_NAND_SIZE); |
354 | platform_device_register(&db88f5281_nand_flash); | ||
347 | 355 | ||
348 | platform_add_devices(db88f5281_devs, ARRAY_SIZE(db88f5281_devs)); | ||
349 | i2c_register_board_info(0, &db88f5281_i2c_rtc, 1); | 356 | i2c_register_board_info(0, &db88f5281_i2c_rtc, 1); |
350 | orion5x_eth_init(&db88f5281_eth_data); | ||
351 | } | 357 | } |
352 | 358 | ||
353 | MACHINE_START(DB88F5281, "Marvell Orion-2 Development Board") | 359 | MACHINE_START(DB88F5281, "Marvell Orion-2 Development Board") |