Commit | Line | Data |
---|---|---|
794d15b2 SS |
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> | |
a09e64fb | 16 | #include <mach/mv78xx0.h> |
794d15b2 SS |
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 |