1/* 2 * arch/arm/mach-kirkwood/openrd-setup.c 3 * 4 * Marvell OpenRD (Base|Client|Ultimate) 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/mtd/nand.h> 15#include <linux/mtd/partitions.h> 16#include <linux/ata_platform.h> 17#include <linux/mv643xx_eth.h> 18#include <linux/i2c.h> 19#include <asm/mach-types.h> 20#include <asm/mach/arch.h> 21#include <mach/kirkwood.h> 22#include <plat/mvsdio.h> 23#include "common.h" 24#include "mpp.h" 25 26static struct mtd_partition openrd_nand_parts[] = { 27 { 28 .name = "u-boot", 29 .offset = 0, 30 .size = SZ_1M, 31 .mask_flags = MTD_WRITEABLE 32 }, { 33 .name = "uImage", 34 .offset = MTDPART_OFS_NXTBLK, 35 .size = SZ_4M 36 }, { 37 .name = "root", 38 .offset = MTDPART_OFS_NXTBLK, 39 .size = MTDPART_SIZ_FULL 40 }, 41}; 42 43static struct mv643xx_eth_platform_data openrd_ge00_data = { 44 .phy_addr = MV643XX_ETH_PHY_ADDR(8), 45}; 46 47static struct mv643xx_eth_platform_data openrd_ge01_data = { 48 .phy_addr = MV643XX_ETH_PHY_ADDR(24), 49}; 50 51static struct mv_sata_platform_data openrd_sata_data = { 52 .n_ports = 2, 53}; 54 55static struct mvsdio_platform_data openrd_mvsdio_data = { 56 .gpio_card_detect = 29, /* MPP29 used as SD card detect */ 57}; 58 59static unsigned int openrd_mpp_config[] __initdata = { 60 MPP29_GPIO, 61 0 62}; 63 64static struct i2c_board_info i2c_board_info[] __initdata = { 65 { 66 I2C_BOARD_INFO("cs42l51", 0x4a), 67 }, 68}; 69 70static void __init openrd_init(void) 71{ 72 /* 73 * Basic setup. Needs to be called early. 74 */ 75 kirkwood_init(); 76 kirkwood_mpp_conf(openrd_mpp_config); 77 78 kirkwood_uart0_init(); 79 kirkwood_nand_init(ARRAY_AND_SIZE(openrd_nand_parts), 25); 80 81 kirkwood_ehci_init(); 82 83 if (machine_is_openrd_ultimate()) { 84 openrd_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0); 85 openrd_ge01_data.phy_addr = MV643XX_ETH_PHY_ADDR(1); 86 } 87 88 kirkwood_ge00_init(&openrd_ge00_data); 89 if (!machine_is_openrd_base()) 90 kirkwood_ge01_init(&openrd_ge01_data); 91 92 kirkwood_sata_init(&openrd_sata_data); 93 kirkwood_sdio_init(&openrd_mvsdio_data); 94 95 kirkwood_i2c_init(); 96 97 if (machine_is_openrd_client()) { 98 i2c_register_board_info(0, i2c_board_info, 99 ARRAY_SIZE(i2c_board_info)); 100 kirkwood_audio_init(); 101 } 102} 103 104static int __init openrd_pci_init(void) 105{ 106 if (machine_is_openrd_base() || 107 machine_is_openrd_client() || 108 machine_is_openrd_ultimate()) 109 kirkwood_pcie_init(KW_PCIE0); 110 111 return 0; 112} 113subsys_initcall(openrd_pci_init); 114 115#ifdef CONFIG_MACH_OPENRD_BASE 116MACHINE_START(OPENRD_BASE, "Marvell OpenRD Base Board") 117 /* Maintainer: Dhaval Vasa <dhaval.vasa@einfochips.com> */ 118 .phys_io = KIRKWOOD_REGS_PHYS_BASE, 119 .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc, 120 .boot_params = 0x00000100, 121 .init_machine = openrd_init, 122 .map_io = kirkwood_map_io, 123 .init_irq = kirkwood_init_irq, 124 .timer = &kirkwood_timer, 125MACHINE_END 126#endif 127 128#ifdef CONFIG_MACH_OPENRD_CLIENT 129MACHINE_START(OPENRD_CLIENT, "Marvell OpenRD Client Board") 130 /* Maintainer: Dhaval Vasa <dhaval.vasa@einfochips.com> */ 131 .phys_io = KIRKWOOD_REGS_PHYS_BASE, 132 .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc, 133 .boot_params = 0x00000100, 134 .init_machine = openrd_init, 135 .map_io = kirkwood_map_io, 136 .init_irq = kirkwood_init_irq, 137 .timer = &kirkwood_timer, 138MACHINE_END 139#endif 140 141#ifdef CONFIG_MACH_OPENRD_ULTIMATE 142MACHINE_START(OPENRD_ULTIMATE, "Marvell OpenRD Ultimate Board") 143 /* Maintainer: Dhaval Vasa <dhaval.vasa@einfochips.com> */ 144 .phys_io = KIRKWOOD_REGS_PHYS_BASE, 145 .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc, 146 .boot_params = 0x00000100, 147 .init_machine = openrd_init, 148 .map_io = kirkwood_map_io, 149 .init_irq = kirkwood_init_irq, 150 .timer = &kirkwood_timer, 151MACHINE_END 152#endif 153