f2fbb023e679609ef9df49b285c03af5cd0009a5
[cascardo/linux.git] / arch / arm / mach-kirkwood / board-dockstar.c
1 /*
2  * arch/arm/mach-kirkwood/board-dockstar.c
3  *
4  * Seagate FreeAgent Dockstar Board Init for drivers not converted to
5  * flattened device tree yet.
6  *
7  * This file is licensed under the terms of the GNU General Public
8  * License version 2.  This program is licensed "as is" without any
9  * warranty of any kind, whether express or implied.
10  *
11  * Copied and modified for Seagate GoFlex Net support by
12  * Joshua Coombs <josh.coombs@gmail.com> based on ArchLinux ARM's
13  * GoFlex kernel patches.
14  *
15  */
16
17 #include <linux/kernel.h>
18 #include <linux/init.h>
19 #include <linux/platform_device.h>
20 #include <linux/ata_platform.h>
21 #include <linux/mv643xx_eth.h>
22 #include <linux/of.h>
23 #include <linux/of_address.h>
24 #include <linux/of_fdt.h>
25 #include <linux/of_irq.h>
26 #include <linux/of_platform.h>
27 #include <linux/gpio.h>
28 #include <asm/mach-types.h>
29 #include <asm/mach/arch.h>
30 #include <asm/mach/map.h>
31 #include <mach/kirkwood.h>
32 #include <mach/bridge-regs.h>
33 #include <linux/platform_data/mmc-mvsdio.h>
34 #include "common.h"
35 #include "mpp.h"
36
37 static struct mv643xx_eth_platform_data dockstar_ge00_data = {
38         .phy_addr       = MV643XX_ETH_PHY_ADDR(0),
39 };
40
41 static unsigned int dockstar_mpp_config[] __initdata = {
42         MPP29_GPIO,     /* USB Power Enable */
43         MPP46_GPIO,     /* LED green */
44         MPP47_GPIO,     /* LED orange */
45         0
46 };
47
48 void __init dockstar_dt_init(void)
49 {
50         /*
51          * Basic setup. Needs to be called early.
52          */
53         kirkwood_mpp_conf(dockstar_mpp_config);
54
55         if (gpio_request(29, "USB Power Enable") != 0 ||
56             gpio_direction_output(29, 1) != 0)
57                 pr_err("can't setup GPIO 29 (USB Power Enable)\n");
58         kirkwood_ehci_init();
59
60         kirkwood_ge00_init(&dockstar_ge00_data);
61 }