diff options
Diffstat (limited to 'arch/arm/mach-orion5x/rd88f5182-setup.c')
-rw-r--r-- | arch/arm/mach-orion5x/rd88f5182-setup.c | 79 |
1 files changed, 40 insertions, 39 deletions
diff --git a/arch/arm/mach-orion5x/rd88f5182-setup.c b/arch/arm/mach-orion5x/rd88f5182-setup.c index 81abc1003aae..10ae62864269 100644 --- a/arch/arm/mach-orion5x/rd88f5182-setup.c +++ b/arch/arm/mach-orion5x/rd88f5182-setup.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <asm/mach/pci.h> | 26 | #include <asm/mach/pci.h> |
27 | #include <asm/arch/orion5x.h> | 27 | #include <asm/arch/orion5x.h> |
28 | #include "common.h" | 28 | #include "common.h" |
29 | #include "mpp.h" | ||
29 | 30 | ||
30 | /***************************************************************************** | 31 | /***************************************************************************** |
31 | * RD-88F5182 Info | 32 | * RD-88F5182 Info |
@@ -125,6 +126,7 @@ static int __init rd88f5182_dbgled_init(void) | |||
125 | 126 | ||
126 | leds_event = rd88f5182_dbgled_event; | 127 | leds_event = rd88f5182_dbgled_event; |
127 | } | 128 | } |
129 | |||
128 | return 0; | 130 | return 0; |
129 | } | 131 | } |
130 | 132 | ||
@@ -220,7 +222,6 @@ subsys_initcall(rd88f5182_pci_init); | |||
220 | 222 | ||
221 | static struct mv643xx_eth_platform_data rd88f5182_eth_data = { | 223 | static struct mv643xx_eth_platform_data rd88f5182_eth_data = { |
222 | .phy_addr = 8, | 224 | .phy_addr = 8, |
223 | .force_phy_addr = 1, | ||
224 | }; | 225 | }; |
225 | 226 | ||
226 | /***************************************************************************** | 227 | /***************************************************************************** |
@@ -234,15 +235,34 @@ static struct i2c_board_info __initdata rd88f5182_i2c_rtc = { | |||
234 | * Sata | 235 | * Sata |
235 | ****************************************************************************/ | 236 | ****************************************************************************/ |
236 | static struct mv_sata_platform_data rd88f5182_sata_data = { | 237 | static struct mv_sata_platform_data rd88f5182_sata_data = { |
237 | .n_ports = 2, | 238 | .n_ports = 2, |
238 | }; | 239 | }; |
239 | 240 | ||
240 | /***************************************************************************** | 241 | /***************************************************************************** |
241 | * General Setup | 242 | * General Setup |
242 | ****************************************************************************/ | 243 | ****************************************************************************/ |
243 | 244 | static struct orion5x_mpp_mode rd88f5182_mpp_modes[] __initdata = { | |
244 | static struct platform_device *rd88f5182_devices[] __initdata = { | 245 | { 0, MPP_GPIO }, /* Debug Led */ |
245 | &rd88f5182_nor_flash, | 246 | { 1, MPP_GPIO }, /* Reset Switch */ |
247 | { 2, MPP_UNUSED }, | ||
248 | { 3, MPP_GPIO }, /* RTC Int */ | ||
249 | { 4, MPP_GPIO }, | ||
250 | { 5, MPP_GPIO }, | ||
251 | { 6, MPP_GPIO }, /* PCI_intA */ | ||
252 | { 7, MPP_GPIO }, /* PCI_intB */ | ||
253 | { 8, MPP_UNUSED }, | ||
254 | { 9, MPP_UNUSED }, | ||
255 | { 10, MPP_UNUSED }, | ||
256 | { 11, MPP_UNUSED }, | ||
257 | { 12, MPP_SATA_LED }, /* SATA 0 presence */ | ||
258 | { 13, MPP_SATA_LED }, /* SATA 1 presence */ | ||
259 | { 14, MPP_SATA_LED }, /* SATA 0 active */ | ||
260 | { 15, MPP_SATA_LED }, /* SATA 1 active */ | ||
261 | { 16, MPP_UNUSED }, | ||
262 | { 17, MPP_UNUSED }, | ||
263 | { 18, MPP_UNUSED }, | ||
264 | { 19, MPP_UNUSED }, | ||
265 | { -1 }, | ||
246 | }; | 266 | }; |
247 | 267 | ||
248 | static void __init rd88f5182_init(void) | 268 | static void __init rd88f5182_init(void) |
@@ -252,35 +272,9 @@ static void __init rd88f5182_init(void) | |||
252 | */ | 272 | */ |
253 | orion5x_init(); | 273 | orion5x_init(); |
254 | 274 | ||
255 | /* | 275 | orion5x_mpp_conf(rd88f5182_mpp_modes); |
256 | * Setup the CPU address decode windows for our devices | ||
257 | */ | ||
258 | orion5x_setup_dev_boot_win(RD88F5182_NOR_BOOT_BASE, | ||
259 | RD88F5182_NOR_BOOT_SIZE); | ||
260 | orion5x_setup_dev1_win(RD88F5182_NOR_BASE, RD88F5182_NOR_SIZE); | ||
261 | |||
262 | /* | ||
263 | * Open a special address decode windows for the PCIe WA. | ||
264 | */ | ||
265 | orion5x_setup_pcie_wa_win(ORION5X_PCIE_WA_PHYS_BASE, | ||
266 | ORION5X_PCIE_WA_SIZE); | ||
267 | 276 | ||
268 | /* | 277 | /* |
269 | * Setup Multiplexing Pins -- | ||
270 | * MPP[0] Debug Led (GPIO - Out) | ||
271 | * MPP[1] Debug Led (GPIO - Out) | ||
272 | * MPP[2] N/A | ||
273 | * MPP[3] RTC_Int (GPIO - In) | ||
274 | * MPP[4] GPIO | ||
275 | * MPP[5] GPIO | ||
276 | * MPP[6] PCI_intA (GPIO - In) | ||
277 | * MPP[7] PCI_intB (GPIO - In) | ||
278 | * MPP[8-11] N/A | ||
279 | * MPP[12] SATA 0 presence Indication | ||
280 | * MPP[13] SATA 1 presence Indication | ||
281 | * MPP[14] SATA 0 active Indication | ||
282 | * MPP[15] SATA 1 active indication | ||
283 | * MPP[16-19] Not used | ||
284 | * MPP[20] PCI Clock to MV88F5182 | 278 | * MPP[20] PCI Clock to MV88F5182 |
285 | * MPP[21] PCI Clock to mini PCI CON11 | 279 | * MPP[21] PCI Clock to mini PCI CON11 |
286 | * MPP[22] USB 0 over current indication | 280 | * MPP[22] USB 0 over current indication |
@@ -289,16 +283,23 @@ static void __init rd88f5182_init(void) | |||
289 | * MPP[25] USB 0 over current enable | 283 | * MPP[25] USB 0 over current enable |
290 | */ | 284 | */ |
291 | 285 | ||
292 | orion5x_write(MPP_0_7_CTRL, 0x00000003); | 286 | /* |
293 | orion5x_write(MPP_8_15_CTRL, 0x55550000); | 287 | * Configure peripherals. |
294 | orion5x_write(MPP_16_19_CTRL, 0x5555); | 288 | */ |
289 | orion5x_ehci0_init(); | ||
290 | orion5x_ehci1_init(); | ||
291 | orion5x_eth_init(&rd88f5182_eth_data); | ||
292 | orion5x_i2c_init(); | ||
293 | orion5x_sata_init(&rd88f5182_sata_data); | ||
294 | orion5x_uart0_init(); | ||
295 | 295 | ||
296 | orion5x_gpio_set_valid_pins(0x000000fb); | 296 | orion5x_setup_dev_boot_win(RD88F5182_NOR_BOOT_BASE, |
297 | RD88F5182_NOR_BOOT_SIZE); | ||
298 | |||
299 | orion5x_setup_dev1_win(RD88F5182_NOR_BASE, RD88F5182_NOR_SIZE); | ||
300 | platform_device_register(&rd88f5182_nor_flash); | ||
297 | 301 | ||
298 | platform_add_devices(rd88f5182_devices, ARRAY_SIZE(rd88f5182_devices)); | ||
299 | i2c_register_board_info(0, &rd88f5182_i2c_rtc, 1); | 302 | i2c_register_board_info(0, &rd88f5182_i2c_rtc, 1); |
300 | orion5x_eth_init(&rd88f5182_eth_data); | ||
301 | orion5x_sata_init(&rd88f5182_sata_data); | ||
302 | } | 303 | } |
303 | 304 | ||
304 | MACHINE_START(RD88F5182, "Marvell Orion-NAS Reference Design") | 305 | MACHINE_START(RD88F5182, "Marvell Orion-NAS Reference Design") |