brcmsmac: rework of mac80211 .flush() callback operation
[pandora-kernel.git] / arch / arm / mach-kirkwood / board-ns2.c
1 /*
2  * Copyright 2012 (C), Simon Guinot <simon.guinot@sequanux.org>
3  *
4  * arch/arm/mach-kirkwood/board-ns2.c
5  *
6  * LaCie Network Space v2 board (and parents) initialization for drivers
7  * not 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 <linux/of.h>
20 #include "common.h"
21 #include "mpp.h"
22
23 static struct mv643xx_eth_platform_data ns2_ge00_data = {
24         .phy_addr       = MV643XX_ETH_PHY_ADDR(8),
25 };
26
27 static unsigned int ns2_mpp_config[] __initdata = {
28         MPP0_SPI_SCn,
29         MPP1_SPI_MOSI,
30         MPP2_SPI_SCK,
31         MPP3_SPI_MISO,
32         MPP4_NF_IO6,
33         MPP5_NF_IO7,
34         MPP6_SYSRST_OUTn,
35         MPP7_GPO,               /* Fan speed (bit 1) */
36         MPP8_TW0_SDA,
37         MPP9_TW0_SCK,
38         MPP10_UART0_TXD,
39         MPP11_UART0_RXD,
40         MPP12_GPO,              /* Red led */
41         MPP14_GPIO,             /* USB fuse */
42         MPP16_GPIO,             /* SATA 0 power */
43         MPP17_GPIO,             /* SATA 1 power */
44         MPP18_NF_IO0,
45         MPP19_NF_IO1,
46         MPP20_SATA1_ACTn,
47         MPP21_SATA0_ACTn,
48         MPP22_GPIO,             /* Fan speed (bit 0) */
49         MPP23_GPIO,             /* Fan power */
50         MPP24_GPIO,             /* USB mode select */
51         MPP25_GPIO,             /* Fan rotation fail */
52         MPP26_GPIO,             /* USB device vbus */
53         MPP28_GPIO,             /* USB enable host vbus */
54         MPP29_GPIO,             /* Blue led (slow register) */
55         MPP30_GPIO,             /* Blue led (command register) */
56         MPP31_GPIO,             /* Board power off */
57         MPP32_GPIO,             /* Power button (0 = Released, 1 = Pushed) */
58         MPP33_GPO,              /* Fan speed (bit 2) */
59         0
60 };
61
62 #define NS2_GPIO_POWER_OFF      31
63
64 static void ns2_power_off(void)
65 {
66         gpio_set_value(NS2_GPIO_POWER_OFF, 1);
67 }
68
69 void __init ns2_init(void)
70 {
71         /*
72          * Basic setup. Needs to be called early.
73          */
74         kirkwood_mpp_conf(ns2_mpp_config);
75
76         if (of_machine_is_compatible("lacie,netspace_lite_v2") ||
77             of_machine_is_compatible("lacie,netspace_mini_v2"))
78                 ns2_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0);
79         kirkwood_ge00_init(&ns2_ge00_data);
80
81         if (gpio_request(NS2_GPIO_POWER_OFF, "power-off") == 0 &&
82             gpio_direction_output(NS2_GPIO_POWER_OFF, 0) == 0)
83                 pm_power_off = ns2_power_off;
84         else
85                 pr_err("ns2: failed to configure power-off GPIO\n");
86 }