]> rtime.felk.cvut.cz Git - can-eth-gw-linux.git/blob - arch/arm/mach-kirkwood/board-lsxl.c
mm/bootmem.c: remove unused wrapper function reserve_bootmem_generic()
[can-eth-gw-linux.git] / arch / arm / mach-kirkwood / board-lsxl.c
1 /*
2  * Copyright 2012 (C), Michael Walle <michael@walle.cc>
3  *
4  * arch/arm/mach-kirkwood/board-lsxl.c
5  *
6  * Buffalo Linkstation LS-XHL and LS-CHLv2 init for drivers not
7  * converted to flattened device tree yet.
8  *
9  * This file is licensed under the terms of the GNU General Public
10  * License version 2.  This program is licensed "as is" without any
11  * warranty of any kind, whether express or implied.
12  */
13
14 #include <linux/kernel.h>
15 #include <linux/init.h>
16 #include <linux/platform_device.h>
17 #include <linux/mv643xx_eth.h>
18 #include <linux/gpio.h>
19 #include "common.h"
20 #include "mpp.h"
21
22 static struct mv643xx_eth_platform_data lsxl_ge00_data = {
23         .phy_addr       = MV643XX_ETH_PHY_ADDR(0),
24 };
25
26 static struct mv643xx_eth_platform_data lsxl_ge01_data = {
27         .phy_addr       = MV643XX_ETH_PHY_ADDR(8),
28 };
29
30 static unsigned int lsxl_mpp_config[] __initdata = {
31         MPP10_GPO,      /* HDD Power Enable */
32         MPP11_GPIO,     /* USB Vbus Enable */
33         MPP18_GPO,      /* FAN High Enable# */
34         MPP19_GPO,      /* FAN Low Enable# */
35         MPP36_GPIO,     /* Function Blue LED */
36         MPP37_GPIO,     /* Alarm LED */
37         MPP38_GPIO,     /* Info LED */
38         MPP39_GPIO,     /* Power LED */
39         MPP40_GPIO,     /* Fan Lock */
40         MPP41_GPIO,     /* Function Button */
41         MPP42_GPIO,     /* Power Switch */
42         MPP43_GPIO,     /* Power Auto Switch */
43         MPP48_GPIO,     /* Function Red LED */
44         0
45 };
46
47 /*
48  * On the LS-XHL/LS-CHLv2, the shutdown process is following:
49  * - Userland monitors key events until the power switch goes to off position
50  * - The board reboots
51  * - U-boot starts and goes into an idle mode waiting for the user
52  *   to move the switch to ON position
53  *
54  */
55 static void lsxl_power_off(void)
56 {
57         kirkwood_restart('h', NULL);
58 }
59
60 #define LSXL_GPIO_HDD_POWER 10
61 #define LSXL_GPIO_USB_POWER 11
62
63 void __init lsxl_init(void)
64 {
65         /*
66          * Basic setup. Needs to be called early.
67          */
68         kirkwood_mpp_conf(lsxl_mpp_config);
69
70         /* usb and sata power on */
71         gpio_set_value(LSXL_GPIO_USB_POWER, 1);
72         gpio_set_value(LSXL_GPIO_HDD_POWER, 1);
73
74         kirkwood_ehci_init();
75         kirkwood_ge00_init(&lsxl_ge00_data);
76         kirkwood_ge01_init(&lsxl_ge01_data);
77
78         /* register power-off method */
79         pm_power_off = lsxl_power_off;
80 }