diff options
Diffstat (limited to 'arch/arm/mach-mv78xx0/db78x00-bp-setup.c')
-rw-r--r-- | arch/arm/mach-mv78xx0/db78x00-bp-setup.c | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/arch/arm/mach-mv78xx0/db78x00-bp-setup.c b/arch/arm/mach-mv78xx0/db78x00-bp-setup.c new file mode 100644 index 000000000000..0c93d19193df --- /dev/null +++ b/arch/arm/mach-mv78xx0/db78x00-bp-setup.c | |||
@@ -0,0 +1,94 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-mv78xx0/db78x00-bp-setup.c | ||
3 | * | ||
4 | * Marvell DB-78x00-BP Development Board Setup | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #include <linux/kernel.h> | ||
12 | #include <linux/init.h> | ||
13 | #include <linux/platform_device.h> | ||
14 | #include <linux/ata_platform.h> | ||
15 | #include <linux/mv643xx_eth.h> | ||
16 | #include <asm/arch/mv78xx0.h> | ||
17 | #include <asm/mach-types.h> | ||
18 | #include <asm/mach/arch.h> | ||
19 | #include "common.h" | ||
20 | |||
21 | static struct mv643xx_eth_platform_data db78x00_ge00_data = { | ||
22 | .phy_addr = 8, | ||
23 | }; | ||
24 | |||
25 | static struct mv643xx_eth_platform_data db78x00_ge01_data = { | ||
26 | .phy_addr = 9, | ||
27 | }; | ||
28 | |||
29 | static struct mv643xx_eth_platform_data db78x00_ge10_data = { | ||
30 | .phy_addr = -1, | ||
31 | }; | ||
32 | |||
33 | static struct mv643xx_eth_platform_data db78x00_ge11_data = { | ||
34 | .phy_addr = -1, | ||
35 | }; | ||
36 | |||
37 | static struct mv_sata_platform_data db78x00_sata_data = { | ||
38 | .n_ports = 2, | ||
39 | }; | ||
40 | |||
41 | static void __init db78x00_init(void) | ||
42 | { | ||
43 | /* | ||
44 | * Basic MV78xx0 setup. Needs to be called early. | ||
45 | */ | ||
46 | mv78xx0_init(); | ||
47 | |||
48 | /* | ||
49 | * Partition on-chip peripherals between the two CPU cores. | ||
50 | */ | ||
51 | if (mv78xx0_core_index() == 0) { | ||
52 | mv78xx0_ehci0_init(); | ||
53 | mv78xx0_ehci1_init(); | ||
54 | mv78xx0_ehci2_init(); | ||
55 | mv78xx0_ge00_init(&db78x00_ge00_data); | ||
56 | mv78xx0_ge01_init(&db78x00_ge01_data); | ||
57 | mv78xx0_ge10_init(&db78x00_ge10_data); | ||
58 | mv78xx0_ge11_init(&db78x00_ge11_data); | ||
59 | mv78xx0_sata_init(&db78x00_sata_data); | ||
60 | mv78xx0_uart0_init(); | ||
61 | mv78xx0_uart2_init(); | ||
62 | } else { | ||
63 | mv78xx0_uart1_init(); | ||
64 | mv78xx0_uart3_init(); | ||
65 | } | ||
66 | } | ||
67 | |||
68 | static int __init db78x00_pci_init(void) | ||
69 | { | ||
70 | if (machine_is_db78x00_bp()) { | ||
71 | /* | ||
72 | * Assign the x16 PCIe slot on the board to CPU core | ||
73 | * #0, and let CPU core #1 have the four x1 slots. | ||
74 | */ | ||
75 | if (mv78xx0_core_index() == 0) | ||
76 | mv78xx0_pcie_init(0, 1); | ||
77 | else | ||
78 | mv78xx0_pcie_init(1, 0); | ||
79 | } | ||
80 | |||
81 | return 0; | ||
82 | } | ||
83 | subsys_initcall(db78x00_pci_init); | ||
84 | |||
85 | MACHINE_START(DB78X00_BP, "Marvell DB-78x00-BP Development Board") | ||
86 | /* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */ | ||
87 | .phys_io = MV78XX0_REGS_PHYS_BASE, | ||
88 | .io_pg_offst = ((MV78XX0_REGS_VIRT_BASE) >> 18) & 0xfffc, | ||
89 | .boot_params = 0x00000100, | ||
90 | .init_machine = db78x00_init, | ||
91 | .map_io = mv78xx0_map_io, | ||
92 | .init_irq = mv78xx0_init_irq, | ||
93 | .timer = &mv78xx0_timer, | ||
94 | MACHINE_END | ||