ar71xx: add support for P&W R602N and CPE505N
authorPiotr Dymacz <pepe2k@gmail.com>
Wed, 15 Mar 2017 23:54:08 +0000 (00:54 +0100)
committerPiotr Dymacz <pepe2k@gmail.com>
Thu, 23 Mar 2017 16:59:47 +0000 (17:59 +0100)
P&W (full name: Shenzhen Progress&Win Technologies) R602N (could be also
labeled as R602F, R602, etc.) is a simple N300 router with 5-port
10/100 Mbps switch, non-detachable antennas and USB.

CPE505 is an outdoor CPE with PoE support and detachable antennas.

Both devices are based on Qualcomm/Atheros QCA9531 v2.

Common specification:

- 650/597/216 MHz (CPU/DDR/AHB)
- 64 MB of RAM (DDR2)
- 16 MB of FLASH
- UART (J2) header on PCB

R602N specification:

- 5x 10/100 Mbps Ethernet
- 1x USB 2.0
- 2T2R 2.4 GHz with external LNA and PA (SE2576L), up to 28 dBm
- 2x external, non-detachable antennas
- 7x LED, 1x button

CPE505N specification:

- 2x 10/100 Mbps Ethernet (both ports support passive PoE 12-24 V)
- 2T2R 2.4 GHz with external LNA and PA (SKY65174-21), up to 30 dBm
- 2x external, detachable antennas (RP-SMA connectors)
- 1x RGB LED, 2x LEDs (in RJ45 sockets), 1x button

Flash instructions:

It seems that there are many different versions of the firmware which
these devices are shipped with. The generic/standard one is based on
some modified OpenWrt and LEDE firmware can be flashed directly from
vendor's webgui or with sysupgrade (root password is "admin123").

Before flashing, make sure (use "fw_printenv") that the kernel load
address in your device is set to "0x9f050000" (bootcmd variable is
"bootm 0x9f050000"). If your device uses different load address, you
should first change it, under vendor's firmware, with command:

fw_setenv bootcmd "bootm 0x9f050000 || bootm OLD_ADDRESS"

Where OLD_ADDRESS is previous kernel load address (in CPE505 version
I got access to, it was "0x9fe80000"). This will allow you to use
both the vendor's and LEDE firmware.

If version of your device contains empty U-Boot environment (you will
get information about this after issuing "fw_printenv"), you should
use U-Boot, serial line access and TFTP to perform firmware upgrade:

1. tftp 0x80060000 lede-ar71xx-generic-...-squashfs-sysupgrade.bin
2. erase 0x9f050000 +$filesize
3. cp.b $fileaddr 0x9f050000 $filesize
4. setenv bootcmd "bootm 0x9f050000 || bootm OLD_ADDRESS"
5. saveenv && reset

These devices contain also web recovery mode inside U-Boot. It can be
started with pressing the reset button for around 3 seconds just after
the device powerup. Web recovery panel is available on "192.168.10.9"
and to be able to use it, IP on your PC must be set to "192.168.10.10".

Make sure to change kernel load address before using recovery mode or
the U-Boot will not be able to load LEDE firmware.

Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
13 files changed:
target/linux/ar71xx/base-files/etc/board.d/01_leds
target/linux/ar71xx/base-files/etc/board.d/02_network
target/linux/ar71xx/base-files/etc/diag.sh
target/linux/ar71xx/base-files/lib/ar71xx.sh
target/linux/ar71xx/base-files/lib/upgrade/platform.sh
target/linux/ar71xx/config-4.4
target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
target/linux/ar71xx/files/arch/mips/ath79/Makefile
target/linux/ar71xx/files/arch/mips/ath79/mach-r602n.c [new file with mode: 0644]
target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
target/linux/ar71xx/image/generic.mk
target/linux/ar71xx/mikrotik/config-default
target/linux/ar71xx/nand/config-default

index 082b6c478ee891270b115f01979f82f9a68189c5..1a4b02c535c90558921e19a275ce7122c18b0909 100755 (executable)
@@ -83,6 +83,7 @@ ap147-010)
        ucidef_set_led_wlan "wlan2g" "WLAN 2.4 GHz" "ap147:green:wlan-2g" "phy0tpt"
        ;;
 ap90q|\
+cpe505n|\
 cpe830|\
 cpe870|\
 dr531)
@@ -93,6 +94,9 @@ dr531)
        ap90q)
                ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
                ;;
+       cpe505n)
+               ucidef_set_led_wlan "wlan" "WLAN" "$board:blue:wlan" "phy0tpt"
+               ;;
        cpe830|\
        cpe870)
                ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
@@ -502,6 +506,15 @@ pqi-air-pen)
 qihoo-c301)
        ucidef_set_led_wlan "wlan2g" "WLAN2G" "qihoo:red:status" "phy1tpt"
        ;;
+r602n|\
+zbt-we1526)
+       ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth1"
+       ucidef_set_led_switch "lan1" "LAN1" "$board:green:lan1" "switch0" "0x10"
+       ucidef_set_led_switch "lan2" "LAN2" "$board:green:lan2" "switch0" "0x08"
+       ucidef_set_led_switch "lan3" "LAN3" "$board:green:lan3" "switch0" "0x04"
+       ucidef_set_led_switch "lan4" "LAN4" "$board:green:lan4" "switch0" "0x02"
+       ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
+       ;;
 re450)
        ucidef_set_led_netdev "lan_data" "LAN Data" "$board:green:lan_data" "eth0" "tx rx"
        ucidef_set_led_netdev "lan_link" "LAN Link" "$board:green:lan_link" "eth0" "link"
@@ -846,14 +859,6 @@ xd3200)
 z1)
        ucidef_set_led_netdev "wlan1" "WLAN1" "$board:blue:tricolor0" "wlan1"
        ;;
-zbt-we1526)
-       ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth1"
-       ucidef_set_led_switch "lan1" "LAN1" "$board:green:lan1" "switch0" "0x10"
-       ucidef_set_led_switch "lan2" "LAN2" "$board:green:lan2" "switch0" "0x08"
-       ucidef_set_led_switch "lan3" "LAN3" "$board:green:lan3" "switch0" "0x04"
-       ucidef_set_led_switch "lan4" "LAN4" "$board:green:lan4" "switch0" "0x02"
-       ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
-       ;;
 zcn-1523h-2)
        ucidef_set_led_netdev "lan1" "lan1" "zcn-1523h:green:lan1" "eth0"
        ;;
index 08ee584480fb856f57cac58da95bf82100188f41..e5892ac485b340f985ac21982f8f225c4e87cc35 100755 (executable)
@@ -31,6 +31,7 @@ ar71xx_setup_interfaces()
        mynet-n600|\
        oolite|\
        qihoo-c301|\
+       r602n|\
        rb-750|\
        rb-751|\
        som9331|\
index 00f6a7db0772df0c75ae869490ed2358af73cf5a..fed51a17d79910517d4267225b67f173b9d8bb41 100644 (file)
@@ -32,6 +32,7 @@ get_status_led() {
                ;;
        ap132|\
        ap531b0|\
+       cpe505n|\
        db120|\
        dr344|\
        tew-632brp|\
@@ -280,6 +281,9 @@ get_status_led() {
        pb44)
                status_led="$board:amber:jump1"
                ;;
+       r602n)
+               status_led="$board:green:wan"
+               ;;
        rb-2011l|\
        rb-2011uas|\
        rb-2011uas-2hnd)
index 267cb6ad5828275725fe26417797566e6762cb29..eedcb7829c7c361f5186b7b045821081d0c0024a 100755 (executable)
@@ -508,6 +508,9 @@ ar71xx_board_detect() {
                name="cpe210"
                tplink_pharos_board_detect
                ;;
+       *"CPE505N")
+               name="cpe505n"
+               ;;
        *"CPE510/520")
                name="cpe510"
                tplink_pharos_board_detect
@@ -802,6 +805,9 @@ ar71xx_board_detect() {
        *"Qihoo 360 C301")
                name="qihoo-c301"
                ;;
+       *"R602N")
+               name="r602n"
+               ;;
        *"R6100")
                name="r6100"
                ;;
index 38a78830a07f074ba1c4094084c40cdec8587c8f..2f0228b823b776ed94f5095b84514b112f65aba5 100755 (executable)
@@ -217,6 +217,7 @@ platform_check_image() {
        cf-e380ac-v2|\
        cf-e520n|\
        cf-e530n|\
+       cpe505n|\
        cpe830|\
        cpe870|\
        dgl-5500-a1|\
@@ -256,6 +257,7 @@ platform_check_image() {
        nanostation-m|\
        nbg460n_550n_550nh|\
        pqi-air-pen|\
+       r602n|\
        rocket-m-ti|\
        rocket-m-xw|\
        rocket-m|\
index 09ffd8b6bf90e06eb1d39fd555472917c38a7eaa..386ce6824e398945c06046059de692135ba8b044 100644 (file)
@@ -70,6 +70,7 @@ CONFIG_ATH79_MACH_CF_E380AC_V1=y
 CONFIG_ATH79_MACH_CF_E380AC_V2=y
 CONFIG_ATH79_MACH_CF_E520N=y
 CONFIG_ATH79_MACH_CF_E530N=y
+CONFIG_ATH79_MACH_CPE505N=y
 CONFIG_ATH79_MACH_CPE510=y
 CONFIG_ATH79_MACH_CPE830=y
 CONFIG_ATH79_MACH_CPE870=y
@@ -143,6 +144,7 @@ CONFIG_ATH79_MACH_PB42=y
 CONFIG_ATH79_MACH_PB44=y
 CONFIG_ATH79_MACH_PQI_AIR_PEN=y
 CONFIG_ATH79_MACH_QIHOO_C301=y
+CONFIG_ATH79_MACH_R602N=y
 CONFIG_ATH79_MACH_R6100=y
 # CONFIG_ATH79_MACH_RB2011 is not set
 # CONFIG_ATH79_MACH_RB4XX is not set
index d72c462f6e21cb46e8ef59705ecdcd3a22d53f9f..669e02684f4bebbb7d86f14401f8554cf4dbd473 100644 (file)
@@ -851,6 +851,16 @@ config ATH79_MACH_WRTNODE2Q
        select ATH79_DEV_M25P80
        select ATH79_DEV_WMAC
 
+config ATH79_MACH_R602N
+       bool "P&W R602N support"
+       select SOC_QCA953X
+       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_R6100
        bool "NETGEAR R6100 board support"
        select SOC_AR934X
@@ -1308,6 +1318,15 @@ config ATH79_MACH_ARCHER_C7
        select ATH79_DEV_USB
        select ATH79_DEV_WMAC
 
+config ATH79_MACH_CPE505N
+       bool "P&W CPE505N support"
+       select SOC_QCA953X
+       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_CPE510
        bool "TP-LINK CPE510 support"
        select SOC_AR934X
index 7e1a71b34dd0e1c3d39e10988aa86cb93dfd58e2..1180d4d73b5fb08de33fb64d632ff4032310ed93 100644 (file)
@@ -75,6 +75,7 @@ obj-$(CONFIG_ATH79_MACH_CF_E380AC_V1)         += mach-cf-e316n-v2.o
 obj-$(CONFIG_ATH79_MACH_CF_E380AC_V2)          += mach-cf-e316n-v2.o
 obj-$(CONFIG_ATH79_MACH_CF_E520N)              += mach-cf-e316n-v2.o
 obj-$(CONFIG_ATH79_MACH_CF_E530N)              += mach-cf-e316n-v2.o
+obj-$(CONFIG_ATH79_MACH_CPE505N)               += mach-r602n.o
 obj-$(CONFIG_ATH79_MACH_CPE510)                        += mach-cpe510.o
 obj-$(CONFIG_ATH79_MACH_CPE830)                        += mach-ap90q.o
 obj-$(CONFIG_ATH79_MACH_CPE870)                        += mach-cpe870.o
@@ -147,6 +148,7 @@ obj-$(CONFIG_ATH79_MACH_PB42)                       += mach-pb42.o
 obj-$(CONFIG_ATH79_MACH_PB44)                  += mach-pb44.o
 obj-$(CONFIG_ATH79_MACH_PQI_AIR_PEN)           += mach-pqi-air-pen.o
 obj-$(CONFIG_ATH79_MACH_QIHOO_C301)            += mach-qihoo-c301.o
+obj-$(CONFIG_ATH79_MACH_R602N)                 += mach-r602n.o
 obj-$(CONFIG_ATH79_MACH_R6100)                 += mach-r6100.o
 obj-$(CONFIG_ATH79_MACH_RB2011)                        += mach-rb2011.o
 obj-$(CONFIG_ATH79_MACH_RB4XX)                 += mach-rb4xx.o
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-r602n.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-r602n.c
new file mode 100644 (file)
index 0000000..4aef0a9
--- /dev/null
@@ -0,0 +1,213 @@
+/*
+ * P&W (Shenzhen Progress&Win Technologies) R602N and CPE505N boards support
+ *
+ * Copyright (C) 2017 Piotr Dymacz <pepe2k@gmail.com>
+ *
+ * Based on mach-zbt-we1526.c
+ *
+ * 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 <linux/platform_device.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-usb.h"
+#include "dev-wmac.h"
+#include "machtypes.h"
+
+#define PW_GPIO_BTN_RESET      17
+
+#define PW_KEYS_POLL_INTERVAL          20 /* msecs */
+#define PW_KEYS_DEBOUNCE_INTERVAL      (3 * PW_KEYS_POLL_INTERVAL)
+
+#define PW_MAC0_OFFSET         0x0
+#define PW_MAC1_OFFSET         0x6
+#define PW_WMAC_CALDATA_OFFSET 0x1000
+
+/* CPE505N GPIO LEDs */
+#define CPE505N_GPIO_LED_DIAG  12
+#define CPE505N_GPIO_LED_LAN   11
+#define CPE505N_GPIO_LED_STATUS        14
+#define CPE505N_GPIO_LED_WAN   4
+#define CPE505N_GPIO_LED_WLAN  15
+
+static struct gpio_led cpe505n_leds_gpio[] __initdata = {
+       {
+               .name           = "cpe505n:red:diag",
+               .gpio           = CPE505N_GPIO_LED_DIAG,
+               .active_low     = 1,
+       }, {
+               .name           = "cpe505n:green:lan",
+               .gpio           = CPE505N_GPIO_LED_LAN,
+               .active_low     = 1,
+       }, {
+               .name           = "cpe505n:green:status",
+               .gpio           = CPE505N_GPIO_LED_STATUS,
+               .active_low     = 1,
+       }, {
+               .name           = "cpe505n:green:wan",
+               .gpio           = CPE505N_GPIO_LED_WAN,
+               .active_low     = 1,
+       }, {
+               .name           = "cpe505n:blue:wlan",
+               .gpio           = CPE505N_GPIO_LED_WLAN,
+               .active_low     = 1,
+       },
+};
+
+static void __init cpe505n_gpio_setup(void)
+{
+       /* For LED on GPIO4 */
+       ath79_gpio_function_disable(AR934X_GPIO_FUNC_CLK_OBS4_EN);
+       ath79_gpio_output_select(CPE505N_GPIO_LED_WAN, 0);
+
+       ath79_gpio_direction_select(CPE505N_GPIO_LED_DIAG, true);
+       ath79_gpio_direction_select(CPE505N_GPIO_LED_LAN, true);
+       ath79_gpio_direction_select(CPE505N_GPIO_LED_STATUS, true);
+       ath79_gpio_direction_select(CPE505N_GPIO_LED_WAN, true);
+       ath79_gpio_direction_select(CPE505N_GPIO_LED_WLAN, true);
+
+       /* Mute LEDs */
+       gpio_set_value(CPE505N_GPIO_LED_DIAG, 1);
+       gpio_set_value(CPE505N_GPIO_LED_LAN, 1);
+       gpio_set_value(CPE505N_GPIO_LED_STATUS, 1);
+       gpio_set_value(CPE505N_GPIO_LED_WAN, 1);
+       gpio_set_value(CPE505N_GPIO_LED_WLAN, 1);
+
+       ath79_register_leds_gpio(-1, ARRAY_SIZE(cpe505n_leds_gpio),
+                                cpe505n_leds_gpio);
+}
+
+/* R602N GPIO LEDs */
+#define R602N_GPIO_LED_LAN1    16
+#define R602N_GPIO_LED_LAN2    15
+#define R602N_GPIO_LED_LAN3    14
+#define R602N_GPIO_LED_LAN4    11
+#define R602N_GPIO_LED_WAN     4
+#define R602N_GPIO_LED_WLAN    12
+
+static struct gpio_led r602n_leds_gpio[] __initdata = {
+       {
+               .name           = "r602n:green:lan1",
+               .gpio           = R602N_GPIO_LED_LAN1,
+               .active_low     = 1,
+       }, {
+               .name           = "r602n:green:lan2",
+               .gpio           = R602N_GPIO_LED_LAN2,
+               .active_low     = 1,
+       }, {
+               .name           = "r602n:green:lan3",
+               .gpio           = R602N_GPIO_LED_LAN3,
+               .active_low     = 1,
+       }, {
+               .name           = "r602n:green:lan4",
+               .gpio           = R602N_GPIO_LED_LAN4,
+               .active_low     = 1,
+       }, {
+               .name           = "r602n:green:wan",
+               .gpio           = R602N_GPIO_LED_WAN,
+               .active_low     = 1,
+       }, {
+               .name           = "r602n:green:wlan",
+               .gpio           = R602N_GPIO_LED_WLAN,
+               .active_low     = 1,
+       },
+};
+
+static void __init r602n_gpio_setup(void)
+{
+       /* For LED on GPIO4 */
+       ath79_gpio_function_disable(AR934X_GPIO_FUNC_CLK_OBS4_EN);
+       ath79_gpio_output_select(R602N_GPIO_LED_WAN, 0);
+
+       ath79_gpio_direction_select(R602N_GPIO_LED_LAN1, true);
+       ath79_gpio_direction_select(R602N_GPIO_LED_LAN2, true);
+       ath79_gpio_direction_select(R602N_GPIO_LED_LAN3, true);
+       ath79_gpio_direction_select(R602N_GPIO_LED_LAN4, true);
+       ath79_gpio_direction_select(R602N_GPIO_LED_WAN, true);
+       ath79_gpio_direction_select(R602N_GPIO_LED_WLAN, true);
+
+       /* Mute LEDs */
+       gpio_set_value(R602N_GPIO_LED_LAN1, 1);
+       gpio_set_value(R602N_GPIO_LED_LAN2, 1);
+       gpio_set_value(R602N_GPIO_LED_LAN3, 1);
+       gpio_set_value(R602N_GPIO_LED_LAN4, 1);
+       gpio_set_value(R602N_GPIO_LED_WAN, 1);
+       gpio_set_value(R602N_GPIO_LED_WLAN, 1);
+
+       ath79_register_leds_gpio(-1, ARRAY_SIZE(r602n_leds_gpio),
+                                r602n_leds_gpio);
+}
+
+static struct gpio_keys_button pw_gpio_keys[] __initdata = {
+       {
+               .desc           = "reset",
+               .type           = EV_KEY,
+               .code           = KEY_RESTART,
+               .debounce_interval = PW_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = PW_GPIO_BTN_RESET,
+               .active_low     = 1,
+       },
+};
+
+static void __init r602n_cpe505n_setup(void)
+{
+       u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
+
+       ath79_register_m25p80(NULL);
+
+       ath79_setup_ar933x_phy4_switch(false, false);
+
+       ath79_register_mdio(0, 0x0);
+
+       /* LAN */
+       ath79_eth1_data.duplex = DUPLEX_FULL;
+       ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
+       ath79_switch_data.phy_poll_mask |= BIT(4);
+       ath79_init_mac(ath79_eth1_data.mac_addr, art + PW_MAC1_OFFSET, 0);
+       ath79_register_eth(1);
+
+       /* WAN */
+       ath79_switch_data.phy4_mii_en = 1;
+       ath79_eth0_data.duplex = DUPLEX_FULL;
+       ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+       ath79_eth0_data.phy_mask = BIT(4);
+       ath79_eth0_data.speed = SPEED_100;
+       ath79_init_mac(ath79_eth0_data.mac_addr, art + PW_MAC0_OFFSET, 0);
+       ath79_register_eth(0);
+
+       ath79_register_wmac(art + PW_WMAC_CALDATA_OFFSET, NULL);
+
+       ath79_register_gpio_keys_polled(-1, PW_KEYS_POLL_INTERVAL,
+                                       ARRAY_SIZE(pw_gpio_keys),
+                                       pw_gpio_keys);
+}
+
+static void __init cpe505n_setup(void)
+{
+       r602n_cpe505n_setup();
+
+       cpe505n_gpio_setup();
+}
+
+static void __init r602n_setup(void)
+{
+       r602n_cpe505n_setup();
+
+       r602n_gpio_setup();
+
+       ath79_register_usb();
+}
+
+MIPS_MACHINE(ATH79_MACH_CPE505N, "CPE505N", "P&W CPE505N", cpe505n_setup);
+MIPS_MACHINE(ATH79_MACH_R602N, "R602N", "P&W R602N", r602n_setup);
index 27ebd47f2987e428636a553d32235a482906241c..b9cc243f39dd454de622be6a69a9adcd48b683cf 100644 (file)
@@ -62,6 +62,7 @@ enum ath79_mach_type {
        ATH79_MACH_CF_E520N,                    /* COMFAST CF-E520N */
        ATH79_MACH_CF_E530N,                    /* COMFAST CF-E530N */
        ATH79_MACH_CPE210,                      /* TP-LINK CPE210 */
+       ATH79_MACH_CPE505N,                     /* P&W CPE505N */
        ATH79_MACH_CPE510,                      /* TP-LINK CPE510 */
        ATH79_MACH_CPE830,                      /* YunCore CPE830 */
        ATH79_MACH_CPE870,                      /* YunCore CPE870 */
@@ -152,6 +153,7 @@ enum ath79_mach_type {
        ATH79_MACH_PB44,                        /* Atheros PB44 reference board */
        ATH79_MACH_PQI_AIR_PEN,                 /* PQI Air Pen */
        ATH79_MACH_QIHOO_C301,                  /* Qihoo 360 C301 */
+       ATH79_MACH_R602N,                       /* P&W R602N */
        ATH79_MACH_R6100,                       /* NETGEAR R6100 */
        ATH79_MACH_RB_2011G,                    /* Mikrotik RouterBOARD 2011UAS-2HnD */
        ATH79_MACH_RB_2011L,                    /* Mikrotik RouterBOARD 2011L */
index 34bb7da84d66bff1ab7bd1dcf770820d5d96aca6..37ffbe7ffa18acf5dd109e075d2ea56b9bfea8a9 100644 (file)
@@ -85,6 +85,14 @@ define Device/cf-e530n
 endef
 TARGET_DEVICES += cf-e530n
 
+define Device/cpe505n
+  DEVICE_TITLE := P&W CPE505N
+  BOARDNAME = CPE505N
+  IMAGE_SIZE = 16000k
+  MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
+endef
+TARGET_DEVICES += cpe505n
+
 define Device/cpe830
   $(Device/ap90q)
   DEVICE_TITLE := YunCore CPE830
@@ -426,6 +434,15 @@ define Device/jwap230
 endef
 TARGET_DEVICES += jwap230
 
+define Device/r602n
+  DEVICE_TITLE := P&W R602N
+  DEVICE_PACKAGES := kmod-usb-core kmod-usb2
+  BOARDNAME = R602N
+  IMAGE_SIZE = 16000k
+  MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
+endef
+TARGET_DEVICES += r602n
+
 define Device/rnx-n360rt
   $(Device/tplink-4m)
   DEVICE_TITLE := Rosewill RNX-N360RT
index 78a3fb340e64d1e50197e37925ef4e422e207676..1cc485a7d1547bdc8ae04d6ab46d21d4ff3ca929 100644 (file)
@@ -35,6 +35,7 @@
 # CONFIG_ATH79_MACH_CF_E380AC_V2 is not set
 # CONFIG_ATH79_MACH_CF_E520N is not set
 # CONFIG_ATH79_MACH_CF_E530N is not set
+# CONFIG_ATH79_MACH_CPE505N is not set
 # CONFIG_ATH79_MACH_CPE510 is not set
 # CONFIG_ATH79_MACH_CPE830 is not set
 # CONFIG_ATH79_MACH_CPE870 is not set
 # CONFIG_ATH79_MACH_PB44 is not set
 # CONFIG_ATH79_MACH_PQI_AIR_PEN is not set
 # CONFIG_ATH79_MACH_QIHOO_C301 is not set
+# CONFIG_ATH79_MACH_R602N is not set
 # CONFIG_ATH79_MACH_R6100 is not set
 CONFIG_ATH79_MACH_RB2011=y
 CONFIG_ATH79_MACH_RB4XX=y
index 8a9b61c057a89293979ab432735595db13963cc0..16e652ed4eeb3d4bded59d96ea3b50afb94677b8 100644 (file)
@@ -34,6 +34,7 @@
 # CONFIG_ATH79_MACH_CF_E380AC_V2 is not set
 # CONFIG_ATH79_MACH_CF_E520N is not set
 # CONFIG_ATH79_MACH_CF_E530N is not set
+# CONFIG_ATH79_MACH_CPE505N is not set
 # CONFIG_ATH79_MACH_CPE510 is not set
 # CONFIG_ATH79_MACH_CPE830 is not set
 # CONFIG_ATH79_MACH_CPE870 is not set
 # CONFIG_ATH79_MACH_PB44 is not set
 # CONFIG_ATH79_MACH_PQI_AIR_PEN is not set
 # CONFIG_ATH79_MACH_QIHOO_C301 is not set
+# CONFIG_ATH79_MACH_R602N is not set
 # CONFIG_ATH79_MACH_RE450 is not set
 # CONFIG_ATH79_MACH_RW2458N is not set
 # CONFIG_ATH79_MACH_SC1750 is not set