ar71xx: add support for Compex WPE72/WPE72NX
authorGabor Juhos <juhosg@openwrt.org>
Thu, 26 Jan 2012 17:01:41 +0000 (17:01 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Thu, 26 Jan 2012 17:01:41 +0000 (17:01 +0000)
This patch adds support for Compex WPE72 bare board and Compex WPE72NX
Indoor Access Point.

[juhosg: add support to 3.2 as well]

Signed-off-by: Johnathan Boyce <jon.boyce@globalreach.eu.com>
SVN-Revision: 29912

target/linux/ar71xx/base-files/etc/uci-defaults/network
target/linux/ar71xx/base-files/lib/ar71xx.sh
target/linux/ar71xx/config-2.6.39
target/linux/ar71xx/config-3.2
target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Kconfig
target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Makefile
target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/mach-wpe72.c [new file with mode: 0644]
target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/machtype.h
target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/prom.c
target/linux/ar71xx/files-3.2/arch/mips/ath79/mach-wpe72.c [new file with mode: 0644]
target/linux/ar71xx/patches-3.2/610-MIPS-ath79-openwrt-machines.patch

index 45a9423c62bbebd3226651285dcdaf354b30e252..e6461819e2e36a13697149974147f2922b88ace8 100755 (executable)
@@ -124,7 +124,8 @@ ap83 |\
 jwap003 |\
 pb42 |\
 pb44 |\
 jwap003 |\
 pb42 |\
 pb44 |\
-routerstation)
+routerstation|\
+wpe72)
        ucidef_set_interfaces_lan_wan "eth1" "eth0"
        ;;
 
        ucidef_set_interfaces_lan_wan "eth1" "eth0"
        ;;
 
index db859b24ab881e2bddbb799032f2454f5ae65cdc..c2fa462a1a7bb82ae42827e3d8011fe2ed9f1685 100755 (executable)
@@ -301,6 +301,9 @@ ar71xx_board_detect() {
        *WP543)
                name="wp543"
                ;;
        *WP543)
                name="wp543"
                ;;
+       *WPE72)
+               name="wpe72"
+               ;;
        *"WNDR3700/WNDR3800/WNDRMAC")
                wndr3700_board_detect "$machine"
                ;;
        *"WNDR3700/WNDR3800/WNDRMAC")
                wndr3700_board_detect "$machine"
                ;;
index bdf2fcf64f762693924ed9d0bff16749fccc6e1e..60020d27cf242302cec9080e7db39d0bbae817a4 100644 (file)
@@ -56,6 +56,7 @@ CONFIG_AR71XX_MACH_WHR_HP_G300N=y
 CONFIG_AR71XX_MACH_WNDR3700=y
 CONFIG_AR71XX_MACH_WNR2000=y
 CONFIG_AR71XX_MACH_WP543=y
 CONFIG_AR71XX_MACH_WNDR3700=y
 CONFIG_AR71XX_MACH_WNR2000=y
 CONFIG_AR71XX_MACH_WP543=y
+CONFIG_AR71XX_MACH_WPE72=y
 CONFIG_AR71XX_MACH_WRT160NL=y
 CONFIG_AR71XX_MACH_WRT400N=y
 CONFIG_AR71XX_MACH_WZR_HP_AG300H=y
 CONFIG_AR71XX_MACH_WRT160NL=y
 CONFIG_AR71XX_MACH_WRT400N=y
 CONFIG_AR71XX_MACH_WZR_HP_AG300H=y
index 8f220c52204896bac8b465864dfecb9f2fac5787..a735c6f38d9a5a99d918246f1eac605373bb197c 100644 (file)
@@ -66,6 +66,7 @@ CONFIG_ATH79_MACH_WHR_HP_G300N=y
 CONFIG_ATH79_MACH_WNDR3700=y
 CONFIG_ATH79_MACH_WNR2000=y
 CONFIG_ATH79_MACH_WP543=y
 CONFIG_ATH79_MACH_WNDR3700=y
 CONFIG_ATH79_MACH_WNR2000=y
 CONFIG_ATH79_MACH_WP543=y
+CONFIG_ATH79_MACH_WPE72=y
 CONFIG_ATH79_MACH_WRT160NL=y
 CONFIG_ATH79_MACH_WRT400N=y
 CONFIG_ATH79_MACH_WZR_HP_AG300H=y
 CONFIG_ATH79_MACH_WRT160NL=y
 CONFIG_ATH79_MACH_WRT400N=y
 CONFIG_ATH79_MACH_WZR_HP_AG300H=y
index c22cd4abea794d2112e3253dbaac6349436d3b15..5abe999b2d9e2142b24a67a775d6c1a7ceb9c107 100644 (file)
@@ -214,6 +214,16 @@ config AR71XX_MACH_WP543
        select AR71XX_DEV_LEDS_GPIO
        select AR71XX_DEV_USB
 
        select AR71XX_DEV_LEDS_GPIO
        select AR71XX_DEV_USB
 
+config AR71XX_MACH_WPE72
+       bool "Compex WPE72 board support"
+       select SOC_AR724X
+       select MYLOADER
+       select AR71XX_DEV_M25P80
+       select AR71XX_DEV_GPIO_BUTTONS
+       select AR71XX_DEV_PB42_PCI if PCI
+       select AR71XX_DEV_LEDS_GPIO
+       select AR71XX_DEV_USB
+
 config AR71XX_MACH_WRT160NL
        bool "Linksys WRT160NL board support"
        select SOC_AR913X
 config AR71XX_MACH_WRT160NL
        bool "Linksys WRT160NL board support"
        select SOC_AR913X
index ba12234eaa25cdc00c9235bb1563dbcdc0927075..efd8bd2772b5576de874c20ea04cfdff87c809c7 100644 (file)
@@ -71,6 +71,7 @@ obj-$(CONFIG_AR71XX_MACH_WHR_HP_G300N)        += mach-whr-hp-g300n.o
 obj-$(CONFIG_AR71XX_MACH_WNDR3700)     += mach-wndr3700.o
 obj-$(CONFIG_AR71XX_MACH_WNR2000)      += mach-wnr2000.o
 obj-$(CONFIG_AR71XX_MACH_WP543)                += mach-wp543.o
 obj-$(CONFIG_AR71XX_MACH_WNDR3700)     += mach-wndr3700.o
 obj-$(CONFIG_AR71XX_MACH_WNR2000)      += mach-wnr2000.o
 obj-$(CONFIG_AR71XX_MACH_WP543)                += mach-wp543.o
+obj-$(CONFIG_AR71XX_MACH_WPE72)                += mach-wpe72.o
 obj-$(CONFIG_AR71XX_MACH_WRT160NL)     += mach-wrt160nl.o
 obj-$(CONFIG_AR71XX_MACH_WRT400N)      += mach-wrt400n.o
 obj-$(CONFIG_AR71XX_MACH_WZR_HP_G300NH)        += mach-wzr-hp-g300nh.o
 obj-$(CONFIG_AR71XX_MACH_WRT160NL)     += mach-wrt160nl.o
 obj-$(CONFIG_AR71XX_MACH_WRT400N)      += mach-wrt400n.o
 obj-$(CONFIG_AR71XX_MACH_WZR_HP_G300NH)        += mach-wzr-hp-g300nh.o
diff --git a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/mach-wpe72.c b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/mach-wpe72.c
new file mode 100644 (file)
index 0000000..7bdd3e4
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+ *  Compex WPE72 board support
+ *
+ *  Copyright (C) 2012 Johnathan Boyce<jon.boyce@globalreach.eu.com>
+ *
+ *  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<asm/mach-ar71xx/ar71xx.h>
+
+#include "machtype.h"
+#include "devices.h"
+#include "dev-m25p80.h"
+#include "dev-pb42-pci.h"
+#include "dev-gpio-buttons.h"
+#include "dev-leds-gpio.h"
+#include "dev-usb.h"
+
+#define WPE72_GPIO_RESET       12
+#define WPE72_GPIO_LED_DIAG    13
+#define WPE72_GPIO_LED_1       14
+#define WPE72_GPIO_LED_2       15
+#define WPE72_GPIO_LED_3       16
+#define WPE72_GPIO_LED_4       17
+
+#define WPE72_KEYS_POLL_INTERVAL       20      /* msecs */
+#define WPE72_KEYS_DEBOUNCE_INTERVAL   (3 * WPE72_KEYS_POLL_INTERVAL)
+
+static struct gpio_led wpe72_leds_gpio[] __initdata = {
+       {
+               .name           = "wpe72:green:led1",
+               .gpio           = WPE72_GPIO_LED_1,
+               .active_low     = 1,
+       }, {
+               .name           = "wpe72:green:led2",
+               .gpio           = WPE72_GPIO_LED_2,
+               .active_low     = 1,
+       }, {
+               .name           = "wpe72:green:led3",
+               .gpio           = WPE72_GPIO_LED_3,
+               .active_low     = 1,
+       }, {
+               .name           = "wpe72:green:led4",
+               .gpio           = WPE72_GPIO_LED_4,
+               .active_low     = 1,
+       }, {
+               .name           = "wpe72:green:diag",
+               .gpio           = WPE72_GPIO_LED_DIAG,
+               .active_low     = 1,
+       }
+};
+
+static struct gpio_keys_button wpe72_gpio_keys[] __initdata = {
+       {
+               .desc           = "reset",
+               .type           = EV_KEY,
+               .code           = KEY_RESTART,
+               .debounce_interval = WPE72_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = WPE72_GPIO_RESET,
+       }
+};
+
+static const char *wpe72_part_probes[] = {
+       "MyLoader",
+       NULL,
+};
+
+static struct flash_platform_data wpe72_flash_data = {
+       .part_probes    = wpe72_part_probes,
+};
+
+static void __init wpe72_setup(void)
+{
+       ar71xx_add_device_m25p80(&wpe72_flash_data);
+       ar71xx_add_device_mdio(0, 0x0);
+
+       ar71xx_init_mac(ar71xx_eth0_data.mac_addr, ar71xx_mac_base, 0);
+       ar71xx_init_mac(ar71xx_eth1_data.mac_addr, ar71xx_mac_base, 1);
+
+       ar71xx_add_device_eth(0);
+       ar71xx_add_device_eth(1);
+
+       ar71xx_add_device_usb();
+
+       pb42_pci_init();
+
+       ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(wpe72_leds_gpio),
+                                       wpe72_leds_gpio);
+
+       ar71xx_register_gpio_keys_polled(-1, WPE72_KEYS_POLL_INTERVAL,
+                                       ARRAY_SIZE(wpe72_gpio_keys),
+                                       wpe72_gpio_keys);
+}
+
+MIPS_MACHINE(AR71XX_MACH_WPE72, "WPE72", "Compex WPE72", wpe72_setup);
index a66046a9097409731d060b36f5eb31c96a4d30f2..83038c64ce784fc08ec82e4028b7e561e06cf84a 100644 (file)
@@ -79,6 +79,7 @@ enum ar71xx_mach_type {
        AR71XX_MACH_WNDR3700,   /* NETGEAR WNDR3700/WNDR3800/WNDRMAC */
        AR71XX_MACH_WNR2000,    /* NETGEAR WNR2000 */
        AR71XX_MACH_WP543,      /* Compex WP543 */
        AR71XX_MACH_WNDR3700,   /* NETGEAR WNDR3700/WNDR3800/WNDRMAC */
        AR71XX_MACH_WNR2000,    /* NETGEAR WNR2000 */
        AR71XX_MACH_WP543,      /* Compex WP543 */
+       AR71XX_MACH_WPE72,      /* Compex WPE72 */
        AR71XX_MACH_WRT160NL,   /* Linksys WRT160NL */
        AR71XX_MACH_WRT400N,    /* Linksys WRT400N */
        AR71XX_MACH_WZR_HP_AG300H, /* Buffalo WZR-HP-AG300H */
        AR71XX_MACH_WRT160NL,   /* Linksys WRT160NL */
        AR71XX_MACH_WRT400N,    /* Linksys WRT400N */
        AR71XX_MACH_WZR_HP_AG300H, /* Buffalo WZR-HP-AG300H */
index b9b1e64fdf63ca56888d3eda669b69267aa77e58..5df8121189c740b2715b70f3ba74cd3454269375 100644 (file)
@@ -112,6 +112,9 @@ static int __init ar71xx_prom_init_myloader(void)
        case DEVID_COMPEX_WP543:
                ar71xx_prom_append_cmdline("board", "WP543");
                break;
        case DEVID_COMPEX_WP543:
                ar71xx_prom_append_cmdline("board", "WP543");
                break;
+       case DEVID_COMPEX_WPE72:
+               ar71xx_prom_append_cmdline("board", "WPE72");
+               break;
        default:
                printk(KERN_WARNING "prom: unknown device id: %x\n",
                                mylo->did);
        default:
                printk(KERN_WARNING "prom: unknown device id: %x\n",
                                mylo->did);
diff --git a/target/linux/ar71xx/files-3.2/arch/mips/ath79/mach-wpe72.c b/target/linux/ar71xx/files-3.2/arch/mips/ath79/mach-wpe72.c
new file mode 100644 (file)
index 0000000..114d623
--- /dev/null
@@ -0,0 +1,96 @@
+/*
+ *  Compex WPE72 board support
+ *
+ *  Copyright (C) 2012 Johnathan Boyce<jon.boyce@globalreach.eu.com>
+ *
+ *  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<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 "machtypes.h"
+#include "pci.h"
+
+#define WPE72_GPIO_RESET       12
+#define WPE72_GPIO_LED_DIAG    13
+#define WPE72_GPIO_LED_1       14
+#define WPE72_GPIO_LED_2       15
+#define WPE72_GPIO_LED_3       16
+#define WPE72_GPIO_LED_4       17
+
+#define WPE72_KEYS_POLL_INTERVAL       20      /* msecs */
+#define WPE72_KEYS_DEBOUNCE_INTERVAL   (3 * WPE72_KEYS_POLL_INTERVAL)
+
+static struct gpio_led wpe72_leds_gpio[] __initdata = {
+       {
+               .name           = "wpe72:green:led1",
+               .gpio           = WPE72_GPIO_LED_1,
+               .active_low     = 1,
+       }, {
+               .name           = "wpe72:green:led2",
+               .gpio           = WPE72_GPIO_LED_2,
+               .active_low     = 1,
+       }, {
+               .name           = "wpe72:green:led3",
+               .gpio           = WPE72_GPIO_LED_3,
+               .active_low     = 1,
+       }, {
+               .name           = "wpe72:green:led4",
+               .gpio           = WPE72_GPIO_LED_4,
+               .active_low     = 1,
+       }, {
+               .name           = "wpe72:green:diag",
+               .gpio           = WPE72_GPIO_LED_DIAG,
+               .active_low     = 1,
+       }
+};
+
+static struct gpio_keys_button wpe72_gpio_keys[] __initdata = {
+       {
+               .desc           = "reset",
+               .type           = EV_KEY,
+               .code           = KEY_RESTART,
+               .debounce_interval = WPE72_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = WPE72_GPIO_RESET,
+       }
+};
+
+static const char *wpe72_part_probes[] = {
+       "MyLoader",
+       NULL,
+};
+
+static struct flash_platform_data wpe72_flash_data = {
+       .part_probes    = wpe72_part_probes,
+};
+
+static void __init wpe72_setup(void)
+{
+       ath79_register_m25p80(&wpe72_flash_data);
+       ath79_register_mdio(0, 0x0);
+
+       ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
+       ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 1);
+
+       ath79_register_eth(0);
+       ath79_register_eth(1);
+
+       ath79_register_usb();
+       ath79_register_pci();
+
+       ath79_register_leds_gpio(-1, ARRAY_SIZE(wpe72_leds_gpio),
+                                wpe72_leds_gpio);
+
+       ath79_register_gpio_keys_polled(-1, WPE72_KEYS_POLL_INTERVAL,
+                                       ARRAY_SIZE(wpe72_gpio_keys),
+                                       wpe72_gpio_keys);
+}
+
+MIPS_MACHINE(ATH79_MACH_WPE72, "WPE72", "Compex WPE72", wpe72_setup);
index e65bd513585cad0fb6bac3a4c740d49dcaf9d2c9..91916e6387a9fc2c22068e9ef3fd1f09e060db97 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/ath79/machtypes.h
 +++ b/arch/mips/ath79/machtypes.h
 --- a/arch/mips/ath79/machtypes.h
 +++ b/arch/mips/ath79/machtypes.h
-@@ -16,17 +16,77 @@
+@@ -16,17 +16,78 @@
  
  enum ath79_mach_type {
        ATH79_MACH_GENERIC = 0,
  
  enum ath79_mach_type {
        ATH79_MACH_GENERIC = 0,
@@ -68,6 +68,7 @@
 +      ATH79_MACH_WNDR3700,            /* NETGEAR WNDR3700/WNDR3800/WNDRMAC */
 +      ATH79_MACH_WNR2000,             /* NETGEAR WNR2000 */
 +      ATH79_MACH_WP543,               /* Compex WP543 */
 +      ATH79_MACH_WNDR3700,            /* NETGEAR WNDR3700/WNDR3800/WNDRMAC */
 +      ATH79_MACH_WNR2000,             /* NETGEAR WNR2000 */
 +      ATH79_MACH_WP543,               /* Compex WP543 */
++      ATH79_MACH_WPE72,               /* Compex WPE72 */
 +      ATH79_MACH_WRT160NL,            /* Linksys WRT160NL */
 +      ATH79_MACH_WRT400N,             /* Linksys WRT400N */
 +      ATH79_MACH_WZR_HP_AG300H,       /* Buffalo WZR-HP-AG300H */
 +      ATH79_MACH_WRT160NL,            /* Linksys WRT160NL */
 +      ATH79_MACH_WRT400N,             /* Linksys WRT400N */
 +      ATH79_MACH_WZR_HP_AG300H,       /* Buffalo WZR-HP-AG300H */
  config ATH79_MACH_PB44
        bool "Atheros PB44 reference board"
        select SOC_AR71XX
  config ATH79_MACH_PB44
        bool "Atheros PB44 reference board"
        select SOC_AR71XX
-@@ -54,6 +127,349 @@ config ATH79_MACH_PB44
+@@ -54,6 +127,359 @@ config ATH79_MACH_PB44
          Say 'Y' here if you want your kernel to support the
          Atheros PB44 reference board.
  
          Say 'Y' here if you want your kernel to support the
          Atheros PB44 reference board.
  
 +      select ATH79_DEV_USB
 +      select MYLOADER
 +
 +      select ATH79_DEV_USB
 +      select MYLOADER
 +
++config ATH79_MACH_WPE72
++      bool "Compex WPE72/WPE72NX board support"
++      select SOC_AR724X
++      select ATH79_DEV_ETH
++      select ATH79_DEV_GPIO_BUTTONS
++      select ATH79_DEV_LEDS_GPIO
++      select ATH79_DEV_M25P80
++      select ATH79_DEV_USB
++      select MYLOADER
++
 +config ATH79_MACH_DIR_600_A1
 +      bool "D-Link DIR-600 rev. A1 support"
 +      select SOC_AR724X
 +config ATH79_MACH_DIR_600_A1
 +      bool "D-Link DIR-600 rev. A1 support"
 +      select SOC_AR724X
  endif
 --- a/arch/mips/ath79/Makefile
 +++ b/arch/mips/ath79/Makefile
  endif
 --- a/arch/mips/ath79/Makefile
 +++ b/arch/mips/ath79/Makefile
-@@ -36,8 +36,53 @@ obj-$(CONFIG_ATH79_PCI_ATH9K_FIXUP) += p
+@@ -36,8 +36,54 @@ obj-$(CONFIG_ATH79_PCI_ATH9K_FIXUP) += p
  #
  # Machines
  #
  #
  # Machines
  #
 +obj-$(CONFIG_ATH79_MACH_WNDR3700)     += mach-wndr3700.o
 +obj-$(CONFIG_ATH79_MACH_WNR2000)      += mach-wnr2000.o
 +obj-$(CONFIG_ATH79_MACH_WP543)                += mach-wp543.o
 +obj-$(CONFIG_ATH79_MACH_WNDR3700)     += mach-wndr3700.o
 +obj-$(CONFIG_ATH79_MACH_WNR2000)      += mach-wnr2000.o
 +obj-$(CONFIG_ATH79_MACH_WP543)                += mach-wp543.o
++obj-$(CONFIG_ATH79_MACH_WPE72)                += mach-wpe72.o
 +obj-$(CONFIG_ATH79_MACH_WRT160NL)     += mach-wrt160nl.o
 +obj-$(CONFIG_ATH79_MACH_WRT400N)      += mach-wrt400n.o
 +obj-$(CONFIG_ATH79_MACH_WZR_HP_G300NH)        += mach-wzr-hp-g300nh.o
 +obj-$(CONFIG_ATH79_MACH_WRT160NL)     += mach-wrt160nl.o
 +obj-$(CONFIG_ATH79_MACH_WRT400N)      += mach-wrt400n.o
 +obj-$(CONFIG_ATH79_MACH_WZR_HP_G300NH)        += mach-wzr-hp-g300nh.o