diff --git a/package/base-files/files/bin/config_generate b/package/base-files/files/bin/config_generate index b6675f1..e1168d8 100755 --- a/package/base-files/files/bin/config_generate +++ b/package/base-files/files/bin/config_generate @@ -58,10 +58,7 @@ generate_network() { lan) uci -q batch <<-EOF set network.$1.type='bridge' - set network.$1.proto='static' - set network.$1.ipaddr='192.168.1.1' - set network.$1.netmask='255.255.255.0' - set network.$1.ip6assign='60' + set network.$1.proto='dhcp' EOF ;; wan) diff --git a/package/base-files/files/etc/config/network b/package/base-files/files/etc/config/network index d3cd3c6..37f6144 100644 --- a/package/base-files/files/etc/config/network +++ b/package/base-files/files/etc/config/network @@ -9,10 +9,7 @@ config interface loopback config interface lan option ifname eth0 option type bridge - option proto static - option ipaddr 192.168.1.1 - option netmask 255.255.255.0 - option ip6assign 60 + option proto dhcp config globals globals option ula_prefix auto diff --git a/package/base-files/files/etc/init.d/setwlanmac b/package/base-files/files/etc/init.d/setwlanmac new file mode 100755 index 0000000..8230595 --- /dev/null +++ b/package/base-files/files/etc/init.d/setwlanmac @@ -0,0 +1,16 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2014 OpenWrt.org + +START=98 +STOP=15 + +start() { + grep athaddr /dev/mtdblock1 | cut -f2 -d= > /tmp/athaddr + grep ethaddr /dev/mtdblock1 | cut -f2 -d= > /tmp/ethaddr + ifconfig wlan1 down; + ifconfig wlan1 hw ether `grep ethaddr /dev/mtdblock1 | cut -f2 -d=`; + ifconfig wlan1 up; +} +stop() { + echo "Stop." +} diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata index 74c3417..d81843c 100644 --- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -75,6 +75,12 @@ case "$FIRMWARE" in ath10kcal_extract "ART" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16) ;; + ecb1750) + ath10kcal_extract "art" 20480 2116 + ifconfig eth0 hw ether `grep ethaddr /dev/mtdblock1 | cut -f2 -d=` + ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1) + ;; + esac ;; "ath10k/cal-pci-0000:01:00.0.bin") diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index df77040..761afdf 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -491,6 +491,9 @@ ar71xx_board_detect() { *"GL AR300") name="gl-ar300" ;; + *"EnGenius ECB1750") + name="ecb1750" + ;; *"EnGenius EPG5000") name="epg5000" ;; diff --git a/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx b/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx index 92b3765..d8ede94 100644 --- a/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx +++ b/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx @@ -41,6 +41,8 @@ preinit_set_mac_address() { wrt160nl) fetch_mac_from_mtd nvram lan_hwaddr wan_hwaddr ;; + ecb1750) + fetch_mac_from_mtd u-boot-env ethaddr esac } diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index 41886e3..d19a33c 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -216,6 +216,7 @@ platform_check_image() { dlan-pro-1200-ac | \ dragino2 | \ epg5000 | \ + ecb1750 | \ esr1750 | \ esr900 | \ ew-dorin | \ diff --git a/target/linux/ar71xx/config-4.1 b/target/linux/ar71xx/config-4.1 index eff197a..d0b0c8a 100644 --- a/target/linux/ar71xx/config-4.1 +++ b/target/linux/ar71xx/config-4.1 @@ -74,6 +74,7 @@ CONFIG_ATH79_MACH_EL_M150=y CONFIG_ATH79_MACH_EL_MINI=y CONFIG_ATH79_MACH_EPG5000=y CONFIG_ATH79_MACH_ESR1750=y +CONFIG_ATH79_MACH_ECB1750=y CONFIG_ATH79_MACH_ESR900=y CONFIG_ATH79_MACH_EW_DORIN=y CONFIG_ATH79_MACH_F9K1115V2=y diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-ecb1750.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-ecb1750.c new file mode 100644 index 0000000..aa3cf43 --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-ecb1750.c @@ -0,0 +1,109 @@ +/* + * EnGenius ECB1750 board support + * + * Andrew Tyler + * + * 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 "common.h" +#include "dev-ap9x-pci.h" +#include "dev-gpio-buttons.h" +#include "dev-eth.h" +#include "dev-leds-gpio.h" +#include "dev-m25p80.h" +#include "dev-wmac.h" +#include "machtypes.h" +#include "pci.h" + +#define ECB1750_GPIO_LED_LAN 12 +#define ECB1750_GPIO_LED_WLAN_2G 13 +#define ECB1750_GPIO_LED_POWER 22 +#define ECB1750_GPIO_LED_WLAN_5G 23 + +#define ECB1750_GPIO_BTN_RESET 17 + +#define ECB1750_KEYS_POLL_INTERVAL 20 /* msecs */ +#define ECB1750_KEYS_DEBOUNCE_INTERVAL (3 * ECB1750_KEYS_POLL_INTERVAL) + +#define ECB1750_MAC0_OFFSET 0 +#define ECB1750_MAC1_OFFSET 1 +#define ECB1750_WMAC_CALDATA_OFFSET 0x1000 +#define ECB1750_PCIE_CALDATA_OFFSET 0x5000 + +static struct gpio_led ecb1750_leds_gpio[] __initdata = { + { + .name = "ecb1750:amber:power", + .gpio = ECB1750_GPIO_LED_POWER, + .active_low = 0, + }, + { + .name = "ecb1750:blue:lan", + .gpio = ECB1750_GPIO_LED_LAN, + .active_low = 0, + }, + { + .name = "ecb1750:blue:wlan24", + .gpio = ECB1750_GPIO_LED_WLAN_2G, + .active_low = 0, + }, + { + .name = "ecb1750:blue:wlan58", + .gpio = ECB1750_GPIO_LED_WLAN_5G, + .active_low = 0, + }, +}; + +static struct gpio_keys_button ecb1750_gpio_keys[] __initdata = { + { + .desc = "Reset button", + .type = EV_KEY, + .code = KEY_RESTART, + .debounce_interval = ECB1750_KEYS_DEBOUNCE_INTERVAL, + .gpio = ECB1750_GPIO_BTN_RESET, + .active_low = 1, + }, +}; + +static void __init ecb1750_setup(void) +{ + u8 *art = (u8 *)KSEG1ADDR(0x1fff0000); + u8 mac[6]; + + ath79_register_m25p80(NULL); + + ath79_register_leds_gpio(-1, ARRAY_SIZE(ecb1750_leds_gpio), + ecb1750_leds_gpio); + ath79_register_gpio_keys_polled(-1, ECB1750_KEYS_POLL_INTERVAL, + ARRAY_SIZE(ecb1750_gpio_keys), + ecb1750_gpio_keys); + + ath79_init_mac(mac, art + ECB1750_MAC0_OFFSET, 1); + ath79_init_mac(ath79_eth0_data.mac_addr, art + ECB1750_MAC0_OFFSET, 0); + ath79_register_wmac(art + ECB1750_WMAC_CALDATA_OFFSET, NULL); + ath79_register_pci(); + + ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); + ath79_register_mdio(0, 0x0); + + ath79_init_mac(ath79_eth0_data.mac_addr, art + ECB1750_MAC0_OFFSET, 0); + + /* GMAC0 is connected to the RMGII interface */ + ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; + ath79_eth0_data.phy_mask = BIT(5); + ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev; + ath79_eth0_pll_data.pll_1000 = 0x9a000000; + ath79_eth0_pll_data.pll_100 = 0x80000101; + ath79_eth0_pll_data.pll_10 = 0x80001313; + +ath79_register_eth(0); +} + +MIPS_MACHINE(ATH79_MACH_ECB1750, "ECB1750", "EnGenius ECB1750", ecb1750_setup); diff --git a/target/linux/ar71xx/generic/profiles/engenius.mk b/target/linux/ar71xx/generic/profiles/engenius.mk index 7ea93e3..2a19f58 100644 --- a/target/linux/ar71xx/generic/profiles/engenius.mk +++ b/target/linux/ar71xx/generic/profiles/engenius.mk @@ -16,6 +16,16 @@ endef $(eval $(call Profile,EAP300V2)) +define Profile/ECB1750 + NAME:=EnGenius ECB1750 + PACKAGES:=kmod-ath9k kmod-ath10k +endef + +define Profile/ECB1750/Description + Package set optimized for the EnGenius ECB1750. +endef + +$(eval $(call Profile,ECB1750)) define Profile/ESR900 NAME:=EnGenius ESR900 diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile index d12ad8b..5de7d82 100644 --- a/target/linux/ar71xx/image/Makefile +++ b/target/linux/ar71xx/image/Makefile @@ -1484,6 +1484,7 @@ cameo_ap94_mtdlayout=mtdparts=spi0.0:256k(uboot)ro,64k(config)ro,6208k(firmware) cameo_ap94_mtdlayout_fat=mtdparts=spi0.0:256k(uboot)ro,64k(config)ro,7808k(firmware),64k(caldata)ro,64k@0x660000(caldata_orig),6208k@0x50000(firmware_orig) esr900_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(u-boot-env)ro,1408k(kernel),13248k(rootfs),1024k(manufacture)ro,64k(backup)ro,320k(storage)ro,64k(caldata)ro,14656k@0x40000(firmware) esr1750_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(u-boot-env)ro,1408k(kernel),13248k(rootfs),1024k(manufacture)ro,64k(backup)ro,320k(storage)ro,64k(caldata)ro,14656k@0x40000(firmware) +ecb1750_mtdlayout=mtdparts=spi0.0:256k(u-boot),64k(u-boot-env),1408k(kernel),14272k(rootfs),320k(userconfig),64k(art),15680k@0x50000(firmware) epg5000_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(u-boot-env)ro,1408k(kernel),13248k(rootfs),1024k(manufacture)ro,64k(backup)ro,320k(storage)ro,64k(caldata)ro,14656k@0x40000(firmware) ew-dorin_mtdlayout_4M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env),3712k(firmware),64k(art) ew-dorin_mtdlayout_16M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env),16000k(firmware),64k(art)ro @@ -2324,6 +2325,7 @@ $(eval $(call SingleProfile,dLANLzma,64k,dLAN_pro_1200_ac,dlan-pro-1200-ac,dLAN- $(eval $(call SingleProfile,EnGenius,64k,ESR900,esr900,ESR900,ttyS0,115200,$$(esr900_mtdlayout),KRuImage,,0x4e)) $(eval $(call SingleProfile,EnGenius,64k,ESR1750,esr1750,ESR1750,ttyS0,115200,$$(esr1750_mtdlayout),KRuImage,,0x61)) +$(eval $(call SingleProfile,EnGenius,64k,ECB1750,ecb1750,ECB1750,ttyS0,115200,$$(ecb1750_mtdlayout),KRuImage,,0x61)) $(eval $(call SingleProfile,EnGenius,64k,EPG5000,epg5000,EPG5000,ttyS0,115200,$$(epg5000_mtdlayout),KRuImage,,0x71)) $(eval $(call SingleProfile,HiWiFi,64k,HIWIFI_HC6361,hiwifi-hc6361,HiWiFi-HC6361,ttyATH0,115200,$$(hiwifi_hc6361_mtdlayout),KRuImage)) diff --git a/target/linux/ar71xx/patches-4.1/914-MIPS-ath79-add-ecb1750-support.patch b/target/linux/ar71xx/patches-4.1/914-MIPS-ath79-add-ecb1750-support.patch new file mode 100644 index 0000000..42bb18d --- /dev/null +++ b/target/linux/ar71xx/patches-4.1/914-MIPS-ath79-add-ecb1750-support.patch @@ -0,0 +1,38 @@ +--- a/arch/mips/ath79/machtypes.h ++++ b/arch/mips/ath79/machtypes.h +@@ -70,6 +70,7 @@ + ATH79_MACH_EAP7660D, /* Senao EAP7660D */ + ATH79_MACH_EL_M150, /* EasyLink EL-M150 */ + ATH79_MACH_EL_MINI, /* EasyLink EL-MINI */ ++ ATH79_MACH_ECB1750, /* EnGenius ECB1750 */ + ATH79_MACH_ESR1750, /* EnGenius ESR1750 */ + ATH79_MACH_EPG5000, /* EnGenius EPG5000 */ + ATH79_MACH_F9K1115V2, /* Belkin AC1750DB */ +--- a/arch/mips/ath79/Makefile ++++ b/arch/mips/ath79/Makefile +@@ -83,6 +83,7 @@ + obj-$(CONFIG_ATH79_MACH_EL_MINI) += mach-el-mini.o + obj-$(CONFIG_ATH79_MACH_EPG5000) += mach-epg5000.o + obj-$(CONFIG_ATH79_MACH_ESR1750) += mach-esr1750.o ++obj-$(CONFIG_ATH79_MACH_ECB1750) += mach-ecb1750.o + obj-$(CONFIG_ATH79_MACH_F9K1115V2) += mach-f9k1115v2.o + obj-$(CONFIG_ATH79_MACH_GL_AR150) += mach-gl-ar150.o + obj-$(CONFIG_ATH79_MACH_GL_AR300) += mach-gl-ar300.o +--- a/arch/mips/ath79/Kconfig ++++ b/arch/mips/ath79/Kconfig +@@ -289,6 +289,15 @@ + select ATH79_DEV_LEDS_GPIO + select ATH79_DEV_M25P80 + select ATH79_DEV_USB ++ select ATH79_DEV_WMAC ++ ++config ATH79_MACH_ECB1750 ++ bool "EnGenius ECB1750 board support" ++ select SOC_QCA955X ++ 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_WHR_HP_G300N