@@ -75,6 +75,11 @@ 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
+ ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
+ ;;
+
esac
;;
"ath10k/cal-pci-0000:01:00.0.bin")
@@ -491,6 +491,9 @@ ar71xx_board_detect() {
*"GL AR300")
name="gl-ar300"
;;
+ *"EnGenius ECB1750")
+ name="ecb1750"
+ ;;
*"EnGenius EPG5000")
name="epg5000"
;;
@@ -216,6 +216,7 @@ platform_check_image() {
dlan-pro-1200-ac | \
dragino2 | \
epg5000 | \
+ ecb1750 | \
esr1750 | \
esr900 | \
ew-dorin | \
@@ -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
new file mode 100644
@@ -0,0 +1,109 @@
+/*
+ * EnGenius ECB1750 board support
+ *
+ * Andrew Tyler <atyler@arocna3.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/platform_device.h>
+#include <linux/ar8216_platform.h>
+
+#include <asm/mach-ath79/ar71xx_regs.h>
+
+#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);
@@ -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
@@ -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))
new file mode 100644
@@ -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
Accidentally left a test diff (test.diff) in my src tree when I made the initial patch. Sorry about that. Signed-off-by: Andrew Tyler <atyler@arocna3.com>