1/* 2 * arch/arm/mach-kirkwood/sheevaplug-setup.c 3 * 4 * Marvell SheevaPlug 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/ata_platform.h> 15#include <linux/mtd/partitions.h> 16#include <linux/mv643xx_eth.h> 17#include <linux/gpio.h> 18#include <linux/leds.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 sheevaplug_nand_parts[] = { 27 { 28 .name = "u-boot", 29 .offset = 0, 30 .size = SZ_1M 31 }, { 32 .name = "uImage", 33 .offset = MTDPART_OFS_NXTBLK, 34 .size = SZ_4M 35 }, { 36 .name = "root", 37 .offset = MTDPART_OFS_NXTBLK, 38 .size = MTDPART_SIZ_FULL 39 }, 40}; 41 42static struct mv643xx_eth_platform_data sheevaplug_ge00_data = { 43 .phy_addr = MV643XX_ETH_PHY_ADDR(0), 44}; 45 46static struct mv_sata_platform_data sheeva_esata_sata_data = { 47 .n_ports = 2, 48}; 49 50static struct mvsdio_platform_data sheevaplug_mvsdio_data = { 51 /* unfortunately the CD signal has not been connected */ 52}; 53 54static struct mvsdio_platform_data sheeva_esata_mvsdio_data = { 55 .gpio_write_protect = 44, /* MPP44 used as SD write protect */ 56 .gpio_card_detect = 47, /* MPP47 used as SD card detect */ 57}; 58 59static struct gpio_led sheevaplug_led_pins[] = { 60 { 61 .name = "plug:green:health", 62 .default_trigger = "default-on", 63 .gpio = 49, 64 .active_low = 1, 65 }, 66}; 67 68static struct gpio_led_platform_data sheevaplug_led_data = { 69 .leds = sheevaplug_led_pins, 70 .num_leds = ARRAY_SIZE(sheevaplug_led_pins), 71}; 72 73static struct platform_device sheevaplug_leds = { 74 .name = "leds-gpio", 75 .id = -1, 76 .dev = { 77 .platform_data = &sheevaplug_led_data, 78 } 79}; 80 81static unsigned int sheevaplug_mpp_config[] __initdata = { 82 MPP29_GPIO, /* USB Power Enable */ 83 MPP49_GPIO, /* LED */ 84 0 85}; 86 87static unsigned int sheeva_esata_mpp_config[] __initdata = { 88 MPP29_GPIO, /* USB Power Enable */ 89 MPP44_GPIO, /* SD Write Protect */ 90 MPP47_GPIO, /* SD Card Detect */ 91 MPP49_GPIO, /* LED Green */ 92 0 93}; 94 95static void __init sheevaplug_init(void) 96{ 97 /* 98 * Basic setup. Needs to be called early. 99 */ 100 kirkwood_init(); 101 102 /* setup gpio pin select */ 103 if (machine_is_sheeva_esata()) 104 kirkwood_mpp_conf(sheeva_esata_mpp_config); 105 else 106 kirkwood_mpp_conf(sheevaplug_mpp_config); 107 108 kirkwood_uart0_init(); 109 kirkwood_nand_init(ARRAY_AND_SIZE(sheevaplug_nand_parts), 25); 110 111 if (gpio_request(29, "USB Power Enable") != 0 || 112 gpio_direction_output(29, 1) != 0) 113 printk(KERN_ERR "can't set up GPIO 29 (USB Power Enable)\n"); 114 kirkwood_ehci_init(); 115 116 kirkwood_ge00_init(&sheevaplug_ge00_data); 117 118 /* honor lower power consumption for plugs with out eSATA */ 119 if (machine_is_sheeva_esata()) 120 kirkwood_sata_init(&sheeva_esata_sata_data); 121 122 /* enable sd wp and sd cd on plugs with esata */ 123 if (machine_is_sheeva_esata()) 124 kirkwood_sdio_init(&sheeva_esata_mvsdio_data); 125 else 126 kirkwood_sdio_init(&sheevaplug_mvsdio_data); 127 128 platform_device_register(&sheevaplug_leds); 129} 130 131#ifdef CONFIG_MACH_SHEEVAPLUG 132MACHINE_START(SHEEVAPLUG, "Marvell SheevaPlug Reference Board") 133 /* Maintainer: shadi Ammouri <shadi@marvell.com> */ 134 .phys_io = KIRKWOOD_REGS_PHYS_BASE, 135 .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc, 136 .boot_params = 0x00000100, 137 .init_machine = sheevaplug_init, 138 .map_io = kirkwood_map_io, 139 .init_irq = kirkwood_init_irq, 140 .timer = &kirkwood_timer, 141MACHINE_END 142#endif 143 144#ifdef CONFIG_MACH_ESATA_SHEEVAPLUG 145MACHINE_START(ESATA_SHEEVAPLUG, "Marvell eSATA SheevaPlug Reference Board") 146 .phys_io = KIRKWOOD_REGS_PHYS_BASE, 147 .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc, 148 .boot_params = 0x00000100, 149 .init_machine = sheevaplug_init, 150 .map_io = kirkwood_map_io, 151 .init_irq = kirkwood_init_irq, 152 .timer = &kirkwood_timer, 153MACHINE_END 154#endif 155