1/* 2 * arch/arm/mach-kirkwood/guruplug-setup.c 3 * 4 * Marvell GuruPlug 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/mtd/partitions.h> 15#include <linux/ata_platform.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 guruplug_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 guruplug_ge00_data = { 43 .phy_addr = MV643XX_ETH_PHY_ADDR(0), 44}; 45 46static struct mv643xx_eth_platform_data guruplug_ge01_data = { 47 .phy_addr = MV643XX_ETH_PHY_ADDR(1), 48}; 49 50static struct mv_sata_platform_data guruplug_sata_data = { 51 .n_ports = 1, 52}; 53 54static struct mvsdio_platform_data guruplug_mvsdio_data = { 55 /* unfortunately the CD signal has not been connected */ 56}; 57 58static struct gpio_led guruplug_led_pins[] = { 59 { 60 .name = "guruplug:red:health", 61 .gpio = 46, 62 .active_low = 1, 63 }, 64 { 65 .name = "guruplug:green:health", 66 .gpio = 47, 67 .active_low = 1, 68 }, 69 { 70 .name = "guruplug:red:wmode", 71 .gpio = 48, 72 .active_low = 1, 73 }, 74 { 75 .name = "guruplug:green:wmode", 76 .gpio = 49, 77 .active_low = 1, 78 }, 79}; 80 81static struct gpio_led_platform_data guruplug_led_data = { 82 .leds = guruplug_led_pins, 83 .num_leds = ARRAY_SIZE(guruplug_led_pins), 84}; 85 86static struct platform_device guruplug_leds = { 87 .name = "leds-gpio", 88 .id = -1, 89 .dev = { 90 .platform_data = &guruplug_led_data, 91 } 92}; 93 94static unsigned int guruplug_mpp_config[] __initdata = { 95 MPP46_GPIO, /* M_RLED */ 96 MPP47_GPIO, /* M_GLED */ 97 MPP48_GPIO, /* B_RLED */ 98 MPP49_GPIO, /* B_GLED */ 99 0 100}; 101 102static void __init guruplug_init(void) 103{ 104 /* 105 * Basic setup. Needs to be called early. 106 */ 107 kirkwood_init(); 108 kirkwood_mpp_conf(guruplug_mpp_config); 109 110 kirkwood_uart0_init(); 111 kirkwood_nand_init(ARRAY_AND_SIZE(guruplug_nand_parts), 25); 112 113 kirkwood_ehci_init(); 114 kirkwood_ge00_init(&guruplug_ge00_data); 115 kirkwood_ge01_init(&guruplug_ge01_data); 116 kirkwood_sata_init(&guruplug_sata_data); 117 kirkwood_sdio_init(&guruplug_mvsdio_data); 118 119 platform_device_register(&guruplug_leds); 120} 121 122MACHINE_START(GURUPLUG, "Marvell GuruPlug Reference Board") 123 /* Maintainer: Siddarth Gore <gores@marvell.com> */ 124 .phys_io = KIRKWOOD_REGS_PHYS_BASE, 125 .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc, 126 .boot_params = 0x00000100, 127 .init_machine = guruplug_init, 128 .map_io = kirkwood_map_io, 129 .init_irq = kirkwood_init_irq, 130 .timer = &kirkwood_timer, 131MACHINE_END 132