From b24a61d6b7104093464a84cdb0fe5c1eb581f5dc Mon Sep 17 00:00:00 2001 From: blogic Date: Mon, 1 Sep 2014 13:22:12 +0000 Subject: [PATCH] add support for the NC-LINK SMART-300 Signed-off-by: Imre Kaloz Backport of r42130 git-svn-id: svn://svn.openwrt.org/openwrt/branches/barrier_breaker@42393 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/ar71xx/base-files/etc/diag.sh | 3 + .../base-files/etc/uci-defaults/01_leds | 9 ++ .../base-files/etc/uci-defaults/02_network | 1 + target/linux/ar71xx/base-files/lib/ar71xx.sh | 6 + .../lib/preinit/05_set_preinit_iface_ar71xx | 1 + .../ar71xx/base-files/lib/upgrade/platform.sh | 1 + target/linux/ar71xx/config-3.10 | 1 + .../files/arch/mips/ath79/mach-smart-300.c | 135 ++++++++++++++++++ .../linux/ar71xx/generic/profiles/nclink.mk | 15 ++ target/linux/ar71xx/image/Makefile | 2 + ...725-MIPS-ath79-add-smart-300-support.patch | 38 +++++ 11 files changed, 212 insertions(+) create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-smart-300.c create mode 100644 target/linux/ar71xx/generic/profiles/nclink.mk create mode 100644 target/linux/ar71xx/patches-3.10/725-MIPS-ath79-add-smart-300-support.patch diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh index 2984777..1864b11 100755 --- a/target/linux/ar71xx/base-files/etc/diag.sh +++ b/target/linux/ar71xx/base-files/etc/diag.sh @@ -160,6 +160,9 @@ get_status_led() { rw2458n) status_led="rw2458n:green:d3" ;; + smart-300) + status_led="nc-link:green:system" + ;; oolite) status_led="oolite:red:system" ;; diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds index d9c46c3..d3b766d 100755 --- a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds @@ -191,6 +191,15 @@ om5p) ucidef_set_led_netdev "port2" "port2" "om5p:blue:lan" "eth1" ;; +smart-300) + ucidef_set_led_netdev "wan" "WAN" "nc-link:green:wan" "eth0" + ucidef_set_led_switch "lan1" "LAN1" "nc-link:green:lan1" "switch0" "0x04" + ucidef_set_led_switch "lan2" "LAN2" "nc-link:green:lan2" "switch0" "0x08" + ucidef_set_led_switch "lan3" "LAN3" "nc-link:green:lan3" "switch0" "0x10" + ucidef_set_led_switch "lan4" "LAN4" "nc-link:green:lan4" "switch0" "0x02" + ucidef_set_led_wlan "wlan" "WLAN" "nc-link:green:wlan" "phy0tpt" + ;; + tew-712br) ucidef_set_led_netdev "wan" "WAN" "trendnet:green:wan" "eth1" ucidef_set_led_switch "lan1" "LAN1" "trendnet:green:lan1" "switch0" "0x02" diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network index 0d1e331..c5cfd67 100755 --- a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network @@ -200,6 +200,7 @@ tl-wr941nd) ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan" ;; +smart-300 | \ tl-mr3420-v2 |\ tl-wr841n-v8 |\ tl-wr842n-v2 |\ diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index df69a0b..1e96b6d 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -211,6 +211,9 @@ tplink_board_detect() { "453000"*) model="MERCURY MW4530R" ;; + "934100"*) + model="NC-LINK SMART-300" + ;; *) hwver="" ;; @@ -517,6 +520,9 @@ ar71xx_board_detect() { *RW2458N) name="rw2458n" ;; + *"SMART-300") + name="smart-300" + ;; *TEW-632BRP) name="tew-632brp" ;; diff --git a/target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx b/target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx index 10651fc..a9a8794 100644 --- a/target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx +++ b/target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx @@ -27,6 +27,7 @@ set_preinit_iface() { rb-450g |\ routerstation |\ routerstation-pro |\ + smart-300 |\ tl-mr3420-v2 |\ tl-wdr4900-v2 |\ tl-wr1043nd-v2 |\ diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index 0e30a60..846954c 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -258,6 +258,7 @@ platform_check_image() { el-mini | \ gl-inet | \ oolite | \ + smart-300 | \ tl-mr10u | \ tl-mr11u | \ tl-mr13u | \ diff --git a/target/linux/ar71xx/config-3.10 b/target/linux/ar71xx/config-3.10 index 8e33176..9a8378a 100644 --- a/target/linux/ar71xx/config-3.10 +++ b/target/linux/ar71xx/config-3.10 @@ -79,6 +79,7 @@ CONFIG_ATH79_MACH_PB92=y # CONFIG_ATH79_MACH_RB95X is not set # CONFIG_ATH79_MACH_RBSXTLITE is not set CONFIG_ATH79_MACH_RW2458N=y +CONFIG_ATH79_MACH_SMART_300=y CONFIG_ATH79_MACH_TEW_632BRP=y CONFIG_ATH79_MACH_TEW_673GRU=y CONFIG_ATH79_MACH_TEW_712BR=y diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-smart-300.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-smart-300.c new file mode 100644 index 0000000..2520e96 --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-smart-300.c @@ -0,0 +1,135 @@ +/* + * NC-LINK SMART-300 board support + * + * Copyright (C) 2012 Gabor Juhos + * Copyright (C) 2014 Imre Kaloz + * + * 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 +#include +#include +#include +#include + +#include "common.h" +#include "dev-eth.h" +#include "dev-gpio-buttons.h" +#include "dev-leds-gpio.h" +#include "dev-m25p80.h" +#include "dev-wmac.h" +#include "machtypes.h" + +#define SMART_300_GPIO_LED_WLAN 13 +#define SMART_300_GPIO_LED_WAN 18 +#define SMART_300_GPIO_LED_LAN4 19 +#define SMART_300_GPIO_LED_LAN3 12 +#define SMART_300_GPIO_LED_LAN2 21 +#define SMART_300_GPIO_LED_LAN1 20 +#define SMART_300_GPIO_LED_SYSTEM 15 +#define SMART_300_GPIO_LED_POWER 14 + +#define SMART_300_GPIO_BTN_RESET 17 +#define SMART_300_GPIO_SW_RFKILL 16 + +#define SMART_300_KEYS_POLL_INTERVAL 20 /* msecs */ +#define SMART_300_KEYS_DEBOUNCE_INTERVAL (3 * SMART_300_KEYS_POLL_INTERVAL) + +#define SMART_300_GPIO_MASK 0x007fffff + +static const char *smart_300_part_probes[] = { + "tp-link", + NULL, +}; + +static struct flash_platform_data smart_300_flash_data = { + .part_probes = smart_300_part_probes, +}; + +static struct gpio_led smart_300_leds_gpio[] __initdata = { + { + .name = "nc-link:green:lan1", + .gpio = SMART_300_GPIO_LED_LAN1, + .active_low = 1, + }, { + .name = "nc-link:green:lan2", + .gpio = SMART_300_GPIO_LED_LAN2, + .active_low = 1, + }, { + .name = "nc-link:green:lan3", + .gpio = SMART_300_GPIO_LED_LAN3, + .active_low = 1, + }, { + .name = "nc-link:green:lan4", + .gpio = SMART_300_GPIO_LED_LAN4, + .active_low = 1, + }, { + .name = "nc-link:green:system", + .gpio = SMART_300_GPIO_LED_SYSTEM, + .active_low = 1, + }, { + .name = "nc-link:green:wan", + .gpio = SMART_300_GPIO_LED_WAN, + .active_low = 1, + }, { + .name = "nc-link:green:wlan", + .gpio = SMART_300_GPIO_LED_WLAN, + .active_low = 1, + }, +}; + +static struct gpio_keys_button smart_300_gpio_keys[] __initdata = { + { + .desc = "reset", + .type = EV_KEY, + .code = KEY_RESTART, + .debounce_interval = SMART_300_KEYS_DEBOUNCE_INTERVAL, + .gpio = SMART_300_GPIO_BTN_RESET, + .active_low = 1, + } +}; + +static void __init smart_300_setup(void) +{ + u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00); + u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000); + + ath79_register_leds_gpio(-1, ARRAY_SIZE(smart_300_leds_gpio), + smart_300_leds_gpio); + + ath79_register_gpio_keys_polled(1, SMART_300_KEYS_POLL_INTERVAL, + ARRAY_SIZE(smart_300_gpio_keys), + smart_300_gpio_keys); + + ath79_register_m25p80(&smart_300_flash_data); + + ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE); + + ath79_register_mdio(1, 0x0); + + ath79_init_mac(ath79_eth0_data.mac_addr, mac, -1); + ath79_init_mac(ath79_eth1_data.mac_addr, mac, 1); + + /* GMAC0 is connected to the PHY0 of the internal switch */ + ath79_switch_data.phy4_mii_en = 1; + ath79_switch_data.phy_poll_mask = BIT(4); + ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII; + ath79_eth0_data.phy_mask = BIT(4); + ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev; + ath79_register_eth(0); + + /* GMAC1 is connected to the internal switch */ + ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII; + ath79_register_eth(1); + + ath79_register_wmac(ee, mac); + + gpio_request(SMART_300_GPIO_LED_POWER, "power"); + gpio_direction_output(SMART_300_GPIO_LED_POWER, GPIOF_OUT_INIT_LOW); +} + +MIPS_MACHINE(ATH79_MACH_SMART_300, "SMART-300", "NC-LINK SMART-300", + smart_300_setup); diff --git a/target/linux/ar71xx/generic/profiles/nclink.mk b/target/linux/ar71xx/generic/profiles/nclink.mk new file mode 100644 index 0000000..04eb9ec --- /dev/null +++ b/target/linux/ar71xx/generic/profiles/nclink.mk @@ -0,0 +1,15 @@ +# +# Copyright (C) 2014 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +define Profile/SMART-300 + NAME:=NC-LINK SMART-300 +endef + +define Profile/SMART-300/Description + Package set optimized for the NC-LINK SMART-300. +endef +$(eval $(call Profile,SMART-300)) diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile index 5687c35..683c238 100644 --- a/target/linux/ar71xx/image/Makefile +++ b/target/linux/ar71xx/image/Makefile @@ -1226,6 +1226,8 @@ $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWDR4310V1,tl-wdr4310-v1,TL-WDR4 $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWDR4900V2,tl-wdr4900-v2,TL-WDR4900-v2,ttyS0,115200,0x49000002,1,8Mlzma)) $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,MW4530RV1,mw4530r-v1,TL-WDR4300,ttyS0,115200,0x45300001,1,8Mlzma)) +$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,SMART-300,smart-300,SMART-300,ttyS0,115200,0x93410001,1,8Mlzma)) + $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,OOLITE,oolite,GS-OOLITE,ttyATH0,115200,0x3C000101,1,16Mlzma)) $(eval $(call SingleProfile,UAPPRO,64k,UAPPRO,ubnt-uap-pro,UAP-PRO,ttyS0,115200,BZ,BZ,ar934x)) diff --git a/target/linux/ar71xx/patches-3.10/725-MIPS-ath79-add-smart-300-support.patch b/target/linux/ar71xx/patches-3.10/725-MIPS-ath79-add-smart-300-support.patch new file mode 100644 index 0000000..a96b2a4 --- /dev/null +++ b/target/linux/ar71xx/patches-3.10/725-MIPS-ath79-add-smart-300-support.patch @@ -0,0 +1,38 @@ +--- a/arch/mips/ath79/machtypes.h ++++ b/arch/mips/ath79/machtypes.h +@@ -103,6 +103,7 @@ enum ath79_mach_type { + ATH79_MACH_RB_SXTLITE2ND, /* Mikrotik RouterBOARD SXT Lite 2nD */ + ATH79_MACH_RB_SXTLITE5ND, /* Mikrotik RouterBOARD SXT Lite 5nD */ + ATH79_MACH_RW2458N, /* Redwave RW2458N */ ++ ATH79_MACH_SMART_300, /* NC-LINK SMART-300 */ + ATH79_MACH_TEW_632BRP, /* TRENDnet TEW-632BRP */ + ATH79_MACH_TEW_673GRU, /* TRENDnet TEW-673GRU */ + ATH79_MACH_TEW_712BR, /* TRENDnet TEW-712BR */ +--- a/arch/mips/ath79/Kconfig ++++ b/arch/mips/ath79/Kconfig +@@ -518,6 +518,15 @@ config ATH79_MACH_RBSXTLITE + select ATH79_DEV_WMAC + select ATH79_ROUTERBOOT + ++config ATH79_MACH_SMART_300 ++ bool "NC-LINK SMART-300 board support" ++ select SOC_AR934X ++ select ATH79_DEV_ETH ++ select ATH79_DEV_GPIO_BUTTONS ++ select ATH79_DEV_LEDS_GPIO ++ select ATH79_DEV_M25P80 ++ select ATH79_DEV_WMAC ++ + config ATH79_MACH_WNDAP360 + bool "NETGEAR WNDAP360 board support" + select SOC_AR71XX +--- a/arch/mips/ath79/Makefile ++++ b/arch/mips/ath79/Makefile +@@ -92,6 +92,7 @@ obj-$(CONFIG_ATH79_MACH_RB95X) += mach- + obj-$(CONFIG_ATH79_MACH_RB2011) += mach-rb2011.o + obj-$(CONFIG_ATH79_MACH_RBSXTLITE) += mach-rbsxtlite.o + obj-$(CONFIG_ATH79_MACH_RW2458N) += mach-rw2458n.o ++obj-$(CONFIG_ATH79_MACH_SMART_300) += mach-smart-300.o + obj-$(CONFIG_ATH79_MACH_TEW_632BRP) += mach-tew-632brp.o + obj-$(CONFIG_ATH79_MACH_TEW_673GRU) += mach-tew-673gru.o + obj-$(CONFIG_ATH79_MACH_TEW_712BR) += mach-tew-712br.o