Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
guruplug-setup.c
Go to the documentation of this file.
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>
23 #include "common.h"
24 #include "mpp.h"
25 
26 static 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 
42 static struct mv643xx_eth_platform_data guruplug_ge00_data = {
43  .phy_addr = MV643XX_ETH_PHY_ADDR(0),
44 };
45 
46 static struct mv643xx_eth_platform_data guruplug_ge01_data = {
47  .phy_addr = MV643XX_ETH_PHY_ADDR(1),
48 };
49 
50 static struct mv_sata_platform_data guruplug_sata_data = {
51  .n_ports = 1,
52 };
53 
54 static struct mvsdio_platform_data guruplug_mvsdio_data = {
55  /* unfortunately the CD signal has not been connected */
56 };
57 
58 static 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 
81 static struct gpio_led_platform_data guruplug_led_data = {
82  .leds = guruplug_led_pins,
83  .num_leds = ARRAY_SIZE(guruplug_led_pins),
84 };
85 
86 static struct platform_device guruplug_leds = {
87  .name = "leds-gpio",
88  .id = -1,
89  .dev = {
90  .platform_data = &guruplug_led_data,
91  }
92 };
93 
94 static 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 
102 static 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 
111  kirkwood_nand_init(ARRAY_AND_SIZE(guruplug_nand_parts), 25);
112 
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 
122 MACHINE_START(GURUPLUG, "Marvell GuruPlug Reference Board")
123  /* Maintainer: Siddarth Gore <[email protected]> */
124  .atag_offset = 0x100,
125  .init_machine = guruplug_init,
126  .map_io = kirkwood_map_io,
127  .init_early = kirkwood_init_early,
128  .init_irq = kirkwood_init_irq,
129  .timer = &kirkwood_timer,
130  .restart = kirkwood_restart,