Root/target/linux/ar71xx/files/arch/mips/ath79/mach-wzr-hp-g300nh2.c

1/*
2 * Buffalo WZR-HP-G300NH2 board support
3 *
4 * Copyright (C) 2011 Felix Fietkau <nbd@openwrt.org>
5 * Copyright (C) 2011 Mark Deneen <mdeneen@gmail.com>
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License version 2 as published
9 * by the Free Software Foundation.
10 */
11
12#include <linux/gpio.h>
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 WZRHPG300NH2_MAC_OFFSET 0x20c
27#define WZRHPG300NH2_KEYS_POLL_INTERVAL 20 /* msecs */
28#define WZRHPG300NH2_KEYS_DEBOUNCE_INTERVAL (3 * WZRHPG300NH2_KEYS_POLL_INTERVAL)
29
30static struct mtd_partition wzrhpg300nh2_flash_partitions[] = {
31    {
32        .name = "u-boot",
33        .offset = 0,
34        .size = 0x0040000,
35        .mask_flags = MTD_WRITEABLE,
36    }, {
37        .name = "u-boot-env",
38        .offset = 0x0040000,
39        .size = 0x0010000,
40        .mask_flags = MTD_WRITEABLE,
41    }, {
42        .name = "art",
43        .offset = 0x0050000,
44        .size = 0x0010000,
45        .mask_flags = MTD_WRITEABLE,
46    }, {
47        .name = "kernel",
48        .offset = 0x0060000,
49        .size = 0x0100000,
50    }, {
51        .name = "rootfs",
52        .offset = 0x0160000,
53        .size = 0x1e90000,
54    }, {
55        .name = "user_property",
56        .offset = 0x1ff0000,
57        .size = 0x0010000,
58        .mask_flags = MTD_WRITEABLE,
59    }, {
60        .name = "firmware",
61        .offset = 0x0060000,
62        .size = 0x1f90000,
63    }
64};
65
66static struct flash_platform_data wzrhpg300nh2_flash_data = {
67    .parts = wzrhpg300nh2_flash_partitions,
68    .nr_parts = ARRAY_SIZE(wzrhpg300nh2_flash_partitions),
69};
70
71static struct gpio_led wzrhpg300nh2_leds_gpio[] __initdata = {
72    {
73        .name = "buffalo:red:diag",
74        .gpio = 16,
75        .active_low = 1,
76    },
77};
78
79static struct gpio_led wzrhpg300nh2_wmac_leds_gpio[] = {
80    {
81        .name = "buffalo:blue:usb",
82        .gpio = 4,
83        .active_low = 1,
84    },
85    {
86        .name = "buffalo:orange:security",
87        .gpio = 6,
88        .active_low = 1,
89    },
90    {
91        .name = "buffalo:green:router",
92        .gpio = 7,
93        .active_low = 1,
94    },
95    {
96        .name = "buffalo:blue:movie_engine_on",
97        .gpio = 8,
98        .active_low = 1,
99    },
100    {
101        .name = "buffalo:blue:movie_engine_off",
102        .gpio = 9,
103        .active_low = 1,
104    },
105};
106
107/* The AOSS button is wmac gpio 12 */
108static struct gpio_keys_button wzrhpg300nh2_gpio_keys[] __initdata = {
109    {
110        .desc = "reset",
111        .type = EV_KEY,
112        .code = KEY_RESTART,
113        .debounce_interval = WZRHPG300NH2_KEYS_DEBOUNCE_INTERVAL,
114        .gpio = 1,
115        .active_low = 1,
116    }, {
117        .desc = "usb",
118        .type = EV_KEY,
119        .code = BTN_2,
120        .debounce_interval = WZRHPG300NH2_KEYS_DEBOUNCE_INTERVAL,
121        .gpio = 7,
122        .active_low = 1,
123    }, {
124        .desc = "qos",
125        .type = EV_KEY,
126        .code = BTN_3,
127        .debounce_interval = WZRHPG300NH2_KEYS_DEBOUNCE_INTERVAL,
128        .gpio = 11,
129        .active_low = 0,
130    }, {
131        .desc = "router_on",
132        .type = EV_KEY,
133        .code = BTN_5,
134        .debounce_interval = WZRHPG300NH2_KEYS_DEBOUNCE_INTERVAL,
135        .gpio = 8,
136        .active_low = 0,
137    },
138};
139
140static void __init wzrhpg300nh2_setup(void)
141{
142
143    u8 *eeprom = (u8 *) KSEG1ADDR(0x1f051000);
144    u8 *mac0 = eeprom + WZRHPG300NH2_MAC_OFFSET;
145    /* There is an eth1 but it is not connected to the switch */
146
147    ath79_register_m25p80_multi(&wzrhpg300nh2_flash_data);
148
149    ath79_init_mac(ath79_eth0_data.mac_addr, mac0, 0);
150    ath79_register_mdio(0, ~(BIT(0)));
151
152    ath79_init_mac(ath79_eth0_data.mac_addr, mac0, 0);
153    ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
154    ath79_eth0_data.speed = SPEED_1000;
155    ath79_eth0_data.duplex = DUPLEX_FULL;
156    ath79_eth0_data.phy_mask = BIT(0);
157
158    ath79_register_eth(0);
159    ath79_register_usb();
160    /* gpio13 is usb power. Turn it on. */
161    gpio_request(13, "usb");
162    gpio_direction_output(13, 1);
163
164    ath79_register_leds_gpio(-1, ARRAY_SIZE(wzrhpg300nh2_leds_gpio),
165                 wzrhpg300nh2_leds_gpio);
166    ath79_register_gpio_keys_polled(-1, WZRHPG300NH2_KEYS_POLL_INTERVAL,
167                    ARRAY_SIZE(wzrhpg300nh2_gpio_keys),
168                    wzrhpg300nh2_gpio_keys);
169    ap9x_pci_setup_wmac_led_pin(0, 5);
170    ap9x_pci_setup_wmac_leds(0, wzrhpg300nh2_wmac_leds_gpio,
171                ARRAY_SIZE(wzrhpg300nh2_wmac_leds_gpio));
172
173    ap91_pci_init(eeprom, mac0);
174}
175
176MIPS_MACHINE(ATH79_MACH_WZR_HP_G300NH2, "WZR-HP-G300NH2",
177         "Buffalo WZR-HP-G300NH2", wzrhpg300nh2_setup);
178

Archive Download this file



interactive