`ōlunx schrieb: > Hey guys, > Here is a patch for adding Elink M-150/M-mini to OpenWrt. > More infomation about Elink can be find below: > M-150: > http://item.taobao.com/item.htm?spm=a1z10.5.w4002-2498531248.10.ESiKXR&id=16612265015 > M-mini: > http://item.taobao.com/item.htm?spm=a1z10.5.w4002-2498531248.16.ESiKXR&id=36485130954 > > ----------------------------------------------------------------------- > Signed-off-by: Fangcheng Huang <[email protected]> > Patch: Hi, please make sure to have read the SubmittingPatches wiki entry: https://dev.openwrt.org/wiki/SubmittingPatches Also, make sure your changes blend in as seamless as possible to existing code. Use a name scheme like el-m150 and el-mmini. Sort in your changes in alphabetic order. A few more comments below: > Index: target/linux/ar71xx/base-files/etc/diag.sh > =================================================================== > --- target/linux/ar71xx/base-files/etc/diag.sh (Version 40773) > +++ target/linux/ar71xx/base-files/etc/diag.sh (Working Copy) > @@ -6,6 +6,9 @@ > > get_status_led() { > case $(ar71xx_board_name) in > + EL-M150) > + status_led="elink:green:system" > + ;; > alfa-nx) > status_led="alfa:green:led_8" > ;; > Index: target/linux/ar71xx/base-files/etc/uci-defaults/02_network > =================================================================== > --- target/linux/ar71xx/base-files/etc/uci-defaults/02_network > (Version 40773) > +++ target/linux/ar71xx/base-files/etc/uci-defaults/02_network > (Working Copy) > @@ -22,6 +22,16 @@ > ucidef_set_interface_lan "eth0 eth1" > ;; > > +M-mini) > + ucidef_set_interfaces_lan_wan "eth1" "eth0" > + ;; > + This belongs between jwap003 and pb42. All other model names are lower-case, so use lower-case as well. > > +EL-M150) > + ucidef_set_interfaces_lan_wan "eth1" "eth0" > + ucidef_add_switch "switch0" "1" "1" > + ucidef_add_switch_vlan "switch0" "1" "0 1 3" > + ;; > + > ap132 |\ > wlr8100) > ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" > Index: > target/linux/ar71xx/base-files/etc/uci-defaults/03_network-switchX-migration > =================================================================== > --- > target/linux/ar71xx/base-files/etc/uci-defaults/03_network-switchX-migration > (Version 40773) > +++ > target/linux/ar71xx/base-files/etc/uci-defaults/03_network-switchX-migration > (Working Copy) > @@ -80,6 +80,7 @@ > migrate_switch_name "eth0" "switch0" > ;; > > +EL-M150|\ > rb-450) > migrate_switch_name "eth1" "switch0" > ;; > Index: target/linux/ar71xx/base-files/lib/ar71xx.sh > =================================================================== > --- target/linux/ar71xx/base-files/lib/ar71xx.sh (Version 40773) > +++ target/linux/ar71xx/base-files/lib/ar71xx.sh (Working Copy) > @@ -91,6 +91,12 @@ > hwver="v${hwver#0}" > > case "$hwid" in > + "015000"*) > + model="ELink EL-M150" > + ;; > + "015300"*) > + model="ELink M-mini" > + ;; > "3C0001"*) > model="OOLITE" > ;; > @@ -211,6 +217,12 @@ > machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' > /proc/cpuinfo) > > case "$machine" in > + *EL-M150) > + name="EL-M150" > + ;; > + *M-mini) > + name="M-mini" > + ;; > *"Oolite V1.0") > name="oolite" > ;; > Index: target/linux/ar71xx/base-files/lib/upgrade/platform.sh > =================================================================== > --- target/linux/ar71xx/base-files/lib/upgrade/platform.sh (Version 40773) > +++ target/linux/ar71xx/base-files/lib/upgrade/platform.sh (Working Copy) > @@ -219,6 +219,8 @@ > return 1 > ;; > > + EL-M150 | \ > + M-mini | \ Sort alphabetically. > > archer-c7 | \ > oolite | \ > tl-mr10u | \ > Index: target/linux/ar71xx/config-3.10 > =================================================================== > --- target/linux/ar71xx/config-3.10 (Version 40773) > +++ target/linux/ar71xx/config-3.10 (Working Copy) > @@ -47,6 +47,7 @@ > CONFIG_ATH79_MACH_DIR_825_C1=y > CONFIG_ATH79_MACH_DRAGINO2=y > CONFIG_ATH79_MACH_EAP7660D=y > +CONFIG_ATH79_MACH_EL_M150=y > CONFIG_ATH79_MACH_EW_DORIN=y > CONFIG_ATH79_MACH_GS_OOLITE=y > CONFIG_ATH79_MACH_HORNET_UB=y > @@ -58,6 +59,7 @@ > CONFIG_ATH79_MACH_MYNET_REXT=y > CONFIG_ATH79_MACH_MZK_W04NU=y > CONFIG_ATH79_MACH_MZK_W300NH=y > +CONFIG_ATH79_MACH_M_mini=y > CONFIG_ATH79_MACH_NBG460N=y > CONFIG_ATH79_MACH_NBG6716=y > CONFIG_ATH79_MACH_OM2P=y > Index: target/linux/ar71xx/files/arch/mips/ath79/mach-el-m150.c > =================================================================== > --- target/linux/ar71xx/files/arch/mips/ath79/mach-el-m150.c (Version 0) > +++ target/linux/ar71xx/files/arch/mips/ath79/mach-el-m150.c (Working Copy) > @@ -0,0 +1,138 @@ > +/* > + * ELINK EL-M150 board support > + * > + * Copyright (C) 2012 HYS <[email protected]> > + * Copyright (C) 2012 huangfc <[email protected]> > + * > + * 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/gpio.h> > + > +#include <asm/mach-ath79/ath79.h> > +#include <asm/mach-ath79/ar71xx_regs.h> > + > +#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" > +#include "dev-usb.h" > + > +#define EL_M150_GPIO_BTN6 6 > +#define EL_M150_GPIO_BTN7 7 > +#define EL_M150_GPIO_BTN_RESET 11 > + > +#define EL_M150_GPIO_LED_SYSTEM 27 > +#define EL_M150_GPIO_USB_POWER 8 > + > +#define EL_M150_KEYS_POLL_INTERVAL 20 /* msecs */ > +#define EL_M150_KEYS_DEBOUNCE_INTERVAL (3 * EL_M150_KEYS_POLL_INTERVAL) > + > +static const char *EL_M150_part_probes[] = { > + "tp-link", > + NULL, > +}; > + > +static struct flash_platform_data EL_M150_flash_data = { > + .part_probes = EL_M150_part_probes, > +}; > + > +static struct gpio_led EL_M150_leds_gpio[] __initdata = { > + { > + .name = "elink:green:system", > + .gpio = EL_M150_GPIO_LED_SYSTEM, > + .active_low = 1, > + }, > +}; > + > +static struct gpio_keys_button EL_M150_gpio_keys[] __initdata = { > + { > + .desc = "reset", > + .type = EV_KEY, > + .code = KEY_RESTART, > + .debounce_interval = EL_M150_KEYS_DEBOUNCE_INTERVAL, > + .gpio = EL_M150_GPIO_BTN_RESET, > + .active_low = 0, > + }, > + { > + .desc = "BTN_6", > + .type = EV_KEY, > + .code = BTN_6, > + .debounce_interval = EL_M150_KEYS_DEBOUNCE_INTERVAL, > + .gpio = EL_M150_GPIO_BTN6, > + .active_low = 1, > + }, > + { > + .desc = "BTN_7", > + .type = EV_KEY, > + .code = BTN_7, > + .debounce_interval = EL_M150_KEYS_DEBOUNCE_INTERVAL, > + .gpio = EL_M150_GPIO_BTN7, > + .active_low = 1, > + }, > +}; > + > +static void ath79_gpio_set_value(unsigned gpio, int value) > +{ > + void __iomem *base = ath79_gpio_base; > + > + if (value) > + __raw_writel(1 << gpio, base + AR71XX_GPIO_REG_SET); > + else > + __raw_writel(1 << gpio, base + AR71XX_GPIO_REG_CLEAR); > +} > + > +static void __init EL_M150_GPIO_setup(void) > +{ > + ath79_gpio_set_value(0,1); > + ath79_gpio_set_value(1,1); > + ath79_gpio_set_value(14,1); > + ath79_gpio_set_value(16,1); > + ath79_gpio_set_value(18,1); > + ath79_gpio_set_value(19,1); > + ath79_gpio_set_value(20,1); > + ath79_gpio_set_value(21,1); > + ath79_gpio_set_value(22,1); > + ath79_gpio_set_value(26,1); > +} What are those GPIOs set up for? > > + > +static void __init EL_M150_setup(void) > +{ > + u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00); > + u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000); > + > + EL_M150_GPIO_setup(); > + > + /* disable PHY_SWAP and PHY_ADDR_SWAP bits */ > + ath79_setup_ar933x_phy4_switch(false, false); > + > + ath79_register_leds_gpio(-1, ARRAY_SIZE(EL_M150_leds_gpio), > + EL_M150_leds_gpio); > + > + ath79_register_gpio_keys_polled(-1, EL_M150_KEYS_POLL_INTERVAL, > + ARRAY_SIZE(EL_M150_gpio_keys), > + EL_M150_gpio_keys); > + > + gpio_request_one(EL_M150_GPIO_USB_POWER, > + GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED, > + "USB power"); > + ath79_register_usb(); > + > + ath79_register_m25p80(&EL_M150_flash_data); > + ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0); > + ath79_init_mac(ath79_eth1_data.mac_addr, mac, -1); > + > + ath79_register_mdio(0, 0x0); > + ath79_register_eth(0); > + ath79_register_eth(1); > + > + ath79_register_wmac(ee, mac); > +} > + > +MIPS_MACHINE(ATH79_MACH_EL_M150, "EL-M150", > + "ELINK EL-M150", EL_M150_setup); > Index: target/linux/ar71xx/files/arch/mips/ath79/mach-el-mini.c > =================================================================== > --- target/linux/ar71xx/files/arch/mips/ath79/mach-el-mini.c (Version 0) > +++ target/linux/ar71xx/files/arch/mips/ath79/mach-el-mini.c (Working Copy) > @@ -0,0 +1,86 @@ > +/* > + * ELINK M-mini board support > + * > + * Copyright (C) 2012 HYS <[email protected]> > + * Copyright (C) 2012 huangfc <[email protected]> > + * > + * 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/gpio.h> > + > +#include <asm/mach-ath79/ath79.h> > + > +#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 MINI_GPIO_LED_SYSTEM 27 > +#define MINI_GPIO_BTN_RESET 11 > + > +#define MINI_GPIO_USB_POWER 8 > + > +#define MINI_KEYS_POLL_INTERVAL 20 /* msecs */ > +#define MINI_KEYS_DEBOUNCE_INTERVAL (3 * MINI_KEYS_POLL_INTERVAL) > + > +static const char *mini_part_probes[] = { > + "tp-link", > + NULL, > +}; > + > +static struct flash_platform_data mini_flash_data = { > + .part_probes = mini_part_probes, > +}; > + > +static struct gpio_led mini_leds_gpio[] __initdata = { > + { > + .name = "elink:green:system", > + .gpio = MINI_GPIO_LED_SYSTEM, > + .active_low = 1, > + }, > +}; > + > +static struct gpio_keys_button mini_gpio_keys[] __initdata = { > + { > + .desc = "reset", > + .type = EV_KEY, > + .code = KEY_RESTART, > + .debounce_interval = MINI_KEYS_DEBOUNCE_INTERVAL, > + .gpio = MINI_GPIO_BTN_RESET, > + .active_low = 0, > + } > +}; > + > +static void __init mini_setup(void) > +{ > + u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00); > + u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000); > + > + ath79_register_m25p80(&mini_flash_data); > + ath79_register_leds_gpio(-1, ARRAY_SIZE(mini_leds_gpio), > + mini_leds_gpio); > + ath79_register_gpio_keys_polled(-1, MINI_KEYS_POLL_INTERVAL, > + ARRAY_SIZE(mini_gpio_keys), > + mini_gpio_keys); > + > + gpio_request_one(MINI_GPIO_USB_POWER, > + GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED, > + "USB power"); > + ath79_register_usb(); > + > + ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0); > + > + ath79_register_mdio(0, 0x0); > + ath79_register_eth(0); > + > + ath79_register_wmac(ee, mac); > +} > + > +MIPS_MACHINE(ATH79_MACH_M_mini, "M-mini", "ELINK M-mini", > + mini_setup); > Index: target/linux/ar71xx/generic/profiles/el-link.mk > =================================================================== > --- target/linux/ar71xx/generic/profiles/el-link.mk (Version 0) > +++ target/linux/ar71xx/generic/profiles/el-link.mk (Working Copy) > @@ -0,0 +1,29 @@ > +# > +# Copyright (C) 2009 OpenWrt.org > +# > +# This is free software, licensed under the GNU General Public License v2. > +# See /LICENSE for more information. > +# > + > +define Profile/ELM150 > + NAME:=ELINK EL-M150 > + PACKAGES:=kmod-usb-core kmod-usb2 > +endef > + > + > +define Profile/ELM150/Description > + Package set optimized for the ELINK EL-M150. > +endef > +$(eval $(call Profile,ELM150)) > + > + > +define Profile/MINI > + NAME:=ELINK M-mini > + PACKAGES:=kmod-usb-core kmod-usb2 > +endef > + > + > +define Profile/MINI/Description > + Package set optimized for the ELINK M-mini. > +endef > +$(eval $(call Profile,MINI)) > Index: target/linux/ar71xx/image/Makefile > =================================================================== > --- target/linux/ar71xx/image/Makefile (Version 40773) > +++ target/linux/ar71xx/image/Makefile (Working Copy) > @@ -1110,6 +1110,8 @@ > $(eval $(call > SingleProfile,TPLINK,64kraw,TLWR941NV4,tl-wr941nd-v4,TL-WR741ND,ttyS0,115200,0x09410004,1,4M)) > $(eval $(call > SingleProfile,TPLINK,64kraw,TLWR1043V1,tl-wr1043nd-v1,TL-WR1043ND,ttyS0,115200,0x10430001,1,8M)) > > +$(eval $(call > SingleProfile,TPLINK-LZMA,64kraw,ELM150,el-m150,EL-M150,ttyATH0,115200,0x01500101,1,8Mlzma)) > +$(eval $(call > SingleProfile,TPLINK-LZMA,64kraw,MINI,M-mini,M-mini,ttyATH0,115200,0x01530001,1,8Mlzma)) > $(eval $(call > SingleProfile,TPLINK-LZMA,64kraw,ARCHERC7V1,archer-c7-v1,ARCHER-C7,ttyS0,115200,0x75000001,1,8Mlzma)) > $(eval $(call > SingleProfile,TPLINK-LZMA,64kraw,ARCHERC7V2,archer-c7-v2,ARCHER-C7,ttyS0,115200,0xc7000002,1,16Mlzma)) > $(eval $(call > SingleProfile,TPLINK-LZMA,64kraw,TLMR10U,tl-mr10u-v1,TL-MR10U,ttyATH0,115200,0x00100101,1,4Mlzma)) > Index: > target/linux/ar71xx/patches-3.10/635-MIPS-ath79-add-EL-LINK-support.patch > =================================================================== > --- target/linux/ar71xx/patches-3.10/635-MIPS-ath79-add-EL-LINK-support.patch > (Version 0) > +++ target/linux/ar71xx/patches-3.10/635-MIPS-ath79-add-EL-LINK-support.patch > (Working Copy) > @@ -0,0 +1,51 @@ > +--- a/arch/mips/ath79/Kconfig > ++++ b/arch/mips/ath79/Kconfig > +@@ -597,6 +597,26 @@ > + select ATH79_DEV_M25P80 > + select ATH79_DEV_WMAC > + > ++config ATH79_MACH_EL_M150 > ++ bool "ELINK EL-M150 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_M_mini > ++ bool "ELINK M-mini 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_TL_WA901ND > + bool "TP-LINK TL-WA901ND/TL-WA7510N support" > + select SOC_AR724X > +--- a/arch/mips/ath79/Makefile > ++++ b/arch/mips/ath79/Makefile > +@@ -89,6 +89,8 @@ > + obj-$(CONFIG_ATH79_MACH_TL_MR3020) += mach-tl-mr3020.o > + obj-$(CONFIG_ATH79_MACH_TL_MR3X20) += mach-tl-mr3x20.o > + obj-$(CONFIG_ATH79_MACH_TL_WAX50RE) += mach-tl-wax50re.o > ++obj-$(CONFIG_ATH79_MACH_EL_M150) += mach-el-m150.o > ++obj-$(CONFIG_ATH79_MACH_M_mini) += mach-el-mini.o > + obj-$(CONFIG_ATH79_MACH_TL_WA901ND) += mach-tl-wa901nd.o > + obj-$(CONFIG_ATH79_MACH_TL_WA901ND_V2) += mach-tl-wa901nd-v2.o > + obj-$(CONFIG_ATH79_MACH_TL_WDR3500) += mach-tl-wdr3500.o > +--- a/arch/mips/ath79/machtypes.h > ++++ b/arch/mips/ath79/machtypes.h > +@@ -116,6 +116,8 @@ > + ATH79_MACH_TL_WR841N_V7, /* TP-LINK TL-WR841N/ND v7 */ > + ATH79_MACH_TL_WR841N_V8, /* TP-LINK TL-WR841N/ND v8 */ > + ATH79_MACH_TL_WR842N_V2, /* TP-LINK TL-WR842N/ND v2 */ > ++ ATH79_MACH_EL_M150, /* ELINK EL-M150 */ > ++ ATH79_MACH_M_mini, /* ELINK M-mini */ > + ATH79_MACH_TL_WR941ND, /* TP-LINK TL-WR941ND */ > + ATH79_MACH_UBNT_AIRROUTER, /* Ubiquiti AirRouter */ > + ATH79_MACH_UBNT_BULLET_M, /* Ubiquiti Bullet M */ > Index: tools/firmware-utils/src/mktplinkfw.c > =================================================================== > --- tools/firmware-utils/src/mktplinkfw.c (Version 40773) > +++ tools/firmware-utils/src/mktplinkfw.c (Working Copy) > @@ -207,6 +207,12 @@ > .kernel_ep = 0xc0000000, > .rootfs_ofs = 0x2a0000, > }, { > + .id = "16Mlzma", > + .fw_max_len = 0xfc0000, > + .kernel_la = 0x80060000, > + .kernel_ep = 0x80060000, > + .rootfs_ofs = 0x100000, > + }, { > /* terminating entry */ > } > }; > > > > _______________________________________________ > openwrt-devel mailing list > [email protected] > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
