ar71xx: Buffalo WLAE-AG300N initial support

The patch set for Buffalo WLAE-AG300N initial support.

There is another patch for wireless led support that
is posted separately.

Note on serial console:
This unit has buffalo standard 4 pin console, but the unit may not power
on if some console apparatus is connected. This is probably due to some
electronic interaction between the unit's electronic power switch circuit
and the serial console apparatus. If this happens, it is required to power
on the unit without the console, then quickly (re-)attach it.

[juhosg: fix coding style]

Signed-off-by: Yoichi Shinoda <shinoda@jaist.ac.jp>

SVN-Revision: 32931
This commit is contained in:
Gabor Juhos 2012-08-01 12:24:52 +00:00
parent df48d71d72
commit 010aec0619
8 changed files with 156 additions and 7 deletions

View File

@ -141,6 +141,9 @@ get_status_led() {
wzr-hp-g300nh)
status_led="buffalo:green:router"
;;
wlae-ag300n)
status_led="buffalo:green:status"
;;
wzr-hp-g300nh2)
status_led="buffalo:red:diag"
;;

View File

@ -354,6 +354,9 @@ ar71xx_board_detect() {
*WHR-HP-GN)
name="whr-hp-gn"
;;
*WLAE-AG300N)
name="wlae-ag300n"
;;
*WP543)
name="wp543"
;;

View File

@ -118,6 +118,7 @@ platform_check_image() {
whr-g301n | \
whr-hp-g300n | \
whr-hp-gn | \
wlae-ag300n | \
nbg460n_550n_550nh | \
unifi )
[ "$magic" != "2705" ] && {

View File

@ -66,6 +66,7 @@ CONFIG_ATH79_MACH_TL_WR941ND=y
CONFIG_ATH79_MACH_UBNT=y
CONFIG_ATH79_MACH_UBNT_XM=y
CONFIG_ATH79_MACH_WHR_HP_G300N=y
CONFIG_ATH79_MACH_WLAE_AG300N=y
CONFIG_ATH79_MACH_WNDR3700=y
CONFIG_ATH79_MACH_WNR2000=y
CONFIG_ATH79_MACH_WP543=y

View File

@ -0,0 +1,114 @@
/*
* Buffalo WLAE-AG300N board support
*/
#include <linux/gpio.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <asm/mach-ath79/ath79.h>
#include "dev-eth.h"
#include "dev-ap9x-pci.h"
#include "dev-gpio-buttons.h"
#include "dev-leds-gpio.h"
#include "dev-m25p80.h"
#include "dev-usb.h"
#include "machtypes.h"
#define WLAEAG300N_MAC_OFFSET 0x20c
#define WLAEAG300N_KEYS_POLL_INTERVAL 20 /* msecs */
#define WLAEAG300N_KEYS_DEBOUNCE_INTERVAL (3 * WLAEAG300N_KEYS_POLL_INTERVAL)
static struct gpio_led wlaeag300n_leds_gpio[] __initdata = {
/*
* Note: Writing 1 into GPIO 13 will power down the device.
*/
{
.name = "buffalo:green:wireless",
.gpio = 14,
.active_low = 1,
}, {
.name = "buffalo:red:wireless",
.gpio = 15,
.active_low = 1,
}, {
.name = "buffalo:green:status",
.gpio = 16,
.active_low = 1,
}, {
.name = "buffalo:red:status",
.gpio = 17,
.active_low = 1,
}
};
static struct gpio_keys_button wlaeag300n_gpio_keys[] __initdata = {
{
.desc = "function",
.type = EV_KEY,
.code = KEY_MODE,
.debounce_interval = WLAEAG300N_KEYS_DEBOUNCE_INTERVAL,
.gpio = 0,
.active_low = 1,
}, {
.desc = "reset",
.type = EV_KEY,
.code = KEY_RESTART,
.debounce_interval = WLAEAG300N_KEYS_DEBOUNCE_INTERVAL,
.gpio = 1,
.active_low = 1,
}, {
.desc = "power",
.type = EV_KEY,
.code = KEY_POWER,
.debounce_interval = WLAEAG300N_KEYS_DEBOUNCE_INTERVAL,
.gpio = 11,
.active_low = 1,
}, {
.desc = "aoss",
.type = EV_KEY,
.code = KEY_WPS_BUTTON,
.debounce_interval = WLAEAG300N_KEYS_DEBOUNCE_INTERVAL,
.gpio = 12,
.active_low = 1,
}
};
static void __init wlaeag300n_setup(void)
{
u8 *eeprom1 = (u8 *) KSEG1ADDR(0x1fff1000);
u8 *mac1 = eeprom1 + WLAEAG300N_MAC_OFFSET;
ath79_init_mac(ath79_eth0_data.mac_addr, mac1, 0);
ath79_init_mac(ath79_eth1_data.mac_addr, mac1, 1);
ath79_register_mdio(0, ~(BIT(0) | BIT(4)));
ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
ath79_eth0_data.speed = SPEED_1000;
ath79_eth0_data.duplex = DUPLEX_FULL;
ath79_eth0_data.phy_mask = BIT(0);
ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
ath79_eth1_data.phy_mask = BIT(4);
ath79_register_eth(0);
ath79_register_eth(1);
ath79_register_leds_gpio(-1, ARRAY_SIZE(wlaeag300n_leds_gpio),
wlaeag300n_leds_gpio);
ath79_register_gpio_keys_polled(-1, WLAEAG300N_KEYS_POLL_INTERVAL,
ARRAY_SIZE(wlaeag300n_gpio_keys),
wlaeag300n_gpio_keys);
ath79_register_m25p80(NULL);
ap91_pci_init(eeprom1, mac1);
}
MIPS_MACHINE(ATH79_MACH_WLAE_AG300N, "WLAE-AG300N",
"Buffalo WLAE-AG300N", wlaeag300n_setup);

View File

@ -83,3 +83,14 @@ define Profile/WHRHPGN/Description
endef
$(eval $(call Profile,WHRHPGN))
define Profile/WLAEAG300N
NAME:=Buffalo WLAE-AG300N
PACKAGES:=kmod-ledtrig-netdev
endef
define Profile/WLAEAG300N/Description
Package set optimized for the Buffalo WLAE-AG300N
endef
$(eval $(call Profile,WLAEAG300N))

View File

@ -1040,6 +1040,11 @@ define Image/Build/Profile/WHRHPGN
$(call Image/Build/Template/$(fs_64k)/$(1),WHRHPG300N,whr-hp-gn,$(whrhpgn_cmdline),$(whrhpg300n_mtdlayout),WHR-HP-GN)
endef
wlaeag300n_cmdline=board=WLAE-AG300N console=ttyS0,115200
define Image/Build/Profile/WLAEAG300N
$(call Image/Build/Template/$(fs_64k)/$(1),WHRHPG300N,wlae-ag300n,$(wlaeag300n_cmdline),$(whrhpg300n_mtdlayout),WLAE-AG300N)
endef
wzrhpg300nh_cmdline=board=WZR-HP-G300NH console=ttyS0,115200
define Image/Build/Profile/WZRHPG300NH
$(call Image/Build/Template/$(fs_128k)/$(1),WZRHPG30XNH,wzr-hp-g300nh,$(wzrhpg300nh_cmdline),WZR-HP-G300NH)
@ -1134,6 +1139,7 @@ define Image/Build/Profile/Default
$(call Image/Build/Profile/WHRG301N,$(1))
$(call Image/Build/Profile/WHRHPG300N,$(1))
$(call Image/Build/Profile/WHRHPGN,$(1))
$(call Image/Build/Profile/WLAEAG300N,$(1))
$(call Image/Build/Profile/WZRHPG300NH,$(1))
$(call Image/Build/Profile/WZRHPG300NH2,$(1))
$(call Image/Build/Profile/WZRHPAG300H,$(1))

View File

@ -1,6 +1,6 @@
--- a/arch/mips/ath79/machtypes.h
+++ b/arch/mips/ath79/machtypes.h
@@ -16,18 +16,91 @@
@@ -16,18 +16,92 @@
enum ath79_mach_type {
ATH79_MACH_GENERIC = 0,
@ -78,6 +78,7 @@
+ ATH79_MACH_WHR_G301N, /* Buffalo WHR-G301N */
+ ATH79_MACH_WHR_HP_G300N, /* Buffalo WHR-HP-G300N */
+ ATH79_MACH_WHR_HP_GN, /* Buffalo WHR-HP-GN */
+ ATH79_MACH_WLAE_AG300N, /* Buffalo WLAE-AG300N */
+ ATH79_MACH_WNDR3700, /* NETGEAR WNDR3700/WNDR3800/WNDRMAC */
+ ATH79_MACH_WNR2000, /* NETGEAR WNR2000 */
+ ATH79_MACH_WP543, /* Compex WP543 */
@ -186,7 +187,7 @@
config ATH79_MACH_PB44
bool "Atheros PB44 reference board"
select SOC_AR71XX
@@ -66,6 +137,419 @@ config ATH79_MACH_PB44
@@ -66,6 +137,427 @@ config ATH79_MACH_PB44
Say 'Y' here if you want your kernel to support the
Atheros PB44 reference board.
@ -216,6 +217,14 @@
+ select ATH79_DEV_LEDS_GPIO
+ select ATH79_DEV_M25P80
+
+config ATH79_MACH_WLAE_AG300N
+ bool "Buffalo WLAE-AG300N board support"
+ select SOC_AR71XX
+ select ATH79_DEV_ETH
+ select ATH79_DEV_GPIO_BUTTONS
+ select ATH79_DEV_LEDS_GPIO
+ select ATH79_DEV_M25P80
+
+config ATH79_MACH_WZR_HP_AG300H
+ bool "Buffalo WZR-HP-AG300H board support"
+ select SOC_AR71XX
@ -606,7 +615,7 @@
config ATH79_MACH_UBNT_XM
bool "Ubiquiti Networks XM (rev 1.0) board"
select SOC_AR724X
@@ -79,6 +563,24 @@ config ATH79_MACH_UBNT_XM
@@ -79,6 +571,24 @@ config ATH79_MACH_UBNT_XM
Say 'Y' here if you want your kernel to support the
Ubiquiti Networks XM (rev 1.0) board.
@ -631,7 +640,7 @@
endmenu
config SOC_AR71XX
@@ -114,10 +616,6 @@ config SOC_QCA955X
@@ -114,10 +624,6 @@ config SOC_QCA955X
select PCI_AR724X if PCI
def_bool n
@ -642,7 +651,7 @@
config ATH79_DEV_AP9X_PCI
select ATH79_PCI_ATH9K_FIXUP
def_bool n
@@ -128,7 +626,14 @@ config ATH79_DEV_DSA
@@ -128,7 +634,14 @@ config ATH79_DEV_DSA
config ATH79_DEV_ETH
def_bool n
@ -658,7 +667,7 @@
def_bool n
config ATH79_DEV_GPIO_BUTTONS
@@ -153,4 +658,7 @@ config ATH79_NVRAM
@@ -153,4 +666,7 @@ config ATH79_NVRAM
config ATH79_PCI_ATH9K_FIXUP
def_bool n
@ -668,7 +677,7 @@
endif
--- a/arch/mips/ath79/Makefile
+++ b/arch/mips/ath79/Makefile
@@ -36,9 +36,61 @@ obj-$(CONFIG_ATH79_PCI_ATH9K_FIXUP) += p
@@ -36,9 +36,62 @@ obj-$(CONFIG_ATH79_PCI_ATH9K_FIXUP) += pci-ath9k-fixup.o
#
# Machines
#
@ -720,6 +729,7 @@
+obj-$(CONFIG_ATH79_MACH_UBNT) += mach-ubnt.o
obj-$(CONFIG_ATH79_MACH_UBNT_XM) += mach-ubnt-xm.o
+obj-$(CONFIG_ATH79_MACH_WHR_HP_G300N) += mach-whr-hp-g300n.o
+obj-$(CONFIG_ATH79_MACH_WLAE_AG300N) += mach-wlae-ag300n.o
+obj-$(CONFIG_ATH79_MACH_WNDR3700) += mach-wndr3700.o
+obj-$(CONFIG_ATH79_MACH_WNR2000) += mach-wnr2000.o
+obj-$(CONFIG_ATH79_MACH_WP543) += mach-wp543.o