diff options
12 files changed, 171 insertions, 3 deletions
diff --git a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom index 73dc25529..d8b35ae30 100644 --- a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom +++ b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom @@ -46,6 +46,7 @@ case "$FIRMWARE" in  		;;  	argus-atp52b | \ +	bc2 | \  	fonera20n | \  	hw550-3g | \  	mofi3500-3gn | \ diff --git a/target/linux/ramips/base-files/etc/uci-defaults/bc2 b/target/linux/ramips/base-files/etc/uci-defaults/bc2 new file mode 100644 index 000000000..3a93df2b7 --- /dev/null +++ b/target/linux/ramips/base-files/etc/uci-defaults/bc2 @@ -0,0 +1,36 @@ +#!/bin/sh +# +# Copyright (C) 2011 OpenWrt.org +# + +bc2_set_macs() { +	local part +	local lan_mac +	local wan_mac + +	[ -z $(which maccalc) ] && return + +	. /etc/functions.sh + +	part=$(find_mtd_part "factory") +	[ -z $part ] && return + +	lan_mac=$(dd bs=1 skip=4 count=6 if=$part 2>/dev/null | maccalc bin2mac) +	[ -z $lan_mac ] && return + +	wan_mac=$(maccalc add $lan_mac 1) + +	uci batch <<EOF +set network.lan.macaddr='$lan_mac' +set network.wan.macaddr='$wan_mac' +commit network +EOF +} + +. /lib/ramips.sh + +board=$(ramips_board_name) + +if [ "${board}" == "bc2" ]; then +	bc2_set_macs +fi diff --git a/target/linux/ramips/base-files/etc/uci-defaults/leds b/target/linux/ramips/base-files/etc/uci-defaults/leds index 8f7f748ed..e6c7e8456 100755 --- a/target/linux/ramips/base-files/etc/uci-defaults/leds +++ b/target/linux/ramips/base-files/etc/uci-defaults/leds @@ -19,6 +19,9 @@ EOF  board=$(ramips_board_name)  case $board in +	bc2) +		set_usb_led "bc2:blue:usb" +		;;  	fonera20n)  		set_usb_led "fonera20n:amber:usb"  		;; diff --git a/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac b/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac index 4be625bd1..290e27053 100644 --- a/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac +++ b/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac @@ -24,7 +24,7 @@ preinit_set_mac_address() {  	. /lib/ramips.sh  	case $(ramips_board_name) in -	nw718) +	bc2 | nw718)  		nw718_set_mac  		;;  	esac diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh index 227ca821a..de37e69a6 100755 --- a/target/linux/ramips/base-files/lib/ramips.sh +++ b/target/linux/ramips/base-files/lib/ramips.sh @@ -37,6 +37,9 @@ ramips_board_name() {  	*"NBG-419N")  		name="nbg-419n"  		;; +	*"NexAira BC2") +		name="bc2" +		;;  	*"NW718")  		name="nw718"  		;; diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh index 58ba0f0fc..3bc95dd8e 100755 --- a/target/linux/ramips/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh @@ -14,7 +14,7 @@ platform_check_image() {  	[ "$ARGC" -gt 1 ] && return 1  	case "$board" in -	dir-300-b1 | dir-600-b1 | dir-600-b2 | fonera20n | nbg-419n | nw718 | rt-g32-b1 | v22rw-2x2 | whr-g300n | hw550-3g | mofi3500-3gn) +	bc2 | dir-300-b1 | dir-600-b1 | dir-600-b2 | fonera20n | nbg-419n | nw718 | rt-g32-b1 | v22rw-2x2 | whr-g300n | hw550-3g | mofi3500-3gn)  		[ "$magic" != "2705" ] && {  			echo "Invalid image type."  			return 1 diff --git a/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/machine.h b/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/machine.h index 2145becfc..72cd9c707 100644 --- a/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/machine.h +++ b/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/machine.h @@ -26,6 +26,7 @@ enum ramips_mach_type {  	/* RT3052 based machines */  	RAMIPS_MACH_ARGUS_ATP52B,	/* Argus ATP-52B */ +	RAMIPS_MACH_BC2,		/* NexAira BC2 */  	RAMIPS_MACH_F5D8235_V2,         /* Belkin F5D8235 v2 */  	RAMIPS_MACH_FONERA20N,		/* La Fonera 2.0N */  	RAMIPS_MACH_HW550_3G,		/* Aztech HW550-3G */ diff --git a/target/linux/ramips/files/arch/mips/ralink/rt305x/Kconfig b/target/linux/ramips/files/arch/mips/ralink/rt305x/Kconfig index 392fb4f92..e8a1a2553 100644 --- a/target/linux/ramips/files/arch/mips/ralink/rt305x/Kconfig +++ b/target/linux/ramips/files/arch/mips/ralink/rt305x/Kconfig @@ -51,6 +51,11 @@ config RT305X_MACH_NW718  	select RALINK_DEV_GPIO_BUTTONS  	select RALINK_DEV_GPIO_LEDS +config RT305X_MACH_BC2 +	bool "NexAira BC2" +	select RALINK_DEV_GPIO_BUTTONS +	select RALINK_DEV_GPIO_LEDS +  config RT305X_MACH_PWH2004  	bool "Prolink PWH2004 / Abocom WR5205 support (32M RAM, 8M flash)"  	select RALINK_DEV_GPIO_BUTTONS diff --git a/target/linux/ramips/files/arch/mips/ralink/rt305x/Makefile b/target/linux/ramips/files/arch/mips/ralink/rt305x/Makefile index 2853429e8..76a783013 100644 --- a/target/linux/ramips/files/arch/mips/ralink/rt305x/Makefile +++ b/target/linux/ramips/files/arch/mips/ralink/rt305x/Makefile @@ -12,6 +12,7 @@ obj-y	:= irq.o setup.o devices.o rt305x.o clock.o  obj-$(CONFIG_EARLY_PRINTK)		+= early_printk.o  obj-$(CONFIG_RT305X_MACH_ARGUS_ATP52B)	+= mach-argus-atp52b.o +obj-$(CONFIG_RT305X_MACH_BC2)		+= mach-bc2.o  obj-$(CONFIG_RT305X_MACH_DIR_300_REVB)	+= mach-dir-300-revb.o  obj-$(CONFIG_RT305X_MACH_F5D8235_V2)    += mach-f5d8235-v2.o  obj-$(CONFIG_RT305X_MACH_FONERA20N)	+= mach-fonera20n.o diff --git a/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-bc2.c b/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-bc2.c new file mode 100644 index 000000000..21755cbdb --- /dev/null +++ b/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-bc2.c @@ -0,0 +1,112 @@ +/* + *  NexAira BC2 board support + * + *  Copyright (C) 2011 Adam J. Porter <porter.adam@gmail.com> + * + *  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/init.h> +#include <linux/platform_device.h> +#include <linux/mtd/mtd.h> +#include <linux/mtd/partitions.h> +#include <linux/mtd/physmap.h> + +#include <asm/mach-ralink/machine.h> +#include <asm/mach-ralink/dev-gpio-buttons.h> +#include <asm/mach-ralink/dev-gpio-leds.h> +#include <asm/mach-ralink/rt305x.h> +#include <asm/mach-ralink/rt305x_regs.h> + +#include "devices.h" + +#define BC2_GPIO_BUTTON_RESET		17 +#define BC2_GPIO_LED_USB		20 + +#define BC2_BUTTONS_POLL_INTERVAL	20 + +#ifdef CONFIG_MTD_PARTITIONS +static struct mtd_partition bc2_partitions[] = { +	{ +		.name	= "u-boot", +		.offset	= 0, +		.size	= 0x030000, +		.mask_flags = MTD_WRITEABLE, +	}, { +		.name	= "u-boot-env", +		.offset	= 0x030000, +		.size	= 0x010000, +		.mask_flags = MTD_WRITEABLE, +	}, { +		.name	= "factory", +		.offset	= 0x040000, +		.size	= 0x010000, +		.mask_flags = MTD_WRITEABLE, +	}, { +		.name	= "kernel", +		.offset	= 0x050000, +		.size	= 0x0a0000, +	}, { +		.name	= "rootfs", +		.offset	= 0x150000, +		.size	= 0x6b0000, +	}, { +		.name	= "firmware", +		.offset	= 0x050000, +		.size	= 0x7b0000, +	} +}; +#endif /* CONFIG_MTD_PARTITIONS */ + +static struct physmap_flash_data bc2_flash_data = { +#ifdef CONFIG_MTD_PARTITIONS +	.nr_parts	= ARRAY_SIZE(bc2_partitions), +	.parts		= bc2_partitions, +#endif +}; + +static struct gpio_led bc2_leds_gpio[] __initdata = { +	{ +		.name		= "bc2:blue:usb", +		.gpio		= BC2_GPIO_LED_USB, +		.active_low	= 1, +	} +}; + +static struct gpio_button bc2_gpio_buttons[] __initdata = { +	{ +		.desc		= "reset", +		.type		= EV_KEY, +		.code		= KEY_RESTART, +		.threshold	= 3, +		.gpio		= BC2_GPIO_BUTTON_RESET, +		.active_low	= 1, +	} +}; + +static void __init bc2_init(void) +{ +	rt305x_gpio_init((RT305X_GPIO_MODE_GPIO << +			  RT305X_GPIO_MODE_UART0_SHIFT) | +			  RT305X_GPIO_MODE_JTAG); + +	rt305x_register_flash(0, &bc2_flash_data); + +	ramips_register_gpio_leds(-1, ARRAY_SIZE(bc2_leds_gpio), +				  bc2_leds_gpio); + +	ramips_register_gpio_buttons(-1, BC2_BUTTONS_POLL_INTERVAL, +				     ARRAY_SIZE(bc2_gpio_buttons), +				     bc2_gpio_buttons); + +	rt305x_esw_data.vlan_config = RT305X_ESW_VLAN_CONFIG_LLLLW; +	rt305x_register_ethernet(); +	rt305x_register_wifi(); +	rt305x_register_wdt(); +	rt305x_register_usb(); +} + +MIPS_MACHINE(RAMIPS_MACH_BC2, "BC2", "NexAira BC2", +	     bc2_init); diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile index 9136f3a5e..69c84e66c 100644 --- a/target/linux/ramips/image/Makefile +++ b/target/linux/ramips/image/Makefile @@ -154,6 +154,10 @@ define Image/Build/Profile/FONERA20N  	$(call Image/Build/Template/GENERIC_8M,$(1),fonera20n,FONERA20N)  endef +define Image/Build/Profile/BC2 +	$(call Image/Build/Template/GENERIC_8M,$(1),bc2,BC2) +endef +  define Image/Build/Profile/NBG419N  	$(call Image/Build/Template/GENERIC_4M,$(1),nbg-419n,NBG-419N)  endef @@ -237,6 +241,7 @@ endef  ifeq ($(CONFIG_RALINK_RT305X),y)  define Image/Build/Profile/Default  	$(call Image/Build/Profile/ARGUS_ATP52B,$(1)) +	$(call Image/Build/Profile/BC2,$(1))  	$(call Image/Build/Profile/DIR300B1,$(1))  	$(call Image/Build/Profile/RTG32B1,$(1))  	$(call Image/Build/Profile/FONERA20N,$(1)) diff --git a/target/linux/ramips/rt305x/config-2.6.39 b/target/linux/ramips/rt305x/config-2.6.39 index 643c93842..5d7e4b12f 100644 --- a/target/linux/ramips/rt305x/config-2.6.39 +++ b/target/linux/ramips/rt305x/config-2.6.39 @@ -92,13 +92,14 @@ CONFIG_RALINK_DEV_GPIO_LEDS=y  CONFIG_RALINK_RT305X=y  CONFIG_RAMIPS_WDT=y  CONFIG_RT305X_MACH_ARGUS_ATP52B=y +CONFIG_RT305X_MACH_BC2=y  CONFIG_RT305X_MACH_DIR_300_REVB=y  CONFIG_RT305X_MACH_F5D8235_V2=y  CONFIG_RT305X_MACH_FONERA20N=y  CONFIG_RT305X_MACH_HW550_3G=y  CONFIG_RT305X_MACH_MOFI3500_3GN=y -CONFIG_RT305X_MACH_NW718=y  CONFIG_RT305X_MACH_NBG_419N=y +CONFIG_RT305X_MACH_NW718=y  CONFIG_RT305X_MACH_PWH2004=y  CONFIG_RT305X_MACH_RT_G32_REVB=y  CONFIG_RT305X_MACH_V22RW_2X2=y  | 
