ar71xx: use netgear prefix for WNR2200 LED names
[openwrt.git] / target / linux / ar71xx / files / arch / mips / ath79 / mach-wnr2200.c
1 /*
2  *  NETGEAR WNR2200 board support
3  *
4  *  Copyright (C) 2013 Aidan Kissane <aidankissane at googlemail.com>
5  *
6  *  This program is free software; you can redistribute it and/or modify it
7  *  under the terms of the GNU General Public License version 2 as published
8  *  by the Free Software Foundation.
9  */
10
11 #include <linux/gpio.h>
12
13 #include <linux/mtd/mtd.h>
14 #include <linux/mtd/partitions.h>
15
16 #include <asm/mach-ath79/ath79.h>
17
18 #include "dev-ap9x-pci.h"
19 #include "dev-eth.h"
20 #include "dev-gpio-buttons.h"
21 #include "dev-leds-gpio.h"
22 #include "dev-m25p80.h"
23 #include "dev-usb.h"
24 #include "machtypes.h"
25
26 #define WNR2200_GPIO_LED_LAN2_AMBER     0
27 #define WNR2200_GPIO_LED_LAN4_AMBER     1
28 #define WNR2200_GPIO_LED_WPS            5
29 #define WNR2200_GPIO_LED_WAN_GREEN      7
30 #define WNR2200_GPIO_LED_USB            8
31 #define WNR2200_GPIO_LED_LAN3_AMBER     11
32 #define WNR2200_GPIO_LED_WAN_AMBER      12
33 #define WNR2200_GPIO_LED_LAN1_GREEN     13
34 #define WNR2200_GPIO_LED_LAN2_GREEN     14
35 #define WNR2200_GPIO_LED_LAN3_GREEN     15
36 #define WNR2200_GPIO_LED_LAN4_GREEN     16
37 #define WNR2200_GPIO_LED_PWR_AMBER      21
38 #define WNR2200_GPIO_LED_PWR_GREEN      22
39
40 #define WNR2200_GPIO_USB_POWER          24
41
42 #define WNR2200_KEYS_POLL_INTERVAL      20 /* msecs */
43 #define WNR2200_KEYS_DEBOUNCE_INTERVAL  (3 * WNR2200_KEYS_POLL_INTERVAL)
44
45 #define WNR2200_MAC0_OFFSET             0
46 #define WNR2200_MAC1_OFFSET             6
47 #define WNR2200_PCIE_CALDATA_OFFSET     0x1000
48
49 static struct gpio_led wnr2200_leds_gpio[] __initdata = {
50         {
51                 .name           = "netgear:amber:lan2",
52                 .gpio           = WNR2200_GPIO_LED_LAN2_AMBER,
53                 .active_low     = 1,
54         }, {
55                 .name           = "netgear:amber:lan4",
56                 .gpio           = WNR2200_GPIO_LED_LAN4_AMBER,
57                 .active_low     = 1,
58         }, {
59                 .name           = "netgear:green:wps",
60                 .gpio           = WNR2200_GPIO_LED_WPS,
61                 .active_low     = 1,
62         }, {
63                 .name           = "netgear:green:wan",
64                 .gpio           = WNR2200_GPIO_LED_WAN_GREEN,
65                 .active_low     = 1,
66         }, {
67                 .name           = "netgear:green:usb",
68                 .gpio           = WNR2200_GPIO_LED_USB,
69                 .active_low     = 1,
70         }, {
71                 .name           = "netgear:amber:lan3",
72                 .gpio           = WNR2200_GPIO_LED_LAN3_AMBER,
73                 .active_low     = 1,
74         }, {
75                 .name           = "netgear:amber:wan",
76                 .gpio           = WNR2200_GPIO_LED_WAN_AMBER,
77                 .active_low     = 1,
78         }, {
79                 .name           = "netgear:green:lan1",
80                 .gpio           = WNR2200_GPIO_LED_LAN1_GREEN,
81                 .active_low     = 1,
82         }, {
83                 .name           = "netgear:green:lan2",
84                 .gpio           = WNR2200_GPIO_LED_LAN2_GREEN,
85                 .active_low     = 1,
86         }, {
87                 .name           = "netgear:green:lan3",
88                 .gpio           = WNR2200_GPIO_LED_LAN3_GREEN,
89                 .active_low     = 1,
90         }, {
91                 .name           = "netgear:green:lan4",
92                 .gpio           = WNR2200_GPIO_LED_LAN4_GREEN,
93                 .active_low     = 1,
94         }, {
95                 .name           = "netgear:amber:power",
96                 .gpio           = WNR2200_GPIO_LED_PWR_AMBER,
97                 .active_low     = 1,
98         }, {
99                 .name           = "netgear:green:power",
100                 .gpio           = WNR2200_GPIO_LED_PWR_GREEN,
101                 .active_low     = 1,
102         }
103 };
104
105 static void __init wnr2200_setup(void)
106 {
107         u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
108
109         ath79_register_mdio(0, 0x0);
110
111         ath79_init_mac(ath79_eth0_data.mac_addr, art+WNR2200_MAC0_OFFSET, 0);
112         ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
113         ath79_eth0_data.speed = SPEED_100;
114         ath79_eth0_data.duplex = DUPLEX_FULL;
115
116         ath79_init_mac(ath79_eth1_data.mac_addr, art+WNR2200_MAC1_OFFSET, 0);
117         ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
118         ath79_eth1_data.phy_mask = 0x10;
119
120         ath79_register_eth(0);
121         ath79_register_eth(1);
122
123         ath79_register_m25p80(NULL);
124         ap91_pci_init(art + WNR2200_PCIE_CALDATA_OFFSET, NULL);
125
126         ath79_register_leds_gpio(-1, ARRAY_SIZE(wnr2200_leds_gpio),
127                                         wnr2200_leds_gpio);
128
129         /* enable power for the USB port */
130         gpio_request_one(WNR2200_GPIO_USB_POWER,
131                         GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
132                         "USB power");
133
134         ath79_register_usb();
135 }
136
137 MIPS_MACHINE(ATH79_MACH_WNR2200, "WNR2200", "NETGEAR WNR2200", wnr2200_setup);