diff --git a/bsp/ar71xx/root_file_system/etc/network.gl-ar150 b/bsp/ar71xx/root_file_system/etc/network.gl-ar150 new file mode 100644 index 0000000..78dbb09 --- /dev/null +++ b/bsp/ar71xx/root_file_system/etc/network.gl-ar150 @@ -0,0 +1,20 @@ +WANDEV=eth0 +SWITCHDEV=eth1 +WAN_PORTS= + +CLIENTIF="eth0.1 w2ap" +ETHMESHMAC=eth1 +ROUTERMAC=eth0 + +. /etc/network.mode + +if [ "$ETHMODE" = "CLIENT" ] ; then + ## Activate Client: + CLIENT_PORTS="1 0t" + BATMAN_PORTS="0t" +else + ## Activate BATMAN: + BATMAN_PORTS="1 0t" + CLIENT_PORTS="0t" +fi + diff --git a/bsp/board_ar71xx.bsp b/bsp/board_ar71xx.bsp index 35bcd6b..6cef76b 100644 --- a/bsp/board_ar71xx.bsp +++ b/bsp/board_ar71xx.bsp @@ -30,6 +30,8 @@ board_postbuild() { cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wa860re-v1-squashfs-*.bin ./bin/ cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wa850re-v1-squashfs-*.bin ./bin/ + + cp $target/bin/ar71xx/openwrt-ar71xx-generic-gl-ar150-squashfs-*.bin ./bin/ } board_clean() { diff --git a/build_patches/ar71xx-add-support-for-GL-AR150.patch b/build_patches/ar71xx-add-support-for-GL-AR150.patch new file mode 100644 index 0000000..ec96f81 --- /dev/null +++ b/build_patches/ar71xx-add-support-for-GL-AR150.patch @@ -0,0 +1,293 @@ +--- target/linux/ar71xx/base-files/etc/uci-defaults/01_leds ++++ target/linux/ar71xx/base-files/etc/uci-defaults/01_leds +@@ -181,6 +181,10 @@ dlan-pro-1200-ac) + ucidef_set_led_trigger_gpio "plcr" "dLAN" "devolo:error:dlan" "16" "0" + ;; + ++gl-ar150) ++ ucidef_set_led_wlan "wlan" "WLAN" "gl_ar150:wlan" "phy0tpt" ++ ;; ++ + gl-inet) + ucidef_set_led_netdev "lan" "LAN" "gl-connect:green:lan" "eth1" + ucidef_set_led_wlan "wlan" "WLAN" "gl-connect:red:wlan" "phy0tpt" +--- target/linux/ar71xx/base-files/etc/uci-defaults/02_network ++++ target/linux/ar71xx/base-files/etc/uci-defaults/02_network +@@ -375,6 +375,7 @@ dir-505-a1) + alfa-ap96 |\ + alfa-nx |\ + ap83 |\ ++gl-ar150 |\ + gl-inet |\ + jwap003 |\ + pb42 |\ +--- target/linux/ar71xx/base-files/lib/ar71xx.sh ++++ target/linux/ar71xx/base-files/lib/ar71xx.sh +@@ -454,6 +454,9 @@ ar71xx_board_detect() { + name="gl-inet" + gl_inet_board_detect + ;; ++ *"GL AR150") ++ name="gl-ar150" ++ ;; + *"EnGenius EPG5000") + name="epg5000" + ;; +--- target/linux/ar71xx/base-files/lib/upgrade/platform.sh ++++ target/linux/ar71xx/base-files/lib/upgrade/platform.sh +@@ -216,6 +216,7 @@ platform_check_image() { + esr900 | \ + ew-dorin | \ + ew-dorin-router | \ ++ gl-ar150 | \ + hiwifi-hc6361 | \ + hornet-ub-x2 | \ + mzk-w04nu | \ +--- target/linux/ar71xx/config-3.18 ++++ target/linux/ar71xx/config-3.18 +@@ -68,6 +68,7 @@ CONFIG_ATH79_MACH_ESR1750=y + CONFIG_ATH79_MACH_ESR900=y + CONFIG_ATH79_MACH_EW_DORIN=y + CONFIG_ATH79_MACH_F9K1115V2=y ++CONFIG_ATH79_MACH_GL_AR150=y + CONFIG_ATH79_MACH_GL_INET=y + CONFIG_ATH79_MACH_GS_MINIBOX_V1=y + CONFIG_ATH79_MACH_GS_OOLITE=y +--- /dev/null ++++ target/linux/ar71xx/files/arch/mips/ath79/mach-gl-ar150.c +@@ -0,0 +1,125 @@ ++/* ++ * GL_ar150 board support ++ * ++ * Copyright (C) 2011 dongyuqi <729650915@qq.com> ++ * Copyright (C) 2011-2012 Gabor Juhos ++ * Copyright (C) 2013 alzhao ++ * Copyright (C) 2014 Michel Stempin ++ * ++ * 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 "dev-eth.h" ++#include "dev-gpio-buttons.h" ++#include "dev-leds-gpio.h" ++#include "dev-m25p80.h" ++#include "dev-usb.h" ++#include "dev-wmac.h" ++#include "machtypes.h" ++ ++#define GL_AR150_GPIO_LED_WLAN 0 ++#define GL_AR150_GPIO_LED_LAN 13 ++#define GL_AR150_GPIO_LED_WAN 15 ++ ++#define GL_AR150_GPIO_BIN_USB 6 ++#define GL_AR150_GPIO_BTN_MANUAL 7 ++#define GL_AR150_GPIO_BTN_AUTO 8 ++#define GL_AR150_GPIO_BTN_RESET 11 ++ ++#define GL_AR150_KEYS_POLL_INTERVAL 20 /* msecs */ ++#define GL_AR150_KEYS_DEBOUNCE_INTERVAL (3 * GL_AR150_KEYS_POLL_INTERVAL) ++ ++#define GL_AR150_MAC0_OFFSET 0x0000 ++#define GL_AR150_MAC1_OFFSET 0x0000 ++#define GL_AR150_CALDATA_OFFSET 0x1000 ++#define GL_AR150_WMAC_MAC_OFFSET 0x0000 ++ ++static struct gpio_led gl_ar150_leds_gpio[] __initdata = { ++ { ++ .name = "gl_ar150:wlan", ++ .gpio = GL_AR150_GPIO_LED_WLAN, ++ .active_low = 0, ++ }, ++ { ++ .name = "gl_ar150:lan", ++ .gpio = GL_AR150_GPIO_LED_LAN, ++ .active_low = 0, ++ }, ++ { ++ .name = "gl_ar150:wan", ++ .gpio = GL_AR150_GPIO_LED_WAN, ++ .active_low = 0, ++ .default_state = 1, ++ }, ++}; ++ ++static struct gpio_keys_button gl_ar150_gpio_keys[] __initdata = { ++ { ++ .desc = "BTN_7", ++ .type = EV_KEY, ++ .code = BTN_7, ++ .debounce_interval = GL_AR150_KEYS_DEBOUNCE_INTERVAL, ++ .gpio = GL_AR150_GPIO_BTN_MANUAL, ++ .active_low = 0, ++ }, ++ { ++ .desc = "BTN_8", ++ .type = EV_KEY, ++ .code = BTN_8, ++ .debounce_interval = GL_AR150_KEYS_DEBOUNCE_INTERVAL, ++ .gpio = GL_AR150_GPIO_BTN_AUTO, ++ .active_low = 0, ++ }, ++ { ++ .desc = "reset", ++ .type = EV_KEY, ++ .code = KEY_RESTART, ++ .debounce_interval = GL_AR150_KEYS_DEBOUNCE_INTERVAL, ++ .gpio = GL_AR150_GPIO_BTN_RESET, ++ .active_low = 0, ++ }, ++}; ++ ++static void __init gl_ar150_setup(void) ++{ ++ ++ /* ART base address */ ++ u8 *art = (u8 *) KSEG1ADDR(0x1fff0000); ++ ++ /* disable PHY_SWAP and PHY_ADDR_SWAP bits */ ++ ath79_setup_ar933x_phy4_switch(false, false); ++ ++ /* register flash. */ ++ ath79_register_m25p80(NULL); ++ ++ /* register gpio LEDs and keys */ ++ ath79_register_leds_gpio(-1, ARRAY_SIZE(gl_ar150_leds_gpio), ++ gl_ar150_leds_gpio); ++ ath79_register_gpio_keys_polled(-1, GL_AR150_KEYS_POLL_INTERVAL, ++ ARRAY_SIZE(gl_ar150_gpio_keys), ++ gl_ar150_gpio_keys); ++ ++ /* enable usb */ ++ gpio_request_one(GL_AR150_GPIO_BIN_USB, ++ GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED, ++ "USB power"); ++ ath79_register_usb(); ++ ++ /* register eth0 as WAN, eth1 as LAN */ ++ ath79_init_mac(ath79_eth0_data.mac_addr, art+GL_AR150_MAC0_OFFSET, 0); ++ ath79_init_mac(ath79_eth1_data.mac_addr, art+GL_AR150_MAC1_OFFSET, 0); ++ ath79_register_mdio(0, 0x0); ++ ath79_register_eth(0); ++ ath79_register_eth(1); ++ ++ /* register wireless mac with cal data */ ++ ath79_register_wmac(art + GL_AR150_CALDATA_OFFSET, art + GL_AR150_WMAC_MAC_OFFSET); ++} ++ ++MIPS_MACHINE(ATH79_MACH_GL_AR150, "GL-AR150", "GL AR150",gl_ar150_setup); +--- target/linux/ar71xx/generic/profiles/gl-connect.mk ++++ /dev/null +@@ -1,17 +0,0 @@ +-# +-# Copyright (C) 2014 OpenWrt.org +-# +-# This is free software, licensed under the GNU General Public License v2. +-# See /LICENSE for more information. +-# +- +-define Profile/GLINET +- NAME:=GL.iNet +- PACKAGES:=kmod-usb-core kmod-usb2 +-endef +- +-define Profile/GLINET/Description +- Package set optimized for the GL-Connect GL.iNet v1. +-endef +- +-$(eval $(call Profile,GLINET)) +--- /dev/null ++++ target/linux/ar71xx/generic/profiles/gli.mk +@@ -0,0 +1,27 @@ ++# ++# Copyright (C) 2013 OpenWrt.org ++# ++# This is free software, licensed under the GNU General Public License v2. ++# See /LICENSE for more information. ++# ++define Profile/GLINET ++ NAME:=GL.iNet 6416 ++ PACKAGES:=kmod-usb-core kmod-usb2 ++endef ++ ++define Profile/GLINET/Description ++ Package set optimized for the GL-Connect GL.iNet v1. ++endef ++ ++$(eval $(call Profile,GLINET)) ++ ++define Profile/GL-AR150 ++ NAME:=GL AR150 ++ PACKAGES:=kmod-usb-core kmod-usb2 ++endef ++ ++define Profile/GL-AR150/Description ++ Configuration of GL AR150. ++endef ++ ++$(eval $(call Profile,GL-AR150)) +--- target/linux/ar71xx/image/Makefile ++++ target/linux/ar71xx/image/Makefile +@@ -144,6 +144,14 @@ define Device/weio + endef + TARGET_DEVICES += weio + ++define Device/gl-ar150 ++ BOARDNAME = GL-AR150 ++ IMAGE_SIZE = 16000k ++ CONSOLE = ttyATH0,115200 ++ MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro ++endef ++TARGET_DEVICES += gl-ar150 ++ + define Device/wndr3700 + BOARDNAME = WNDR3700 + NETGEAR_KERNEL_MAGIC = 0x33373030 +--- /dev/null ++++ target/linux/ar71xx/patches-3.18/911-MIPS-ath79-add-gl_ar150.patch +@@ -0,0 +1,39 @@ ++--- a/arch/mips/ath79/Kconfig +++++ b/arch/mips/ath79/Kconfig ++@@ -577,6 +577,16 @@ config ATH79_MACH_EL_MINI ++ select ATH79_DEV_USB ++ select ATH79_DEV_WMAC ++ +++config ATH79_MACH_GL_AR150 +++ bool "GL AR150 support" +++ select SOC_AR933X +++ select ATH79_DEV_ETH +++ select ATH79_DEV_GPIO_BUTTONS +++ select ATH79_DEV_LEDS_GPIO +++ select ATH79_DEV_M25P80 +++ select ATH79_DEV_USB +++ select ATH79_DEV_WMAC +++ ++ config ATH79_MACH_GL_INET ++ bool "GL-INET support" ++ select SOC_AR933X ++--- a/arch/mips/ath79/Makefile +++++ b/arch/mips/ath79/Makefile ++@@ -83,6 +83,7 @@ obj-$(CONFIG_ATH79_MACH_EL_MINI) += mach ++ obj-$(CONFIG_ATH79_MACH_EPG5000) += mach-epg5000.o ++ obj-$(CONFIG_ATH79_MACH_ESR1750) += mach-esr1750.o ++ obj-$(CONFIG_ATH79_MACH_F9K1115V2) += mach-f9k1115v2.o +++obj-$(CONFIG_ATH79_MACH_GL_AR150) += mach-gl-ar150.o ++ obj-$(CONFIG_ATH79_MACH_GL_INET) += mach-gl-inet.o ++ obj-$(CONFIG_ATH79_MACH_GS_MINIBOX_V1) += mach-gs-minibox-v1.o ++ obj-$(CONFIG_ATH79_MACH_GS_OOLITE) += mach-gs-oolite.o ++--- a/arch/mips/ath79/machtypes.h +++++ b/arch/mips/ath79/machtypes.h ++@@ -72,6 +72,7 @@ enum ath79_mach_type { ++ ATH79_MACH_ESR1750, /* EnGenius ESR1750 */ ++ ATH79_MACH_EPG5000, /* EnGenius EPG5000 */ ++ ATH79_MACH_F9K1115V2, /* Belkin AC1750DB */ +++ ATH79_MACH_GL_AR150, /* GL-AR150 support */ ++ ATH79_MACH_GL_INET, /* GL-CONNECT GL-INET */ ++ ATH79_MACH_GS_MINIBOX_V1, /* Gainstrong MiniBox V1.0 */ ++ ATH79_MACH_GS_OOLITE, /* GS OOLITE V1.0 */ + diff --git a/buildscript b/buildscript index f159f26..9154427 100755 --- a/buildscript +++ b/buildscript @@ -164,6 +164,9 @@ prepare() { # set default password to 'ffol' patch -p0 -d "$target" -i "$PWD"/build_patches/set_root_password.patch + #add Support for GL-AR150 see also http://git.openwrt.org/?p=openwrt.git;a=commit;h=8211e81bce57392635fa3ad6572514387118e4a5 + patch -p0 -d "$target" -i "$PWD"/build_patches/ar71xx-add-support-for-GL-AR150.patch + #saves ~200MB for each build test -d ./src/dl || mkdir ./src/dl ln -s ../../src/dl "$target"/dl