[OpenWrt-Devel] ar71xx: add support for EnGenius ECB1750
Jo-Philipp Wich
jow at openwrt.org
Mon Nov 30 14:08:54 EST 2015
Hi Andrew.
> Okay. I just want to apologize for hammering this but I have been having
> an issue trying to post the patch using my work email (office365). It
> seemed to want to send it as an attachment with dos line endings tacked
> on for some reason. I think ive got that taken care of now so here it
> is: Signed-off-by: Andrew Tyler <atyler at arocna3.com>
Please do not put such texts into the patch submission, just explain
what the patch is doing.
Unfortunately your submission is still badly whitespace mangled and
line-wrapped. Please use git-send-email to send your patches. Any
copy-paste approach is most likely going to fail.
Comments inline below.
Regards,
Jo
>
> 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'
This will pretty much brick any ar71xx board by removing the default lan
ip, so NAK.
> 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
Same, you cannot just change random default configs to accommodate a
single board.
>
> 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
Do the wifi mac extraction in uci-defaults or board.d, like the other
boards do. Also store the mac in /etc/config/wireless if there really is
a need for that.
> @@ -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
Why read athaddr when it is not used?
> + ifconfig wlan1 down;
Inconsistent indentation (tabs vs. spaces, please use only tabs)
> + ifconfig wlan1 hw ether `grep ethaddr /dev/mtdblock1 | cut -f2
> -d=`;
> + ifconfig wlan1 up;
The mac will get lost when wifi is reinitialized.
> +}
> +stop() {
> + echo "Stop."
> +}
No need for a stop action.
> 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=`
That does not belong here.
> + 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
Missing final ";;"
> 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 | \
Make sure that the entries are ordered.
> 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
Same, use lexical order.
> 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 <atyler at 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);
You appear to pass the proper mac addresses here, why do you do the mac
juggling in the boot scripts then?
> + 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);
You did that a few lines above already.
> +
> + /* 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);
Missing indentation.
> +}
> +
> +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 at 0x660000(caldata_orig),6208k at 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 at 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 at 0x40000(firmware)
> +ecb1750_mtdlayout=mtdparts=spi0.0:256k(u-boot),64k(u-boot-env),1408k(kernel),14272k(rootfs),320k(userconfig),64k(art),15680k at 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 at 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
I suppose the entries here should be kept ordered as well (EL_MINI <
ECB1750 < EPG5000)
> + 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
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20151130/dda202f3/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list