ar71xx: Buffalo WHR-HP-G300N kernel support

The initial support for the Buffalo WHR-HP-G300N box.
The code was confirmed to boot and run, but not tested in depth.

Known problem: iw phy phy0 info shows:
	Coverage class: 0 (up to 0m)
	Available Antennas: TX 0 RX 0

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

SVN-Revision: 28567
This commit is contained in:
Gabor Juhos 2011-10-24 21:49:26 +00:00
parent 61441fe2de
commit 9d51cda2db
9 changed files with 213 additions and 1 deletions

View file

@ -0,0 +1,24 @@
config interface loopback
option ifname lo
option proto static
option ipaddr 127.0.0.1
option netmask 255.0.0.0
config interface lan
option ifname eth0
option type bridge
option proto static
option ipaddr 192.168.1.1
option netmask 255.255.255.0
config interface wan
option ifname eth1
option proto dhcp
config switch eth0
option enable_vlan 1
config switch_vlan
option device eth0
option vlan 1
option ports "0 1 2 3 4"

View file

@ -111,6 +111,9 @@ get_status_led() {
unifi)
status_led="ubnt:green:dome"
;;
whr-hp-g300n)
status_led="whr-hp-g300n:green:router"
;;
wndr3700 | wndr3700v2)
status_led="wndr3700:green:power"
;;

View file

@ -169,6 +169,9 @@ ar71xx_board_name() {
*WZR-HP-G300NH)
name="wzr-hp-g300nh"
;;
*WHR-HP-G300N)
name="whr-hp-g300n"
;;
*ZCN-1523H-2)
name="zcn-1523h-2"
;;

View file

@ -76,7 +76,7 @@ platform_check_image() {
}
return 0
;;
ap81 | ap83 | dir-600-a1 | dir-615-c1 | dir-825-b1 | mzk-w04nu | mzk-w300nh | tew-632brp | wrt400n | bullet-m | nanostation-m | rocket-m | wzr-hp-g300nh | wzr-hp-ag300h | nbg460n_550n_550nh | unifi )
ap81 | ap83 | dir-600-a1 | dir-615-c1 | dir-825-b1 | mzk-w04nu | mzk-w300nh | tew-632brp | wrt400n | bullet-m | nanostation-m | rocket-m | wzr-hp-g300nh | wzr-hp-ag300h | whr-hp-g300n | nbg460n_550n_550nh | unifi )
[ "$magic" != "2705" ] && {
echo "Invalid image type."
return 1

View file

@ -44,6 +44,7 @@ CONFIG_AR71XX_MACH_TL_WR741ND=y
CONFIG_AR71XX_MACH_TL_WR841N_V1=y
CONFIG_AR71XX_MACH_TL_WR941ND=y
CONFIG_AR71XX_MACH_UBNT=y
# CONFIG_AR71XX_MACH_WHR_HP_G300N is not set
CONFIG_AR71XX_MACH_WNDR3700=y
CONFIG_AR71XX_MACH_WNR2000=y
CONFIG_AR71XX_MACH_WP543=y

View file

@ -145,6 +145,14 @@ config AR71XX_MACH_WZR_HP_G300NH
select AR71XX_DEV_USB
select RTL8366_SMI
config AR71XX_MACH_WHR_HP_G300N
bool "Buffalo WHR-HP-G300N board support"
select SOC_AR724X
select AR71XX_DEV_M25P80
select AR71XX_DEV_AP91_PCI if PCI
select AR71XX_DEV_GPIO_BUTTONS
select AR71XX_DEV_LEDS_GPIO
config AR71XX_MACH_WP543
bool "Compex WP543/WPJ543 board support"
select SOC_AR71XX

View file

@ -59,6 +59,7 @@ obj-$(CONFIG_AR71XX_MACH_TL_WR941ND) += mach-tl-wr941nd.o
obj-$(CONFIG_AR71XX_MACH_TL_WR1043ND) += mach-tl-wr1043nd.o
obj-$(CONFIG_AR71XX_MACH_TL_WR703N) += mach-tl-wr703n.o
obj-$(CONFIG_AR71XX_MACH_UBNT) += mach-ubnt.o
obj-$(CONFIG_AR71XX_MACH_WHR_HP_G300N) += mach-whr-hp-g300n.o
obj-$(CONFIG_AR71XX_MACH_WNDR3700) += mach-wndr3700.o
obj-$(CONFIG_AR71XX_MACH_WNR2000) += mach-wnr2000.o
obj-$(CONFIG_AR71XX_MACH_WP543) += mach-wp543.o

View file

@ -0,0 +1,171 @@
/*
* Buffalo WHR-HP-G300N board support
*
* based on ...
*
* TP-LINK TL-WR741ND board support
*
* Copyright (C) 2009-2010 Gabor Juhos <juhosg@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
* by the Free Software Foundation.
*/
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <asm/mach-ar71xx/ar71xx.h>
#include "machtype.h"
#include "devices.h"
#include "dev-m25p80.h"
#include "dev-ap91-pci.h"
#include "dev-gpio-buttons.h"
#include "dev-leds-gpio.h"
#define WHRHPG300N_GPIO_LED_SECURITY 0
#define WHRHPG300N_GPIO_LED_DIAG 1
#define WHRHPG300N_GPIO_LED_ROUTER 6
#define WHRHPG300N_GPIO_BTN_ROUTER_ON 7
#define WHRHPG300N_GPIO_BTN_ROUTER_AUTO 8
#define WHRHPG300N_GPIO_BTN_RESET 11
#define WHRHPG300N_GPIO_BTN_AOSS 12
#define WHRHPG300N_KEYS_POLL_INTERVAL 20 /* msecs */
#define WHRHPG300N_KEYS_DEBOUNCE_INTERVAL (3 * WHRHPG300N_KEYS_POLL_INTERVAL)
#define WHRHPG300N_MAC_OFFSET 0x20c
#ifdef CONFIG_MTD_PARTITIONS
static struct mtd_partition whrhpg300n_partitions[] = {
{
.name = "u-boot",
.offset = 0,
.size = 0x03e000,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "u-boot-env",
.offset = 0x03e000,
.size = 0x002000,
}, {
.name = "kernel",
.offset = 0x040000,
.size = 0x0e0000,
}, {
.name = "rootfs",
.offset = 0x120000,
.size = 0x2c0000,
}, {
.name = "NVRAM",
.offset = 0x3e0000,
.size = 0x010000,
}, {
.name = "ART",
.offset = 0x3f0000,
.size = 0x010000,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "firmware",
.offset = 0x040000,
.size = 0x3a0000,
}
};
#endif /* CONFIG_MTD_PARTITIONS */
static struct flash_platform_data whrhpg300n_flash_data = {
#ifdef CONFIG_MTD_PARTITIONS
.parts = whrhpg300n_partitions,
.nr_parts = ARRAY_SIZE(whrhpg300n_partitions),
#endif
};
static struct gpio_led whrhpg300n_leds_gpio[] __initdata = {
{
.name = "whr-hp-g300n:orange:security",
.gpio = WHRHPG300N_GPIO_LED_SECURITY,
.active_low = 1,
}, {
.name = "whr-hp-g300n:red:diag",
.gpio = WHRHPG300N_GPIO_LED_DIAG,
.active_low = 1,
}, {
.name = "whr-hp-g300n:green:router",
.gpio = WHRHPG300N_GPIO_LED_ROUTER,
.active_low = 1,
}
};
static struct gpio_keys_button whrhpg300n_gpio_keys[] __initdata = {
{
.desc = "reset",
.type = EV_KEY,
.code = KEY_RESTART,
.debounce_interval = WHRHPG300N_KEYS_DEBOUNCE_INTERVAL,
.gpio = WHRHPG300N_GPIO_BTN_RESET,
.active_low = 1,
}, {
.desc = "aoss/wps",
.type = EV_KEY,
.code = KEY_WPS_BUTTON,
.gpio = WHRHPG300N_GPIO_BTN_AOSS,
.debounce_interval = WHRHPG300N_KEYS_DEBOUNCE_INTERVAL,
.active_low = 1,
}, {
.desc = "router_on",
.type = EV_KEY,
.code = BTN_2,
.gpio = WHRHPG300N_GPIO_BTN_ROUTER_ON,
.debounce_interval = WHRHPG300N_KEYS_DEBOUNCE_INTERVAL,
.active_low = 1,
}, {
.desc = "router_auto",
.type = EV_KEY,
.code = BTN_3,
.gpio = WHRHPG300N_GPIO_BTN_ROUTER_AUTO,
.debounce_interval = WHRHPG300N_KEYS_DEBOUNCE_INTERVAL,
.active_low = 1,
}
};
static void __init whrhpg300n_setup(void)
{
u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
u8 *mac = (u8 *) KSEG1ADDR(ee + WHRHPG300N_MAC_OFFSET);
ar71xx_add_device_m25p80(&whrhpg300n_flash_data);
ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(whrhpg300n_leds_gpio),
whrhpg300n_leds_gpio);
ar71xx_register_gpio_keys_polled(-1, WHRHPG300N_KEYS_POLL_INTERVAL,
ARRAY_SIZE(whrhpg300n_gpio_keys),
whrhpg300n_gpio_keys);
ar71xx_eth1_data.has_ar7240_switch = 1;
ar71xx_init_mac(ar71xx_eth0_data.mac_addr, mac, 0);
ar71xx_init_mac(ar71xx_eth1_data.mac_addr, mac, 1);
/* WAN port */
ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
ar71xx_eth0_data.speed = SPEED_100;
ar71xx_eth0_data.duplex = DUPLEX_FULL;
ar71xx_eth0_data.phy_mask = BIT(4);
/* LAN ports */
ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
ar71xx_eth1_data.speed = SPEED_1000;
ar71xx_eth1_data.duplex = DUPLEX_FULL;
ar71xx_add_device_mdio(0x0);
ar71xx_add_device_eth(1);
ar71xx_add_device_eth(0);
ap91_pci_setup_wmac_led_pin(1);
ap91_pci_init(ee, mac);
}
MIPS_MACHINE(AR71XX_MACH_WHR_HP_G300N, "WHR-HP-G300N", "Buffalo WHR-HP-G300N",
whrhpg300n_setup);

View file

@ -63,6 +63,7 @@ enum ar71xx_mach_type {
AR71XX_MACH_UBNT_RSPRO, /* Ubiquiti RouterStation Pro */
AR71XX_MACH_UBNT_RS, /* Ubiquiti RouterStation */
AR71XX_MACH_UBNT_UNIFI, /* Unifi */
AR71XX_MACH_WHR_HP_G300N, /* Buffalo WHR-HP-G300N */
AR71XX_MACH_WNDR3700, /* NETGEAR WNDR3700 */
AR71XX_MACH_WNDR3700V2, /* NETGEAR WNDR3700v2 */
AR71XX_MACH_WNR2000, /* NETGEAR WNR2000 */