blob: a513e1017c17af8e1b7eef00978e0296cf519366 [file] [log] [blame]
Saeed Bishara651c74c2008-06-22 22:45:06 +02001/*
2 * arch/arm/mach-kirkwood/db88f6281-bp-setup.c
3 *
4 * Marvell DB-88F6281-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/pci.h>
15#include <linux/irq.h>
Saeed Bishara651c74c2008-06-22 22:45:06 +020016#include <linux/mtd/nand.h>
Nicolas Pitre3c2613d2009-02-22 12:56:33 -050017#include <linux/mtd/partitions.h>
Saeed Bishara651c74c2008-06-22 22:45:06 +020018#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>
Russell Kinga09e64f2008-08-05 16:14:15 +010024#include <mach/kirkwood.h>
Nicolas Pitre3c2613d2009-02-22 12:56:33 -050025#include <plat/orion_nand.h>
Nicolas Pitre8235ee02009-02-14 03:15:55 -050026#include <plat/mvsdio.h>
Saeed Bishara651c74c2008-06-22 22:45:06 +020027#include "common.h"
Nicolas Pitre8235ee02009-02-14 03:15:55 -050028#include "mpp.h"
Saeed Bishara651c74c2008-06-22 22:45:06 +020029
Nicolas Pitre3c2613d2009-02-22 12:56:33 -050030static struct mtd_partition db88f6281_nand_parts[] = {
31 {
32 .name = "u-boot",
33 .offset = 0,
34 .size = SZ_1M
35 }, {
36 .name = "uImage",
37 .offset = MTDPART_OFS_NXTBLK,
38 .size = SZ_4M
39 }, {
40 .name = "root",
41 .offset = MTDPART_OFS_NXTBLK,
42 .size = MTDPART_SIZ_FULL
43 },
44};
45
46static struct resource db88f6281_nand_resource = {
47 .flags = IORESOURCE_MEM,
48 .start = KIRKWOOD_NAND_MEM_PHYS_BASE,
49 .end = KIRKWOOD_NAND_MEM_PHYS_BASE +
50 KIRKWOOD_NAND_MEM_SIZE - 1,
51};
52
53static struct orion_nand_data db88f6281_nand_data = {
54 .parts = db88f6281_nand_parts,
55 .nr_parts = ARRAY_SIZE(db88f6281_nand_parts),
56 .cle = 0,
57 .ale = 1,
58 .width = 8,
59 .chip_delay = 25,
60};
61
62static struct platform_device db88f6281_nand_flash = {
63 .name = "orion_nand",
64 .id = -1,
65 .dev = {
66 .platform_data = &db88f6281_nand_data,
67 },
68 .resource = &db88f6281_nand_resource,
69 .num_resources = 1,
70};
71
Saeed Bishara651c74c2008-06-22 22:45:06 +020072static struct mv643xx_eth_platform_data db88f6281_ge00_data = {
Lennert Buytenhekac840602008-08-26 14:06:47 +020073 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
Saeed Bishara651c74c2008-06-22 22:45:06 +020074};
75
76static struct mv_sata_platform_data db88f6281_sata_data = {
77 .n_ports = 2,
78};
79
Nicolas Pitre8235ee02009-02-14 03:15:55 -050080static struct mvsdio_platform_data db88f6281_mvsdio_data = {
81 .gpio_write_protect = 37,
82 .gpio_card_detect = 38,
83};
84
85static unsigned int db88f6281_mpp_config[] __initdata = {
86 MPP37_GPIO,
87 MPP38_GPIO,
88 0
89};
90
Saeed Bishara651c74c2008-06-22 22:45:06 +020091static void __init db88f6281_init(void)
92{
93 /*
94 * Basic setup. Needs to be called early.
95 */
96 kirkwood_init();
Nicolas Pitre8235ee02009-02-14 03:15:55 -050097 kirkwood_mpp_conf(db88f6281_mpp_config);
Saeed Bishara651c74c2008-06-22 22:45:06 +020098
99 kirkwood_ehci_init();
100 kirkwood_ge00_init(&db88f6281_ge00_data);
101 kirkwood_rtc_init();
102 kirkwood_sata_init(&db88f6281_sata_data);
103 kirkwood_uart0_init();
Nicolas Pitre8235ee02009-02-14 03:15:55 -0500104 kirkwood_sdio_init(&db88f6281_mvsdio_data);
Nicolas Pitre3c2613d2009-02-22 12:56:33 -0500105
106 platform_device_register(&db88f6281_nand_flash);
Saeed Bishara651c74c2008-06-22 22:45:06 +0200107}
108
109static int __init db88f6281_pci_init(void)
110{
111 if (machine_is_db88f6281_bp())
112 kirkwood_pcie_init();
113
114 return 0;
115}
116subsys_initcall(db88f6281_pci_init);
117
118MACHINE_START(DB88F6281_BP, "Marvell DB-88F6281-BP Development Board")
119 /* Maintainer: Saeed Bishara <saeed@marvell.com> */
120 .phys_io = KIRKWOOD_REGS_PHYS_BASE,
121 .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc,
122 .boot_params = 0x00000100,
123 .init_machine = db88f6281_init,
124 .map_io = kirkwood_map_io,
125 .init_irq = kirkwood_init_irq,
126 .timer = &kirkwood_timer,
127MACHINE_END