From e1e84badaaf3814b21ce24295c9ec3183eeb4220 Mon Sep 17 00:00:00 2001 From: Gabor Juhos Date: Thu, 26 Jan 2012 17:01:41 +0000 Subject: [PATCH] ar71xx: add support for Compex WPE72/WPE72NX 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 SVN-Revision: 29912 --- .../base-files/etc/uci-defaults/network | 3 +- target/linux/ar71xx/base-files/lib/ar71xx.sh | 3 + target/linux/ar71xx/config-2.6.39 | 1 + target/linux/ar71xx/config-3.2 | 1 + .../files-2.6.39/arch/mips/ar71xx/Kconfig | 10 ++ .../files-2.6.39/arch/mips/ar71xx/Makefile | 1 + .../arch/mips/ar71xx/mach-wpe72.c | 97 +++++++++++++++++++ .../files-2.6.39/arch/mips/ar71xx/machtype.h | 1 + .../files-2.6.39/arch/mips/ar71xx/prom.c | 3 + .../files-3.2/arch/mips/ath79/mach-wpe72.c | 96 ++++++++++++++++++ .../610-MIPS-ath79-openwrt-machines.patch | 18 +++- 11 files changed, 230 insertions(+), 4 deletions(-) create mode 100644 target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/mach-wpe72.c create mode 100644 target/linux/ar71xx/files-3.2/arch/mips/ath79/mach-wpe72.c diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/network b/target/linux/ar71xx/base-files/etc/uci-defaults/network index 45a9423c62..e6461819e2 100755 --- a/target/linux/ar71xx/base-files/etc/uci-defaults/network +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/network @@ -124,7 +124,8 @@ ap83 |\ jwap003 |\ pb42 |\ pb44 |\ -routerstation) +routerstation|\ +wpe72) ucidef_set_interfaces_lan_wan "eth1" "eth0" ;; diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index db859b24ab..c2fa462a1a 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -301,6 +301,9 @@ ar71xx_board_detect() { *WP543) name="wp543" ;; + *WPE72) + name="wpe72" + ;; *"WNDR3700/WNDR3800/WNDRMAC") wndr3700_board_detect "$machine" ;; diff --git a/target/linux/ar71xx/config-2.6.39 b/target/linux/ar71xx/config-2.6.39 index bdf2fcf64f..60020d27cf 100644 --- a/target/linux/ar71xx/config-2.6.39 +++ b/target/linux/ar71xx/config-2.6.39 @@ -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_WPE72=y CONFIG_AR71XX_MACH_WRT160NL=y CONFIG_AR71XX_MACH_WRT400N=y CONFIG_AR71XX_MACH_WZR_HP_AG300H=y diff --git a/target/linux/ar71xx/config-3.2 b/target/linux/ar71xx/config-3.2 index 8f220c5220..a735c6f38d 100644 --- a/target/linux/ar71xx/config-3.2 +++ b/target/linux/ar71xx/config-3.2 @@ -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_WPE72=y CONFIG_ATH79_MACH_WRT160NL=y CONFIG_ATH79_MACH_WRT400N=y CONFIG_ATH79_MACH_WZR_HP_AG300H=y diff --git a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Kconfig b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Kconfig index c22cd4abea..5abe999b2d 100644 --- a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Kconfig +++ b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Kconfig @@ -214,6 +214,16 @@ config AR71XX_MACH_WP543 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 diff --git a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Makefile b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Makefile index ba12234eaa..efd8bd2772 100644 --- a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Makefile +++ b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Makefile @@ -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_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 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 index 0000000000..7bdd3e4a06 --- /dev/null +++ b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/mach-wpe72.c @@ -0,0 +1,97 @@ +/* + * Compex WPE72 board support + * + * Copyright (C) 2012 Johnathan Boyce + * + * 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 + +#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); diff --git a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/machtype.h b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/machtype.h index a66046a909..83038c64ce 100644 --- a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/machtype.h +++ b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/machtype.h @@ -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_WPE72, /* Compex WPE72 */ AR71XX_MACH_WRT160NL, /* Linksys WRT160NL */ AR71XX_MACH_WRT400N, /* Linksys WRT400N */ AR71XX_MACH_WZR_HP_AG300H, /* Buffalo WZR-HP-AG300H */ diff --git a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/prom.c b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/prom.c index b9b1e64fdf..5df8121189 100644 --- a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/prom.c +++ b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/prom.c @@ -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_WPE72: + ar71xx_prom_append_cmdline("board", "WPE72"); + break; 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 index 0000000000..114d6233c3 --- /dev/null +++ b/target/linux/ar71xx/files-3.2/arch/mips/ath79/mach-wpe72.c @@ -0,0 +1,96 @@ +/* + * Compex WPE72 board support + * + * Copyright (C) 2012 Johnathan Boyce + * + * 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 + +#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); diff --git a/target/linux/ar71xx/patches-3.2/610-MIPS-ath79-openwrt-machines.patch b/target/linux/ar71xx/patches-3.2/610-MIPS-ath79-openwrt-machines.patch index e65bd51358..91916e6387 100644 --- a/target/linux/ar71xx/patches-3.2/610-MIPS-ath79-openwrt-machines.patch +++ b/target/linux/ar71xx/patches-3.2/610-MIPS-ath79-openwrt-machines.patch @@ -1,6 +1,6 @@ --- 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, @@ -68,6 +68,7 @@ + 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 */ @@ -174,7 +175,7 @@ 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. @@ -253,6 +254,16 @@ + 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 @@ -586,7 +597,7 @@ 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 # @@ -634,6 +645,7 @@ +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