`ō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

Reply via email to