From e1e84badaaf3814b21ce24295c9ec3183eeb4220 Mon Sep 17 00:00:00 2001 From: Gabor Juhos Date: Thu, 26 Jan 2012 17:01:41 +0000 Subject: 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 --- .../ar71xx/files-2.6.39/arch/mips/ar71xx/Kconfig | 10 +++ .../ar71xx/files-2.6.39/arch/mips/ar71xx/Makefile | 1 + .../files-2.6.39/arch/mips/ar71xx/mach-wpe72.c | 97 ++++++++++++++++++++++ .../files-2.6.39/arch/mips/ar71xx/machtype.h | 1 + .../ar71xx/files-2.6.39/arch/mips/ar71xx/prom.c | 3 + 5 files changed, 112 insertions(+) create mode 100644 target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/mach-wpe72.c (limited to 'target/linux/ar71xx/files-2.6.39/arch/mips') 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); -- cgit v1.2.3