aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-kirkwood/rd88f6281-setup.c
diff options
context:
space:
mode:
authorSaeed Bishara <saeed@marvell.com>2008-06-22 16:45:06 -0400
committerLennert Buytenhek <buytenh@marvell.com>2008-06-22 16:45:06 -0400
commit651c74c74bf84ba966b52588ba3329606f3fd8d4 (patch)
tree7cb446c1da925bf1f4ca9c3a74dfe478748ec515 /arch/arm/mach-kirkwood/rd88f6281-setup.c
parent9c2af6c57c4a253b595b5eef1b665989b5f15de5 (diff)
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface, a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS interface, and IDMA/XOR engines, and depending on the model, also features one or two Gigabit Ethernet interfaces, two SATA II interfaces, one or two TWSI interfaces, one or two UARTs, a TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and an SDIO interface. This patch adds supports for the Marvell DB-88F6281-BP Development Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs, enabling support for the PCIe interface, the USB interface, the ethernet interfaces, the SATA interfaces, the TWSI interfaces, the UARTs, and the NAND controller. Signed-off-by: Saeed Bishara <saeed@marvell.com> Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Diffstat (limited to 'arch/arm/mach-kirkwood/rd88f6281-setup.c')
-rw-r--r--arch/arm/mach-kirkwood/rd88f6281-setup.c112
1 files changed, 112 insertions, 0 deletions
diff --git a/arch/arm/mach-kirkwood/rd88f6281-setup.c b/arch/arm/mach-kirkwood/rd88f6281-setup.c
new file mode 100644
index 000000000000..fe8b242d2060
--- /dev/null
+++ b/arch/arm/mach-kirkwood/rd88f6281-setup.c
@@ -0,0 +1,112 @@
1/*
2 * arch/arm/mach-kirkwood/rd88f6281-setup.c
3 *
4 * Marvell RD-88F6281 Reference 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/pci.h>
15#include <linux/irq.h>
16#include <linux/mtd/physmap.h>
17#include <linux/mtd/nand.h>
18#include <linux/timer.h>
19#include <linux/ata_platform.h>
20#include <linux/mv643xx_eth.h>
21#include <asm/mach-types.h>
22#include <asm/mach/arch.h>
23#include <asm/mach/pci.h>
24#include <asm/arch/kirkwood.h>
25#include <asm/plat-orion/orion_nand.h>
26#include "common.h"
27
28static struct mtd_partition rd88f6281_nand_parts[] = {
29 {
30 .name = "u-boot",
31 .offset = 0,
32 .size = SZ_1M
33 }, {
34 .name = "uImage",
35 .offset = MTDPART_OFS_NXTBLK,
36 .size = SZ_2M
37 }, {
38 .name = "root",
39 .offset = MTDPART_OFS_NXTBLK,
40 .size = MTDPART_SIZ_FULL
41 },
42};
43
44static struct resource rd88f6281_nand_resource = {
45 .flags = IORESOURCE_MEM,
46 .start = KIRKWOOD_NAND_MEM_PHYS_BASE,
47 .end = KIRKWOOD_NAND_MEM_PHYS_BASE +
48 KIRKWOOD_NAND_MEM_SIZE - 1,
49};
50
51static struct orion_nand_data rd88f6281_nand_data = {
52 .parts = rd88f6281_nand_parts,
53 .nr_parts = ARRAY_SIZE(rd88f6281_nand_parts),
54 .cle = 0,
55 .ale = 1,
56 .width = 8,
57};
58
59static struct platform_device rd88f6281_nand_flash = {
60 .name = "orion_nand",
61 .id = -1,
62 .dev = {
63 .platform_data = &rd88f6281_nand_data,
64 },
65 .resource = &rd88f6281_nand_resource,
66 .num_resources = 1,
67};
68
69static struct mv643xx_eth_platform_data rd88f6281_ge00_data = {
70 .phy_addr = -1,
71};
72
73static struct mv_sata_platform_data rd88f6281_sata_data = {
74 .n_ports = 2,
75};
76
77static void __init rd88f6281_init(void)
78{
79 /*
80 * Basic setup. Needs to be called early.
81 */
82 kirkwood_init();
83
84 kirkwood_ehci_init();
85 kirkwood_ge00_init(&rd88f6281_ge00_data);
86 kirkwood_rtc_init();
87 kirkwood_sata_init(&rd88f6281_sata_data);
88 kirkwood_uart0_init();
89 kirkwood_uart1_init();
90
91 platform_device_register(&rd88f6281_nand_flash);
92}
93
94static int __init rd88f6281_pci_init(void)
95{
96 if (machine_is_rd88f6281())
97 kirkwood_pcie_init();
98
99 return 0;
100}
101subsys_initcall(rd88f6281_pci_init);
102
103MACHINE_START(RD88F6281, "Marvell RD-88F6281 Reference Board")
104 /* Maintainer: Saeed Bishara <saeed@marvell.com> */
105 .phys_io = KIRKWOOD_REGS_PHYS_BASE,
106 .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc,
107 .boot_params = 0x00000100,
108 .init_machine = rd88f6281_init,
109 .map_io = kirkwood_map_io,
110 .init_irq = kirkwood_init_irq,
111 .timer = &kirkwood_timer,
112MACHINE_END