diff mbox

[OpenWrt-Devel,ar71xx] Add support for MERCURY MAC1200R

Message ID 1420976894-12794-1-git-send-email-openwrt@rogerpueyo.com
State Rejected
Headers show

Commit Message

Roger Pueyo Centelles Jan. 11, 2015, 11:48 a.m. UTC
From: Roger Pueyo Centelles <roger.pueyo@guifi.net>

---
 target/linux/ar71xx/base-files/etc/diag.sh         |   3 +
 .../ar71xx/base-files/etc/uci-defaults/01_leds     |   5 +
 .../ar71xx/base-files/etc/uci-defaults/02_network  |   1 +
 target/linux/ar71xx/base-files/lib/ar71xx.sh       |   6 +
 .../ar71xx/base-files/lib/upgrade/platform.sh      |   1 +
 target/linux/ar71xx/config-3.14                    |   1 +
 .../files/arch/mips/ath79/mach-mc-mac1200r.c       | 157 +++++++++++++++++++++
 target/linux/ar71xx/generic/profiles/mercury.mk    |  17 +++
 target/linux/ar71xx/image/Makefile                 |   1 +
 .../736-MIPS-ath79-add-MC-MAC1200R-support.patch   |  39 +++++
 10 files changed, 231 insertions(+)
 create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-mc-mac1200r.c
 create mode 100644 target/linux/ar71xx/generic/profiles/mercury.mk
 create mode 100644 target/linux/ar71xx/patches-3.14/736-MIPS-ath79-add-MC-MAC1200R-support.patch

Comments

Gioacchino Mazzurco Jan. 11, 2015, 5:47 p.m. UTC | #1
Does openwrt supports 802.11ac with this router?
Seller claim 802.11ac wireless + 1200Mbit ethernet speed (Gigabit?)

Thanks!
Gioacchino Mazzurco Jan. 11, 2015, 9:25 p.m. UTC | #2
On Sunday, January 11, 2015 09:30:34 PM Roger Pueyo Centelles wrote:
> Apparently it does :)

Cool!


> The device has two radios:
>  - 802.11abgn AR9344 SoC, ath9k, working OK
>  - 802.11ac QCA988x, ath10k, working in AP and STA modes

Doesn't support adhoc nor 802.11s with the 802.11ac :( , does it?


> Ethernet ports are 10/100 :(

It make no sense :(
Why did they do such a stupid design?
Moreover they advertise it as 1200Mbis lan -_-

Thanks!!
Roger Pueyo Centelles Jan. 11, 2015, 9:53 p.m. UTC | #3
No adhoc nor 802.11s with the current ath10k firmware. Actually, that's
what I want it for. It's a pity the driver is not fully open source.

I've tried with firmware 999.999.0.x (
http://wireless.kernel.org/en/users/Drivers/ath10k/firmware) but it the
wireless interface is not operational and I get a bunch of kernel errors.

I agree, it doesn't make much sense to put a 10/100 switch, but it must be
cheaper than a Gb one.

Cheers,

2015-01-11 22:25 GMT+01:00 Gioacchino Mazzurco <gio@eigenlab.org>:

> On Sunday, January 11, 2015 09:30:34 PM Roger Pueyo Centelles wrote:
> > Apparently it does :)
>
> Cool!
>
>
> > The device has two radios:
> >  - 802.11abgn AR9344 SoC, ath9k, working OK
> >  - 802.11ac QCA988x, ath10k, working in AP and STA modes
>
> Doesn't support adhoc nor 802.11s with the 802.11ac :( , does it?
>
>
> > Ethernet ports are 10/100 :(
>
> It make no sense :(
> Why did they do such a stupid design?
> Moreover they advertise it as 1200Mbis lan -_-
>
> Thanks!!
>
Bruno Randolf Jan. 11, 2015, 11:21 p.m. UTC | #4
On 01/11/2015 09:25 PM, Gioacchino Mazzurco wrote:
>> The device has two radios:
>>  - 802.11abgn AR9344 SoC, ath9k, working OK
>>  - 802.11ac QCA988x, ath10k, working in AP and STA modes

Interesting device. Can you post more specs, or add to the TOH wiki?

Thanks,
bruno
Roger Pueyo Centelles Jan. 12, 2015, 12:36 p.m. UTC | #5
Hi,

Please check http://wiki.openwrt.org/toh/mercury/mac1200r

Regards,

Roger

2015-01-12 0:21 GMT+01:00 Bruno Randolf <br1@einfach.org>:

> On 01/11/2015 09:25 PM, Gioacchino Mazzurco wrote:
> >> The device has two radios:
> >>  - 802.11abgn AR9344 SoC, ath9k, working OK
> >>  - 802.11ac QCA988x, ath10k, working in AP and STA modes
>
> Interesting device. Can you post more specs, or add to the TOH wiki?
>
> Thanks,
> bruno
>
>
Chuanhong Guo Jan. 15, 2015, 5:28 a.m. UTC | #6
2015-01-11 19:48 GMT+08:00  <openwrt@rogerpueyo.com>:
> From: Roger Pueyo Centelles <roger.pueyo@guifi.net>
>
> ---
>  target/linux/ar71xx/base-files/etc/diag.sh         |   3 +
>  .../ar71xx/base-files/etc/uci-defaults/01_leds     |   5 +
>  .../ar71xx/base-files/etc/uci-defaults/02_network  |   1 +
>  target/linux/ar71xx/base-files/lib/ar71xx.sh       |   6 +
>  .../ar71xx/base-files/lib/upgrade/platform.sh      |   1 +
>  target/linux/ar71xx/config-3.14                    |   1 +
>  .../files/arch/mips/ath79/mach-mc-mac1200r.c       | 157
+++++++++++++++++++++
>  target/linux/ar71xx/generic/profiles/mercury.mk    |  17 +++
>  target/linux/ar71xx/image/Makefile                 |   1 +
>  .../736-MIPS-ath79-add-MC-MAC1200R-support.patch   |  39 +++++
>  10 files changed, 231 insertions(+)
>  create mode 100644
target/linux/ar71xx/files/arch/mips/ath79/mach-mc-mac1200r.c
>  create mode 100644 target/linux/ar71xx/generic/profiles/mercury.mk
>  create mode 100644
target/linux/ar71xx/patches-3.14/736-MIPS-ath79-add-MC-MAC1200R-support.patch
>
> diff --git a/target/linux/ar71xx/base-files/etc/diag.sh
b/target/linux/ar71xx/base-files/etc/diag.sh
> index 06b96a3..388727f 100755
> --- a/target/linux/ar71xx/base-files/etc/diag.sh
> +++ b/target/linux/ar71xx/base-files/etc/diag.sh
> @@ -105,6 +105,9 @@ get_status_led() {
>         ls-sr71)
>                 status_led="ubnt:green:d22"
>                 ;;
> +       mc-mac1200r)
> +               status_led="mercury:green:system"
> +               ;;
>         mr600)
>                 status_led="mr600:orange:power"
>                 ;;
> diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
> index 296ea57..dc5dfa1 100755
> --- a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
> +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
> @@ -166,6 +166,11 @@ hornet-ub)
>         ucidef_set_led_usbdev "usb" "USB" "alfa:blue:usb" "1-1"
>         ;;
>
> +mc-mac1200r)
> +       ucidef_set_led_wlan "wlan2g" "WLAN2G" "mercury:green:wlan2g"
"phy1tpt"

I think the following line is incorrect:
> +       ucidef_set_led_wlan "wlan5g" "WLAN5G" "mercury:green:wlan5g"
"phy0tpt"
There is no LED trigger called 'phy0tpt' so I think we should use netdev
trigger like this:
ucidef_set_led_netdev "wlan5g" "WLAN5G" "mercury:green:wlan5g" "wlan0"


> +       ;;
> +
>  mr600)
>         ucidef_set_led_wlan "wlan58" "WLAN58" "mr600:green:wlan58"
"phy0tpt"
>         ;;
> diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
> index b4b6cb3..8151470 100755
> --- a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
> +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
> @@ -367,6 +367,7 @@ dir-615-e1 |\
>  dir-615-e4 |\
>  hiwifi-hc6361 |\
>  ja76pf |\
> +mc-mac1200r|\
>  mynet-n600 |\
>  oolite |\
>  qihoo-c301 |\
> diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh
b/target/linux/ar71xx/base-files/lib/ar71xx.sh
> index 9b056e9..3ce63aa 100755
> --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
> +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
> @@ -97,6 +97,9 @@ tplink_board_detect() {
>         "015300"*)
>                 model="EasyLink EL-MINI"
>                 ;;
> +       "120000"*)
> +               model="MERCURY MAC1200R"
> +               ;;
>         "3C0001"*)
>                 model="OOLITE"
>                 ;;
> @@ -432,6 +435,9 @@ ar71xx_board_detect() {
>         *LS-SR71)
>                 name="ls-sr71"
>                 ;;
> +       *"MAC1200R")
> +               name="mc-mac1200r"
> +               ;;
>         *MR600v2)
>                 name="mr600v2"
>                 ;;
> diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
> index 6dabf4e..7153614 100755
> --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
> +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
> @@ -297,6 +297,7 @@ platform_check_image() {
>         el-m150 | \
>         el-mini | \
>         gl-inet | \
> +       mc-mac1200r | \
>         oolite | \
>         smart-300 | \
>         tl-mr10u | \
> diff --git a/target/linux/ar71xx/config-3.14
b/target/linux/ar71xx/config-3.14
> index b6fa4ab..a99c082 100644
> --- a/target/linux/ar71xx/config-3.14
> +++ b/target/linux/ar71xx/config-3.14
> @@ -64,6 +64,7 @@ CONFIG_ATH79_MACH_HIWIFI_HC6361=y
>  CONFIG_ATH79_MACH_HORNET_UB=y
>  CONFIG_ATH79_MACH_JA76PF=y
>  CONFIG_ATH79_MACH_JWAP003=y
> +CONFIG_ATH79_MACH_MC_MAC1200R=y
>  CONFIG_ATH79_MACH_MR600=y
>  CONFIG_ATH79_MACH_MR900=y
>  CONFIG_ATH79_MACH_MYNET_N600=y
> diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-mc-mac1200r.c
b/target/linux/ar71xx/files/arch/mips/ath79/mach-mc-mac1200r.c
> new file mode 100644
> index 0000000..6b92b9c
> --- /dev/null
> +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-mc-mac1200r.c
> @@ -0,0 +1,157 @@
> +/*
> + *  MERCURY MAC1200R board support
> + *
> + *  Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
> + *  Copyright (C) 2013 Gui Iribarren <gui@altermundi.net>
> + *
> + *  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/pci.h>
> +#include <linux/phy.h>
> +#include <linux/gpio.h>
> +#include <linux/platform_device.h>
> +#include <linux/ath9k_platform.h>
> +#include <linux/ar8216_platform.h>
> +
> +#include <asm/mach-ath79/ar71xx_regs.h>
> +
> +#include "common.h"
> +#include "dev-ap9x-pci.h"
> +#include "dev-eth.h"
> +#include "dev-gpio-buttons.h"
> +#include "dev-leds-gpio.h"
> +#include "dev-m25p80.h"
> +#include "dev-spi.h"
> +#include "dev-wmac.h"
> +#include "machtypes.h"
> +
> +#define MAC1200R_GPIO_LED_WLAN2G       13
> +#define MAC1200R_GPIO_LED_WLAN5G       17
> +#define MAC1200R_GPIO_LED_SYSTEM       14
> +#define MAC1200R_GPIO_LED_WPS          11
> +#define MAC1200R_GPIO_LED_WAN          12
> +#define MAC1200R_GPIO_LED_LAN1         15
> +#define MAC1200R_GPIO_LED_LAN2         21
> +#define MAC1200R_GPIO_LED_LAN3         22
> +#define MAC1200R_GPIO_LED_LAN4         20
> +
> +#define MAC1200R_GPIO_BTN_WPS          16
> +
> +#define MAC1200R_KEYS_POLL_INTERVAL    20      /* msecs */
> +#define MAC1200R_KEYS_DEBOUNCE_INTERVAL        (3 *
MAC1200R_KEYS_POLL_INTERVAL)
> +
> +#define MAC1200R_MAC0_OFFSET           0
> +#define MAC1200R_MAC1_OFFSET           6
> +#define MAC1200R_WMAC_CALDATA_OFFSET   0x1000
> +#define MAC1200R_PCIE_CALDATA_OFFSET   0x5000
> +
> +static const char *mac1200r_part_probes[] = {
> +       "tp-link",
> +       NULL,
> +};
> +
> +static struct flash_platform_data mac1200r_flash_data = {
> +       .part_probes    = mac1200r_part_probes,
> +};
> +
> +static struct gpio_led mac1200r_leds_gpio[] __initdata = {
> +       {
> +               .name           = "mercury:green:wps",
> +               .gpio           = MAC1200R_GPIO_LED_WPS,
> +               .active_low     = 1,
> +       },
> +       {
> +               .name           = "mercury:green:system",
> +               .gpio           = MAC1200R_GPIO_LED_SYSTEM,
> +               .active_low     = 1,
> +       },
> +       {
> +               .name           = "mercury:green:wlan2g",
> +               .gpio           = MAC1200R_GPIO_LED_WLAN2G,
> +               .active_low     = 1,
> +       },
> +       {
> +               .name           = "mercury:green:wlan5g",
> +               .gpio           = MAC1200R_GPIO_LED_WLAN5G,
> +               .active_low     = 1,
> +       },
> +};
> +

Although the key is called WPS/RESET , I think a reset button is more
important than a WPS button.That's just my personal opinion :)
> +static struct gpio_keys_button mac1200r_gpio_keys[] __initdata = {
> +       {
> +               .desc           = "WPS button",
> +               .type           = EV_KEY,
> +               .code           = KEY_WPS_BUTTON,
> +               .debounce_interval = MAC1200R_KEYS_DEBOUNCE_INTERVAL,
> +               .gpio           = MAC1200R_GPIO_BTN_WPS,
> +               .active_low     = 1,
> +       },
> +};


> +
> +
> +static void __init mac1200r_setup(void)
> +{
> +       u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
> +       u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
> +       u8 tmpmac[ETH_ALEN];
> +
> +       ath79_register_m25p80(&mac1200r_flash_data);
> +
> +       ath79_register_leds_gpio(-1, ARRAY_SIZE(mac1200r_leds_gpio),
> +                                       mac1200r_leds_gpio);
> +
> +       ath79_register_gpio_keys_polled(-1, MAC1200R_KEYS_POLL_INTERVAL,
> +                                       ARRAY_SIZE(mac1200r_gpio_keys),
> +                                       mac1200r_gpio_keys);
> +
> +       ath79_init_mac(tmpmac, mac, 0);
> +
> +       ath79_register_wmac(art + MAC1200R_WMAC_CALDATA_OFFSET, tmpmac);
> +
> +       ath79_init_mac(tmpmac, mac, 1);
> +       //ap9x_pci_setup_wmac_led_pin(0, 0);
> +


> +       ap91_pci_init(art + MAC1200R_PCIE_CALDATA_OFFSET, tmpmac);
What? I think this function is only able to load CALDATA for ath9k
devices.Maybe I'm wrong:)

> +
> +       ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE);
> +
> +       ath79_register_mdio(1, 0x0);
> +
> +       /* LAN */
> +       ath79_init_mac(ath79_eth1_data.mac_addr, mac, -1);
> +
> +       /* GMAC1 is connected to the internal switch */
> +       ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
> +
> +       ath79_register_eth(1);
> +
> +       /* WAN */
> +       ath79_init_mac(ath79_eth0_data.mac_addr, mac, 2);
> +
> +       /* GMAC0 is connected to the PHY4 of the internal switch */
> +       ath79_switch_data.phy4_mii_en = 1;
> +       ath79_switch_data.phy_poll_mask = BIT(4);
> +       ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
> +       ath79_eth0_data.phy_mask = BIT(4);
> +       ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
> +
> +       ath79_register_eth(0);
> +
> +       ath79_gpio_output_select(MAC1200R_GPIO_LED_LAN1,
> +                                AR934X_GPIO_OUT_LED_LINK3);
> +       ath79_gpio_output_select(MAC1200R_GPIO_LED_LAN2,
> +                                AR934X_GPIO_OUT_LED_LINK2);
> +       ath79_gpio_output_select(MAC1200R_GPIO_LED_LAN3,
> +                                AR934X_GPIO_OUT_LED_LINK1);
> +       ath79_gpio_output_select(MAC1200R_GPIO_LED_LAN4,
> +                                AR934X_GPIO_OUT_LED_LINK0);
> +       ath79_gpio_output_select(MAC1200R_GPIO_LED_WAN,
> +                                AR934X_GPIO_OUT_LED_LINK4);
> +}
> +
> +MIPS_MACHINE(ATH79_MACH_MC_MAC1200R, "MC-MAC1200R",
> +            "MERCURY MAC1200R",
> +            mac1200r_setup);
> diff --git a/target/linux/ar71xx/generic/profiles/mercury.mk
b/target/linux/ar71xx/generic/profiles/mercury.mk
> new file mode 100644
> index 0000000..8ce864d
> --- /dev/null
> +++ b/target/linux/ar71xx/generic/profiles/mercury.mk
> @@ -0,0 +1,17 @@
> +#
> +# Copyright (C) 2015 OpenWrt.org
> +#
> +# This is free software, licensed under the GNU General Public License
v2.
> +# See /LICENSE for more information.
> +#
> +
> +
> +define Profile/MAC1200R
> +       NAME:=MERCURY MAC1200R
> +       PACKAGES:=kmod-ath10k
> +endef
> +
> +define Profile/MAC1200R/Description
> +       Package set optimized for the MERCURY MAC1200R.
> +endef
> +$(eval $(call Profile,MAC1200R))
> diff --git a/target/linux/ar71xx/image/Makefile
b/target/linux/ar71xx/image/Makefile
> index ef52f46..9621e0b 100644
> --- a/target/linux/ar71xx/image/Makefile
> +++ b/target/linux/ar71xx/image/Makefile
> @@ -1380,6 +1380,7 @@ $(eval $(call
SingleProfile,TPLINK-LZMA,64kraw,ELM150,el-m150,EL-M150,ttyATH0,11
>  $(eval $(call
SingleProfile,TPLINK-LZMA,64kraw,ELMINI,el-mini,EL-MINI,ttyATH0,115200,0x01530001,1,8Mlzma))
>  $(eval $(call
SingleProfile,TPLINK-LZMA,64kraw,GLINET6408A,gl-inet-6408A-v1,GL-INET,ttyATH0,115200,0x08000001,1,8Mlzma))
>  $(eval $(call
SingleProfile,TPLINK-LZMA,64kraw,GLINET6416A,gl-inet-6416A-v1,GL-INET,ttyATH0,115200,0x08000001,1,16Mlzma))


> +$(eval $(call
SingleProfile,TPLINK-LZMA,64kraw,MAC1200R,mc-mac1200r,MC-MAC1200R,ttyS0,115200,0x12000001,1,8Mlzma))
The factory image is broken since TP-LINK started to use a new firmware
format with RSA signature in China.This should be introduced in the TOH
wiki I think:)

>  $(eval $(call
SingleProfile,TPLINK-LZMA,64kraw,TLMR10U,tl-mr10u-v1,TL-MR10U,ttyATH0,115200,0x00100101,1,4Mlzma))
>  $(eval $(call
SingleProfile,TPLINK-LZMA,64kraw,TLMR11UV1,tl-mr11u-v1,TL-MR11U,ttyATH0,115200,0x00110101,1,4Mlzma))
>  $(eval $(call
SingleProfile,TPLINK-LZMA,64kraw,TLMR11UV2,tl-mr11u-v2,TL-MR11U,ttyATH0,115200,0x00110102,1,4Mlzma))
> diff --git
a/target/linux/ar71xx/patches-3.14/736-MIPS-ath79-add-MC-MAC1200R-support.patch
b/target/linux/ar71xx/patches-3.14/736-MIPS-ath79-add-MC-MAC1200R-support.patch
> new file mode 100644
> index 0000000..bb4d584
> --- /dev/null
> +++
b/target/linux/ar71xx/patches-3.14/736-MIPS-ath79-add-MC-MAC1200R-support.patch
> @@ -0,0 +1,39 @@
> +--- a/arch/mips/ath79/Kconfig
> ++++ b/arch/mips/ath79/Kconfig
> +@@ -374,6 +374,16 @@
> +       select ATH79_DEV_LEDS_GPIO
> +       select ATH79_DEV_M25P80
> +
> ++config ATH79_MACH_MC_MAC1200R
> ++      bool "MERCURY MAC1200R board support"
> ++      select SOC_AR934X
> ++      select ATH79_DEV_AP9X_PCI if PCI
> ++      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_RB4XX
> +       bool "MikroTik RouterBOARD 4xx series support"
> +       select SOC_AR71XX
> +--- a/arch/mips/ath79/Makefile
> ++++ b/arch/mips/ath79/Makefile
> +@@ -66,6 +66,7 @@
> + obj-$(CONFIG_ATH79_MACH_JA76PF)               += mach-ja76pf.o
> + obj-$(CONFIG_ATH79_MACH_JWAP003)      += mach-jwap003.o
> + obj-$(CONFIG_ATH79_MACH_HORNET_UB)    += mach-hornet-ub.o
> ++obj-$(CONFIG_ATH79_MACH_MC_MAC1200R)     += mach-mc-mac1200r.o
> + obj-$(CONFIG_ATH79_MACH_MR600)                += mach-mr600.o
> + obj-$(CONFIG_ATH79_MACH_MYNET_N600)   += mach-mynet-n600.o
> + obj-$(CONFIG_ATH79_MACH_MYNET_REXT)   += mach-mynet-rext.o
> +--- a/arch/mips/ath79/machtypes.h
> ++++ b/arch/mips/ath79/machtypes.h
> +@@ -89,6 +89,7 @@
> +       ATH79_MACH_TEW_673GRU,          /* TRENDnet TEW-673GRU */
> +       ATH79_MACH_TEW_712BR,           /* TRENDnet TEW-712BR */
> +       ATH79_MACH_TEW_732BR,           /* TRENDnet TEW-732BR */
> ++      ATH79_MACH_MC_MAC1200R,         /* MERCURY MAC1200R*/
> +       ATH79_MACH_TL_MR10U,            /* TP-LINK TL-MR10U */
> +       ATH79_MACH_TL_MR11U,            /* TP-LINK TL-MR11U */
> +       ATH79_MACH_TL_MR13U,            /* TP-LINK TL-MR13U */
> --
> 2.1.4
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Ah... I'm not sure I've describe what I think correctly because of my bad
english.Sorry:-)
John Crispin Jan. 17, 2015, 7:07 a.m. UTC | #7
On 11/01/2015 12:48, openwrt@rogerpueyo.com wrote:
> From: Roger Pueyo Centelles <roger.pueyo@guifi.net>
> 

description and SoB are missing




> ---
>  target/linux/ar71xx/base-files/etc/diag.sh         |   3 +
>  .../ar71xx/base-files/etc/uci-defaults/01_leds     |   5 +
>  .../ar71xx/base-files/etc/uci-defaults/02_network  |   1 +
>  target/linux/ar71xx/base-files/lib/ar71xx.sh       |   6 +
>  .../ar71xx/base-files/lib/upgrade/platform.sh      |   1 +
>  target/linux/ar71xx/config-3.14                    |   1 +
>  .../files/arch/mips/ath79/mach-mc-mac1200r.c       | 157 +++++++++++++++++++++
>  target/linux/ar71xx/generic/profiles/mercury.mk    |  17 +++
>  target/linux/ar71xx/image/Makefile                 |   1 +
>  .../736-MIPS-ath79-add-MC-MAC1200R-support.patch   |  39 +++++
>  10 files changed, 231 insertions(+)
>  create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-mc-mac1200r.c
>  create mode 100644 target/linux/ar71xx/generic/profiles/mercury.mk
>  create mode 100644 target/linux/ar71xx/patches-3.14/736-MIPS-ath79-add-MC-MAC1200R-support.patch
> 
> diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh
> index 06b96a3..388727f 100755
> --- a/target/linux/ar71xx/base-files/etc/diag.sh
> +++ b/target/linux/ar71xx/base-files/etc/diag.sh
> @@ -105,6 +105,9 @@ get_status_led() {
>  	ls-sr71)
>  		status_led="ubnt:green:d22"
>  		;;
> +	mc-mac1200r)
> +		status_led="mercury:green:system"
> +		;;
>  	mr600)
>  		status_led="mr600:orange:power"
>  		;;
> diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
> index 296ea57..dc5dfa1 100755
> --- a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
> +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
> @@ -166,6 +166,11 @@ hornet-ub)
>  	ucidef_set_led_usbdev "usb" "USB" "alfa:blue:usb" "1-1"
>  	;;
>  
> +mc-mac1200r)
> +	ucidef_set_led_wlan "wlan2g" "WLAN2G" "mercury:green:wlan2g" "phy1tpt"
> +	ucidef_set_led_wlan "wlan5g" "WLAN5G" "mercury:green:wlan5g" "phy0tpt"
> +	;;
> +
>  mr600)
>  	ucidef_set_led_wlan "wlan58" "WLAN58" "mr600:green:wlan58" "phy0tpt"
>  	;;
> diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
> index b4b6cb3..8151470 100755
> --- a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
> +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
> @@ -367,6 +367,7 @@ dir-615-e1 |\
>  dir-615-e4 |\
>  hiwifi-hc6361 |\
>  ja76pf |\
> +mc-mac1200r|\
>  mynet-n600 |\
>  oolite |\
>  qihoo-c301 |\
> diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
> index 9b056e9..3ce63aa 100755
> --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
> +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
> @@ -97,6 +97,9 @@ tplink_board_detect() {
>  	"015300"*)
>  		model="EasyLink EL-MINI"
>  		;;
> +	"120000"*)
> +		model="MERCURY MAC1200R"
> +		;;
>  	"3C0001"*)
>  		model="OOLITE"
>  		;;
> @@ -432,6 +435,9 @@ ar71xx_board_detect() {
>  	*LS-SR71)
>  		name="ls-sr71"
>  		;;
> +	*"MAC1200R")
> +		name="mc-mac1200r"
> +		;;
>  	*MR600v2)
>  		name="mr600v2"
>  		;;
> diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
> index 6dabf4e..7153614 100755
> --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
> +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
> @@ -297,6 +297,7 @@ platform_check_image() {
>  	el-m150 | \
>  	el-mini | \
>  	gl-inet | \
> +	mc-mac1200r | \
>  	oolite | \
>  	smart-300 | \
>  	tl-mr10u | \
> diff --git a/target/linux/ar71xx/config-3.14 b/target/linux/ar71xx/config-3.14
> index b6fa4ab..a99c082 100644
> --- a/target/linux/ar71xx/config-3.14
> +++ b/target/linux/ar71xx/config-3.14
> @@ -64,6 +64,7 @@ CONFIG_ATH79_MACH_HIWIFI_HC6361=y
>  CONFIG_ATH79_MACH_HORNET_UB=y
>  CONFIG_ATH79_MACH_JA76PF=y
>  CONFIG_ATH79_MACH_JWAP003=y
> +CONFIG_ATH79_MACH_MC_MAC1200R=y
>  CONFIG_ATH79_MACH_MR600=y
>  CONFIG_ATH79_MACH_MR900=y
>  CONFIG_ATH79_MACH_MYNET_N600=y
> diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-mc-mac1200r.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-mc-mac1200r.c
> new file mode 100644
> index 0000000..6b92b9c
> --- /dev/null
> +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-mc-mac1200r.c
> @@ -0,0 +1,157 @@
> +/*
> + *  MERCURY MAC1200R board support
> + *
> + *  Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
> + *  Copyright (C) 2013 Gui Iribarren <gui@altermundi.net>
> + *
> + *  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/pci.h>
> +#include <linux/phy.h>
> +#include <linux/gpio.h>
> +#include <linux/platform_device.h>
> +#include <linux/ath9k_platform.h>
> +#include <linux/ar8216_platform.h>
> +
> +#include <asm/mach-ath79/ar71xx_regs.h>
> +
> +#include "common.h"
> +#include "dev-ap9x-pci.h"
> +#include "dev-eth.h"
> +#include "dev-gpio-buttons.h"
> +#include "dev-leds-gpio.h"
> +#include "dev-m25p80.h"
> +#include "dev-spi.h"
> +#include "dev-wmac.h"
> +#include "machtypes.h"
> +
> +#define MAC1200R_GPIO_LED_WLAN2G	13
> +#define MAC1200R_GPIO_LED_WLAN5G	17
> +#define MAC1200R_GPIO_LED_SYSTEM	14
> +#define MAC1200R_GPIO_LED_WPS		11
> +#define MAC1200R_GPIO_LED_WAN		12
> +#define MAC1200R_GPIO_LED_LAN1		15
> +#define MAC1200R_GPIO_LED_LAN2		21
> +#define MAC1200R_GPIO_LED_LAN3		22
> +#define MAC1200R_GPIO_LED_LAN4		20
> +
> +#define MAC1200R_GPIO_BTN_WPS		16
> +
> +#define MAC1200R_KEYS_POLL_INTERVAL	20	/* msecs */
> +#define MAC1200R_KEYS_DEBOUNCE_INTERVAL	(3 * MAC1200R_KEYS_POLL_INTERVAL)
> +
> +#define MAC1200R_MAC0_OFFSET		0
> +#define MAC1200R_MAC1_OFFSET		6
> +#define MAC1200R_WMAC_CALDATA_OFFSET	0x1000
> +#define MAC1200R_PCIE_CALDATA_OFFSET	0x5000
> +
> +static const char *mac1200r_part_probes[] = {
> +	"tp-link",
> +	NULL,
> +};
> +
> +static struct flash_platform_data mac1200r_flash_data = {
> +	.part_probes	= mac1200r_part_probes,
> +};
> +
> +static struct gpio_led mac1200r_leds_gpio[] __initdata = {
> +	{
> +		.name		= "mercury:green:wps",
> +		.gpio		= MAC1200R_GPIO_LED_WPS,
> +		.active_low	= 1,
> +	},
> +	{
> +		.name		= "mercury:green:system",
> +		.gpio		= MAC1200R_GPIO_LED_SYSTEM,
> +		.active_low	= 1,
> +	},
> +	{
> +		.name		= "mercury:green:wlan2g",
> +		.gpio		= MAC1200R_GPIO_LED_WLAN2G,
> +		.active_low	= 1,
> +	},
> +	{
> +		.name		= "mercury:green:wlan5g",
> +		.gpio		= MAC1200R_GPIO_LED_WLAN5G,
> +		.active_low	= 1,
> +	},
> +};
> +
> +static struct gpio_keys_button mac1200r_gpio_keys[] __initdata = {
> +	{
> +		.desc		= "WPS button",
> +		.type		= EV_KEY,
> +		.code		= KEY_WPS_BUTTON,
> +		.debounce_interval = MAC1200R_KEYS_DEBOUNCE_INTERVAL,
> +		.gpio		= MAC1200R_GPIO_BTN_WPS,
> +		.active_low	= 1,
> +	},
> +};
> +
> +
> +static void __init mac1200r_setup(void)
> +{
> +	u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
> +	u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
> +	u8 tmpmac[ETH_ALEN];
> +
> +	ath79_register_m25p80(&mac1200r_flash_data);
> +
> +	ath79_register_leds_gpio(-1, ARRAY_SIZE(mac1200r_leds_gpio),
> +					mac1200r_leds_gpio);
> +
> +	ath79_register_gpio_keys_polled(-1, MAC1200R_KEYS_POLL_INTERVAL,
> +					ARRAY_SIZE(mac1200r_gpio_keys),
> +					mac1200r_gpio_keys);
> +
> +	ath79_init_mac(tmpmac, mac, 0);
> +
> +	ath79_register_wmac(art + MAC1200R_WMAC_CALDATA_OFFSET, tmpmac);
> +
> +	ath79_init_mac(tmpmac, mac, 1);
> +	//ap9x_pci_setup_wmac_led_pin(0, 0);
> +
> +	ap91_pci_init(art + MAC1200R_PCIE_CALDATA_OFFSET, tmpmac);
> +
> +	ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE);
> +
> +	ath79_register_mdio(1, 0x0);
> +
> +	/* LAN */
> +	ath79_init_mac(ath79_eth1_data.mac_addr, mac, -1);
> +
> +	/* GMAC1 is connected to the internal switch */
> +	ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
> +
> +	ath79_register_eth(1);
> +
> +	/* WAN */
> +	ath79_init_mac(ath79_eth0_data.mac_addr, mac, 2);
> +
> +	/* GMAC0 is connected to the PHY4 of the internal switch */
> +	ath79_switch_data.phy4_mii_en = 1;
> +	ath79_switch_data.phy_poll_mask = BIT(4);
> +	ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
> +	ath79_eth0_data.phy_mask = BIT(4);
> +	ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
> +
> +	ath79_register_eth(0);
> +
> +	ath79_gpio_output_select(MAC1200R_GPIO_LED_LAN1,
> +				 AR934X_GPIO_OUT_LED_LINK3);
> +	ath79_gpio_output_select(MAC1200R_GPIO_LED_LAN2,
> +				 AR934X_GPIO_OUT_LED_LINK2);
> +	ath79_gpio_output_select(MAC1200R_GPIO_LED_LAN3,
> +				 AR934X_GPIO_OUT_LED_LINK1);
> +	ath79_gpio_output_select(MAC1200R_GPIO_LED_LAN4,
> +				 AR934X_GPIO_OUT_LED_LINK0);
> +	ath79_gpio_output_select(MAC1200R_GPIO_LED_WAN,
> +				 AR934X_GPIO_OUT_LED_LINK4);
> +}
> +
> +MIPS_MACHINE(ATH79_MACH_MC_MAC1200R, "MC-MAC1200R",
> +	     "MERCURY MAC1200R",
> +	     mac1200r_setup);
> diff --git a/target/linux/ar71xx/generic/profiles/mercury.mk b/target/linux/ar71xx/generic/profiles/mercury.mk
> new file mode 100644
> index 0000000..8ce864d
> --- /dev/null
> +++ b/target/linux/ar71xx/generic/profiles/mercury.mk
> @@ -0,0 +1,17 @@
> +#
> +# Copyright (C) 2015 OpenWrt.org
> +#
> +# This is free software, licensed under the GNU General Public License v2.
> +# See /LICENSE for more information.
> +#
> +
> +
> +define Profile/MAC1200R
> +	NAME:=MERCURY MAC1200R
> +	PACKAGES:=kmod-ath10k
> +endef
> +
> +define Profile/MAC1200R/Description
> +	Package set optimized for the MERCURY MAC1200R.
> +endef
> +$(eval $(call Profile,MAC1200R))
> diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile
> index ef52f46..9621e0b 100644
> --- a/target/linux/ar71xx/image/Makefile
> +++ b/target/linux/ar71xx/image/Makefile
> @@ -1380,6 +1380,7 @@ $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,ELM150,el-m150,EL-M150,ttyATH0,11
>  $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,ELMINI,el-mini,EL-MINI,ttyATH0,115200,0x01530001,1,8Mlzma))
>  $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,GLINET6408A,gl-inet-6408A-v1,GL-INET,ttyATH0,115200,0x08000001,1,8Mlzma))
>  $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,GLINET6416A,gl-inet-6416A-v1,GL-INET,ttyATH0,115200,0x08000001,1,16Mlzma))
> +$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,MAC1200R,mc-mac1200r,MC-MAC1200R,ttyS0,115200,0x12000001,1,8Mlzma))
>  $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLMR10U,tl-mr10u-v1,TL-MR10U,ttyATH0,115200,0x00100101,1,4Mlzma))
>  $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLMR11UV1,tl-mr11u-v1,TL-MR11U,ttyATH0,115200,0x00110101,1,4Mlzma))
>  $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLMR11UV2,tl-mr11u-v2,TL-MR11U,ttyATH0,115200,0x00110102,1,4Mlzma))
> diff --git a/target/linux/ar71xx/patches-3.14/736-MIPS-ath79-add-MC-MAC1200R-support.patch b/target/linux/ar71xx/patches-3.14/736-MIPS-ath79-add-MC-MAC1200R-support.patch
> new file mode 100644
> index 0000000..bb4d584
> --- /dev/null
> +++ b/target/linux/ar71xx/patches-3.14/736-MIPS-ath79-add-MC-MAC1200R-support.patch
> @@ -0,0 +1,39 @@
> +--- a/arch/mips/ath79/Kconfig
> ++++ b/arch/mips/ath79/Kconfig
> +@@ -374,6 +374,16 @@
> +	select ATH79_DEV_LEDS_GPIO
> +	select ATH79_DEV_M25P80
> +
> ++config ATH79_MACH_MC_MAC1200R
> ++	bool "MERCURY MAC1200R board support"
> ++	select SOC_AR934X
> ++	select ATH79_DEV_AP9X_PCI if PCI
> ++	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_RB4XX
> +	bool "MikroTik RouterBOARD 4xx series support"
> +	select SOC_AR71XX
> +--- a/arch/mips/ath79/Makefile
> ++++ b/arch/mips/ath79/Makefile
> +@@ -66,6 +66,7 @@
> + obj-$(CONFIG_ATH79_MACH_JA76PF)		+= mach-ja76pf.o
> + obj-$(CONFIG_ATH79_MACH_JWAP003)	+= mach-jwap003.o
> + obj-$(CONFIG_ATH79_MACH_HORNET_UB)	+= mach-hornet-ub.o
> ++obj-$(CONFIG_ATH79_MACH_MC_MAC1200R)     += mach-mc-mac1200r.o
> + obj-$(CONFIG_ATH79_MACH_MR600)		+= mach-mr600.o
> + obj-$(CONFIG_ATH79_MACH_MYNET_N600)	+= mach-mynet-n600.o
> + obj-$(CONFIG_ATH79_MACH_MYNET_REXT)	+= mach-mynet-rext.o
> +--- a/arch/mips/ath79/machtypes.h
> ++++ b/arch/mips/ath79/machtypes.h
> +@@ -89,6 +89,7 @@
> +	ATH79_MACH_TEW_673GRU,		/* TRENDnet TEW-673GRU */
> +	ATH79_MACH_TEW_712BR,		/* TRENDnet TEW-712BR */
> +	ATH79_MACH_TEW_732BR,		/* TRENDnet TEW-732BR */
> ++	ATH79_MACH_MC_MAC1200R,		/* MERCURY MAC1200R*/
> +	ATH79_MACH_TL_MR10U,		/* TP-LINK TL-MR10U */
> +	ATH79_MACH_TL_MR11U,		/* TP-LINK TL-MR11U */
> +	ATH79_MACH_TL_MR13U,		/* TP-LINK TL-MR13U */
>
Roger Pueyo Centelles Jan. 26, 2015, 5:10 p.m. UTC | #8
Hi,

Thank you both for your comments.

@郭传鈜:

>> +       ucidef_set_led_wlan "wlan2g" "WLAN2G" "mercury:green:wlan2g"
"phy1tpt"
> I think the following line is incorrect:
>> +       ucidef_set_led_wlan "wlan5g" "WLAN5G" "mercury:green:wlan5g"
"phy0tpt"
> There is no LED trigger called 'phy0tpt' so I think we should use netdev
trigger like this:
> ucidef_set_led_netdev "wlan5g" "WLAN5G" "mercury:green:wlan5g" "wlan0"

Ok!


>> +static struct gpio_keys_button mac1200r_gpio_keys[] __initdata = {
>> +       {
>> +               .desc           = "WPS button",
>> +               .type           = EV_KEY,
>> +               .code           = KEY_WPS_BUTTON,
>> +               .debounce_interval = MAC1200R_KEYS_DEBOUNCE_INTERVAL,
>> +               .gpio           = MAC1200R_GPIO_BTN_WPS,
>> +               .active_low     = 1,
>> +       },
>> +};
> Although the key is called WPS/RESET , I think a reset button is more
important than a WPS button.That's just my personal opinion :)

I think you are right.


>> +       ap91_pci_init(art + MAC1200R_PCIE_CALDATA_OFFSET, tmpmac);
> What? I think this function is only able to load CALDATA for ath9k
devices.Maybe I'm wrong:)

The router has two radios, one ath9k and one ath10k. Isn't it needed for
the ath9k calibration data? Or this radio is already covered by
"ath79_register_wmac(art + MAC1200R_WMAC_CALDATA_OFFSET, tmpmac); ...?


>> +$(eval $(call
SingleProfile,TPLINK-LZMA,64kraw,MAC1200R,mc-mac1200r,MC-MAC1200R,ttyS0,115200,0x12000001,1,8Mlzma))
>The factory image is broken since TP-LINK started to use a new firmware
format with RSA signature in China.This should be introduced in the TOH
wiki I think:)

Done!



@John:

Sorry. Do you mean a description for the patch? I am not aware of what SoB
means.


Thanks!

Roger
Hartmut Knaack Jan. 26, 2015, 8:28 p.m. UTC | #9
Roger Pueyo Centelles schrieb am 26.01.2015 um 18:10:
> Hi,
> 
> Thank you both for your comments.
> 
> @郭传鈜:
> 
>>> +       ucidef_set_led_wlan "wlan2g" "WLAN2G" "mercury:green:wlan2g" "phy1tpt"
>> I think the following line is incorrect:
>>> +       ucidef_set_led_wlan "wlan5g" "WLAN5G" "mercury:green:wlan5g" "phy0tpt"
>> There is no LED trigger called 'phy0tpt' so I think we should use netdev trigger like this:
>> ucidef_set_led_netdev "wlan5g" "WLAN5G" "mercury:green:wlan5g" "wlan0"
> 
> Ok!
> 
> 
>>> +static struct gpio_keys_button mac1200r_gpio_keys[] __initdata = {
>>> +       {
>>> +               .desc           = "WPS button",
>>> +               .type           = EV_KEY,
>>> +               .code           = KEY_WPS_BUTTON,
>>> +               .debounce_interval = MAC1200R_KEYS_DEBOUNCE_INTERVAL,
>>> +               .gpio           = MAC1200R_GPIO_BTN_WPS,
>>> +               .active_low     = 1,
>>> +       },
>>> +};
>> Although the key is called WPS/RESET , I think a reset button is more important than a WPS button.That's just my personal opinion :)
> 
> I think you are right.
> 
> 
>>> +       ap91_pci_init(art + MAC1200R_PCIE_CALDATA_OFFSET, tmpmac);
>> What? I think this function is only able to load CALDATA for ath9k devices.Maybe I'm wrong:)
> 
> The router has two radios, one ath9k and one ath10k. Isn't it needed for the ath9k calibration data? Or this radio is already covered by "ath79_register_wmac(art + MAC1200R_WMAC_CALDATA_OFFSET, tmpmac); ...?
> 
> 
>>> +$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,MAC1200R,mc-mac1200r,MC-MAC1200R,ttyS0,115200,0x12000001,1,8Mlzma))
>>The factory image is broken since TP-LINK started to use a new firmware format with RSA signature in China.This should be introduced in the TOH wiki I think:)
> 
> Done!
> 
> 
> 
> @John:
> 
> Sorry. Do you mean a description for the patch? I am not aware of what SoB means.

Yes, a patch description followed by your Signed-off-by (SoB) is missing. Have a look at the submitting patches wiki page for the patch format requirements. Also, check through your patch again and make sure to mind alphabetic order wherever needed.

> 
> 
> Thanks!
> 
> Roger
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>
Chuanhong Guo Jan. 27, 2015, 3:19 a.m. UTC | #10
2015-01-27 1:10 GMT+08:00 Roger Pueyo Centelles <rogerpueyo@rogerpueyo.com>:

> Hi,
>
> Thank you both for your comments.
>
> @郭传鈜:
>
> >> +       ucidef_set_led_wlan "wlan2g" "WLAN2G" "mercury:green:wlan2g"
> "phy1tpt"
> > I think the following line is incorrect:
> >> +       ucidef_set_led_wlan "wlan5g" "WLAN5G" "mercury:green:wlan5g"
> "phy0tpt"
> > There is no LED trigger called 'phy0tpt' so I think we should use netdev
> trigger like this:
> > ucidef_set_led_netdev "wlan5g" "WLAN5G" "mercury:green:wlan5g" "wlan0"
>
> Ok!
>
>
> >> +static struct gpio_keys_button mac1200r_gpio_keys[] __initdata = {
> >> +       {
> >> +               .desc           = "WPS button",
> >> +               .type           = EV_KEY,
> >> +               .code           = KEY_WPS_BUTTON,
> >> +               .debounce_interval = MAC1200R_KEYS_DEBOUNCE_INTERVAL,
> >> +               .gpio           = MAC1200R_GPIO_BTN_WPS,
> >> +               .active_low     = 1,
> >> +       },
> >> +};
> > Although the key is called WPS/RESET , I think a reset button is more
> important than a WPS button.That's just my personal opinion :)
>
> I think you are right.
>
>
> >> +       ap91_pci_init(art + MAC1200R_PCIE_CALDATA_OFFSET, tmpmac);
> > What? I think this function is only able to load CALDATA for ath9k
> devices.Maybe I'm wrong:)
>
> The router has two radios, one ath9k and one ath10k. Isn't it needed for
> the ath9k calibration data? Or this radio is already covered by
> "ath79_register_wmac(art + MAC1200R_WMAC_CALDATA_OFFSET, tmpmac); ...?
>
> Acoording to mach-archer-c7.c ,I think we should use ath79_register_pci();
here and use /lib/preinit/81_load_ath10k_board_bin to load calibration data
for ath10k.

>
> >> +$(eval $(call
> SingleProfile,TPLINK-LZMA,64kraw,MAC1200R,mc-mac1200r,MC-MAC1200R,ttyS0,115200,0x12000001,1,8Mlzma))
> >The factory image is broken since TP-LINK started to use a new firmware
> format with RSA signature in China.This should be introduced in the TOH
> wiki I think:)
>
> Done!
>
>
>
> @John:
>
> Sorry. Do you mean a description for the patch? I am not aware of what SoB
> means.
>
>
> Thanks!
>
> Roger
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>
>
Roger Pueyo Centelles Jan. 27, 2015, 5:21 p.m. UTC | #11
Hi,

@Hartmut
Ok, now I see. Thanks!

@郭传鈜

Acoording to mach-archer-c7.c ,I think we should use ath79_register_pci();
> here and use /lib/preinit/81_load_ath10k_board_bin to load calibration
> data for ath10k.
>

So, I understand I have to remove this line from
target/linux/ar71xx/files/arch/mips/ath79/mach-mc-mac1200r.c

ap91_pci_init(art + MAC1200R_PCIE_CALDATA_OFFSET, tmpmac);

Then, the MACs in my router end in:
- eth0=>47
- eth1=>49
- wlan1=>4A

so it makes sense to have wlan0 ending in 48 (i.e. eth1 minus 1). In
target/linux/ar71xx/base-files/lib/preinit/81_load_ath10k_board_bin (art
partition is mtd4):

                        dd if=/dev/mtdblock4 \
                                bs=1 skip=20492 count=2104 >>
/tmp/ath10k-board.bin
                ;;
                mc-mac1200r)
                        local mac
                        mac=$(macaddr_add $(cat
/sys/class/net/eth1/address) -1)

                        dd if=/dev/mtdblock4 \
                                bs=1 skip=20480 count=6 \
                                of=/tmp/ath10k-board.bin
                        macaddr_2bin $mac >> /tmp/ath10k-board.bin
                        dd if=/dev/mtdblock4 \
                                bs=1 skip=20492 count=2104 >>
/tmp/ath10k-board.bin
                ;;
                r6100)
                        local mac
                        mac=$(macaddr_add $(cat
/sys/class/net/eth1/address) +2)

                        dd if=/dev/mtdblock2 \

>> +$(eval $(call
>> SingleProfile,TPLINK-LZMA,64kraw,MAC1200R,mc-mac1200r,MC-MAC1200R,ttyS0,115200,0x12000001,1,8Mlzma))
>> >The factory image is broken since TP-LINK started to use a new firmware
>> format with RSA signature in China.This should be introduced in the TOH
>> wiki I think:)
>>
>
Besides adding this to the wiki, what should I change so that the factory
firmware is not generated?

Thanks!

Roger
diff mbox

Patch

diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh
index 06b96a3..388727f 100755
--- a/target/linux/ar71xx/base-files/etc/diag.sh
+++ b/target/linux/ar71xx/base-files/etc/diag.sh
@@ -105,6 +105,9 @@  get_status_led() {
 	ls-sr71)
 		status_led="ubnt:green:d22"
 		;;
+	mc-mac1200r)
+		status_led="mercury:green:system"
+		;;
 	mr600)
 		status_led="mr600:orange:power"
 		;;
diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
index 296ea57..dc5dfa1 100755
--- a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
+++ b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
@@ -166,6 +166,11 @@  hornet-ub)
 	ucidef_set_led_usbdev "usb" "USB" "alfa:blue:usb" "1-1"
 	;;
 
+mc-mac1200r)
+	ucidef_set_led_wlan "wlan2g" "WLAN2G" "mercury:green:wlan2g" "phy1tpt"
+	ucidef_set_led_wlan "wlan5g" "WLAN5G" "mercury:green:wlan5g" "phy0tpt"
+	;;
+
 mr600)
 	ucidef_set_led_wlan "wlan58" "WLAN58" "mr600:green:wlan58" "phy0tpt"
 	;;
diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
index b4b6cb3..8151470 100755
--- a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
+++ b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
@@ -367,6 +367,7 @@  dir-615-e1 |\
 dir-615-e4 |\
 hiwifi-hc6361 |\
 ja76pf |\
+mc-mac1200r|\
 mynet-n600 |\
 oolite |\
 qihoo-c301 |\
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index 9b056e9..3ce63aa 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -97,6 +97,9 @@  tplink_board_detect() {
 	"015300"*)
 		model="EasyLink EL-MINI"
 		;;
+	"120000"*)
+		model="MERCURY MAC1200R"
+		;;
 	"3C0001"*)
 		model="OOLITE"
 		;;
@@ -432,6 +435,9 @@  ar71xx_board_detect() {
 	*LS-SR71)
 		name="ls-sr71"
 		;;
+	*"MAC1200R")
+		name="mc-mac1200r"
+		;;
 	*MR600v2)
 		name="mr600v2"
 		;;
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index 6dabf4e..7153614 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -297,6 +297,7 @@  platform_check_image() {
 	el-m150 | \
 	el-mini | \
 	gl-inet | \
+	mc-mac1200r | \
 	oolite | \
 	smart-300 | \
 	tl-mr10u | \
diff --git a/target/linux/ar71xx/config-3.14 b/target/linux/ar71xx/config-3.14
index b6fa4ab..a99c082 100644
--- a/target/linux/ar71xx/config-3.14
+++ b/target/linux/ar71xx/config-3.14
@@ -64,6 +64,7 @@  CONFIG_ATH79_MACH_HIWIFI_HC6361=y
 CONFIG_ATH79_MACH_HORNET_UB=y
 CONFIG_ATH79_MACH_JA76PF=y
 CONFIG_ATH79_MACH_JWAP003=y
+CONFIG_ATH79_MACH_MC_MAC1200R=y
 CONFIG_ATH79_MACH_MR600=y
 CONFIG_ATH79_MACH_MR900=y
 CONFIG_ATH79_MACH_MYNET_N600=y
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-mc-mac1200r.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-mc-mac1200r.c
new file mode 100644
index 0000000..6b92b9c
--- /dev/null
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-mc-mac1200r.c
@@ -0,0 +1,157 @@ 
+/*
+ *  MERCURY MAC1200R board support
+ *
+ *  Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
+ *  Copyright (C) 2013 Gui Iribarren <gui@altermundi.net>
+ *
+ *  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/pci.h>
+#include <linux/phy.h>
+#include <linux/gpio.h>
+#include <linux/platform_device.h>
+#include <linux/ath9k_platform.h>
+#include <linux/ar8216_platform.h>
+
+#include <asm/mach-ath79/ar71xx_regs.h>
+
+#include "common.h"
+#include "dev-ap9x-pci.h"
+#include "dev-eth.h"
+#include "dev-gpio-buttons.h"
+#include "dev-leds-gpio.h"
+#include "dev-m25p80.h"
+#include "dev-spi.h"
+#include "dev-wmac.h"
+#include "machtypes.h"
+
+#define MAC1200R_GPIO_LED_WLAN2G	13
+#define MAC1200R_GPIO_LED_WLAN5G	17
+#define MAC1200R_GPIO_LED_SYSTEM	14
+#define MAC1200R_GPIO_LED_WPS		11
+#define MAC1200R_GPIO_LED_WAN		12
+#define MAC1200R_GPIO_LED_LAN1		15
+#define MAC1200R_GPIO_LED_LAN2		21
+#define MAC1200R_GPIO_LED_LAN3		22
+#define MAC1200R_GPIO_LED_LAN4		20
+
+#define MAC1200R_GPIO_BTN_WPS		16
+
+#define MAC1200R_KEYS_POLL_INTERVAL	20	/* msecs */
+#define MAC1200R_KEYS_DEBOUNCE_INTERVAL	(3 * MAC1200R_KEYS_POLL_INTERVAL)
+
+#define MAC1200R_MAC0_OFFSET		0
+#define MAC1200R_MAC1_OFFSET		6
+#define MAC1200R_WMAC_CALDATA_OFFSET	0x1000
+#define MAC1200R_PCIE_CALDATA_OFFSET	0x5000
+
+static const char *mac1200r_part_probes[] = {
+	"tp-link",
+	NULL,
+};
+
+static struct flash_platform_data mac1200r_flash_data = {
+	.part_probes	= mac1200r_part_probes,
+};
+
+static struct gpio_led mac1200r_leds_gpio[] __initdata = {
+	{
+		.name		= "mercury:green:wps",
+		.gpio		= MAC1200R_GPIO_LED_WPS,
+		.active_low	= 1,
+	},
+	{
+		.name		= "mercury:green:system",
+		.gpio		= MAC1200R_GPIO_LED_SYSTEM,
+		.active_low	= 1,
+	},
+	{
+		.name		= "mercury:green:wlan2g",
+		.gpio		= MAC1200R_GPIO_LED_WLAN2G,
+		.active_low	= 1,
+	},
+	{
+		.name		= "mercury:green:wlan5g",
+		.gpio		= MAC1200R_GPIO_LED_WLAN5G,
+		.active_low	= 1,
+	},
+};
+
+static struct gpio_keys_button mac1200r_gpio_keys[] __initdata = {
+	{
+		.desc		= "WPS button",
+		.type		= EV_KEY,
+		.code		= KEY_WPS_BUTTON,
+		.debounce_interval = MAC1200R_KEYS_DEBOUNCE_INTERVAL,
+		.gpio		= MAC1200R_GPIO_BTN_WPS,
+		.active_low	= 1,
+	},
+};
+
+
+static void __init mac1200r_setup(void)
+{
+	u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
+	u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
+	u8 tmpmac[ETH_ALEN];
+
+	ath79_register_m25p80(&mac1200r_flash_data);
+
+	ath79_register_leds_gpio(-1, ARRAY_SIZE(mac1200r_leds_gpio),
+					mac1200r_leds_gpio);
+
+	ath79_register_gpio_keys_polled(-1, MAC1200R_KEYS_POLL_INTERVAL,
+					ARRAY_SIZE(mac1200r_gpio_keys),
+					mac1200r_gpio_keys);
+
+	ath79_init_mac(tmpmac, mac, 0);
+
+	ath79_register_wmac(art + MAC1200R_WMAC_CALDATA_OFFSET, tmpmac);
+
+	ath79_init_mac(tmpmac, mac, 1);
+	//ap9x_pci_setup_wmac_led_pin(0, 0);
+
+	ap91_pci_init(art + MAC1200R_PCIE_CALDATA_OFFSET, tmpmac);
+
+	ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE);
+
+	ath79_register_mdio(1, 0x0);
+
+	/* LAN */
+	ath79_init_mac(ath79_eth1_data.mac_addr, mac, -1);
+
+	/* GMAC1 is connected to the internal switch */
+	ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
+
+	ath79_register_eth(1);
+
+	/* WAN */
+	ath79_init_mac(ath79_eth0_data.mac_addr, mac, 2);
+
+	/* GMAC0 is connected to the PHY4 of the internal switch */
+	ath79_switch_data.phy4_mii_en = 1;
+	ath79_switch_data.phy_poll_mask = BIT(4);
+	ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+	ath79_eth0_data.phy_mask = BIT(4);
+	ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
+
+	ath79_register_eth(0);
+
+	ath79_gpio_output_select(MAC1200R_GPIO_LED_LAN1,
+				 AR934X_GPIO_OUT_LED_LINK3);
+	ath79_gpio_output_select(MAC1200R_GPIO_LED_LAN2,
+				 AR934X_GPIO_OUT_LED_LINK2);
+	ath79_gpio_output_select(MAC1200R_GPIO_LED_LAN3,
+				 AR934X_GPIO_OUT_LED_LINK1);
+	ath79_gpio_output_select(MAC1200R_GPIO_LED_LAN4,
+				 AR934X_GPIO_OUT_LED_LINK0);
+	ath79_gpio_output_select(MAC1200R_GPIO_LED_WAN,
+				 AR934X_GPIO_OUT_LED_LINK4);
+}
+
+MIPS_MACHINE(ATH79_MACH_MC_MAC1200R, "MC-MAC1200R",
+	     "MERCURY MAC1200R",
+	     mac1200r_setup);
diff --git a/target/linux/ar71xx/generic/profiles/mercury.mk b/target/linux/ar71xx/generic/profiles/mercury.mk
new file mode 100644
index 0000000..8ce864d
--- /dev/null
+++ b/target/linux/ar71xx/generic/profiles/mercury.mk
@@ -0,0 +1,17 @@ 
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+
+define Profile/MAC1200R
+	NAME:=MERCURY MAC1200R
+	PACKAGES:=kmod-ath10k
+endef
+
+define Profile/MAC1200R/Description
+	Package set optimized for the MERCURY MAC1200R.
+endef
+$(eval $(call Profile,MAC1200R))
diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile
index ef52f46..9621e0b 100644
--- a/target/linux/ar71xx/image/Makefile
+++ b/target/linux/ar71xx/image/Makefile
@@ -1380,6 +1380,7 @@  $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,ELM150,el-m150,EL-M150,ttyATH0,11
 $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,ELMINI,el-mini,EL-MINI,ttyATH0,115200,0x01530001,1,8Mlzma))
 $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,GLINET6408A,gl-inet-6408A-v1,GL-INET,ttyATH0,115200,0x08000001,1,8Mlzma))
 $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,GLINET6416A,gl-inet-6416A-v1,GL-INET,ttyATH0,115200,0x08000001,1,16Mlzma))
+$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,MAC1200R,mc-mac1200r,MC-MAC1200R,ttyS0,115200,0x12000001,1,8Mlzma))
 $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLMR10U,tl-mr10u-v1,TL-MR10U,ttyATH0,115200,0x00100101,1,4Mlzma))
 $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLMR11UV1,tl-mr11u-v1,TL-MR11U,ttyATH0,115200,0x00110101,1,4Mlzma))
 $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLMR11UV2,tl-mr11u-v2,TL-MR11U,ttyATH0,115200,0x00110102,1,4Mlzma))
diff --git a/target/linux/ar71xx/patches-3.14/736-MIPS-ath79-add-MC-MAC1200R-support.patch b/target/linux/ar71xx/patches-3.14/736-MIPS-ath79-add-MC-MAC1200R-support.patch
new file mode 100644
index 0000000..bb4d584
--- /dev/null
+++ b/target/linux/ar71xx/patches-3.14/736-MIPS-ath79-add-MC-MAC1200R-support.patch
@@ -0,0 +1,39 @@ 
+--- a/arch/mips/ath79/Kconfig
++++ b/arch/mips/ath79/Kconfig
+@@ -374,6 +374,16 @@
+	select ATH79_DEV_LEDS_GPIO
+	select ATH79_DEV_M25P80
+
++config ATH79_MACH_MC_MAC1200R
++	bool "MERCURY MAC1200R board support"
++	select SOC_AR934X
++	select ATH79_DEV_AP9X_PCI if PCI
++	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_RB4XX
+	bool "MikroTik RouterBOARD 4xx series support"
+	select SOC_AR71XX
+--- a/arch/mips/ath79/Makefile
++++ b/arch/mips/ath79/Makefile
+@@ -66,6 +66,7 @@
+ obj-$(CONFIG_ATH79_MACH_JA76PF)		+= mach-ja76pf.o
+ obj-$(CONFIG_ATH79_MACH_JWAP003)	+= mach-jwap003.o
+ obj-$(CONFIG_ATH79_MACH_HORNET_UB)	+= mach-hornet-ub.o
++obj-$(CONFIG_ATH79_MACH_MC_MAC1200R)     += mach-mc-mac1200r.o
+ obj-$(CONFIG_ATH79_MACH_MR600)		+= mach-mr600.o
+ obj-$(CONFIG_ATH79_MACH_MYNET_N600)	+= mach-mynet-n600.o
+ obj-$(CONFIG_ATH79_MACH_MYNET_REXT)	+= mach-mynet-rext.o
+--- a/arch/mips/ath79/machtypes.h
++++ b/arch/mips/ath79/machtypes.h
+@@ -89,6 +89,7 @@
+	ATH79_MACH_TEW_673GRU,		/* TRENDnet TEW-673GRU */
+	ATH79_MACH_TEW_712BR,		/* TRENDnet TEW-712BR */
+	ATH79_MACH_TEW_732BR,		/* TRENDnet TEW-732BR */
++	ATH79_MACH_MC_MAC1200R,		/* MERCURY MAC1200R*/
+	ATH79_MACH_TL_MR10U,		/* TP-LINK TL-MR10U */
+	ATH79_MACH_TL_MR11U,		/* TP-LINK TL-MR11U */
+	ATH79_MACH_TL_MR13U,		/* TP-LINK TL-MR13U */