aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx/patches-3.2/018-Initial-support-for-the-Ubiquiti-Networks-XM-board-r.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/ar71xx/patches-3.2/018-Initial-support-for-the-Ubiquiti-Networks-XM-board-r.patch')
-rw-r--r--target/linux/ar71xx/patches-3.2/018-Initial-support-for-the-Ubiquiti-Networks-XM-board-r.patch184
1 files changed, 184 insertions, 0 deletions
diff --git a/target/linux/ar71xx/patches-3.2/018-Initial-support-for-the-Ubiquiti-Networks-XM-board-r.patch b/target/linux/ar71xx/patches-3.2/018-Initial-support-for-the-Ubiquiti-Networks-XM-board-r.patch
new file mode 100644
index 0000000000..466a5372d9
--- /dev/null
+++ b/target/linux/ar71xx/patches-3.2/018-Initial-support-for-the-Ubiquiti-Networks-XM-board-r.patch
@@ -0,0 +1,184 @@
+From e6a1210bef8b48a946f1afb6d951f4b2448219ac Mon Sep 17 00:00:00 2001
+From: Rene Bolldorf <xsecute@googlemail.com>
+Date: Fri, 18 Nov 2011 00:17:42 +0000
+Subject: [PATCH 18/27] Initial support for the Ubiquiti Networks XM board (rev 1.0).
+
+Signed-off-by: Rene Bolldorf <xsecute@googlemail.com>
+Cc: linux-mips@linux-mips.org
+Cc: linux-kernel@vger.kernel.org
+Patchwork: https://patchwork.linux-mips.org/patch/3020/
+Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
+---
+ arch/mips/ath79/Kconfig | 11 ++++
+ arch/mips/ath79/Makefile | 1 +
+ arch/mips/ath79/mach-ubnt-xm.c | 119 ++++++++++++++++++++++++++++++++++++++++
+ arch/mips/ath79/machtypes.h | 1 +
+ 4 files changed, 132 insertions(+), 0 deletions(-)
+ create mode 100644 arch/mips/ath79/mach-ubnt-xm.c
+
+--- a/arch/mips/ath79/Kconfig
++++ b/arch/mips/ath79/Kconfig
+@@ -36,6 +36,16 @@ config ATH79_MACH_PB44
+ Say 'Y' here if you want your kernel to support the
+ Atheros PB44 reference board.
+
++config ATH79_MACH_UBNT_XM
++ bool "Ubiquiti Networks XM (rev 1.0) board"
++ select SOC_AR724X
++ select ATH79_DEV_GPIO_BUTTONS
++ select ATH79_DEV_LEDS_GPIO
++ select ATH79_DEV_SPI
++ help
++ Say 'Y' here if you want your kernel to support the
++ Ubiquiti Networks XM (rev 1.0) board.
++
+ endmenu
+
+ config SOC_AR71XX
+@@ -46,6 +56,7 @@ config SOC_AR71XX
+ config SOC_AR724X
+ select USB_ARCH_HAS_EHCI
+ select USB_ARCH_HAS_OHCI
++ select HW_HAS_PCI
+ def_bool n
+
+ config SOC_AR913X
+--- a/arch/mips/ath79/Makefile
++++ b/arch/mips/ath79/Makefile
+@@ -28,3 +28,4 @@ obj-$(CONFIG_ATH79_DEV_USB) += dev-usb.
+ obj-$(CONFIG_ATH79_MACH_AP121) += mach-ap121.o
+ obj-$(CONFIG_ATH79_MACH_AP81) += mach-ap81.o
+ obj-$(CONFIG_ATH79_MACH_PB44) += mach-pb44.o
++obj-$(CONFIG_ATH79_MACH_UBNT_XM) += mach-ubnt-xm.o
+--- /dev/null
++++ b/arch/mips/ath79/mach-ubnt-xm.c
+@@ -0,0 +1,119 @@
++/*
++ * Ubiquiti Networks XM (rev 1.0) board support
++ *
++ * Copyright (C) 2011 René Bolldorf <xsecute@googlemail.com>
++ *
++ * Derived from: mach-pb44.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/init.h>
++#include <linux/pci.h>
++
++#ifdef CONFIG_PCI
++#include <linux/ath9k_platform.h>
++#include <asm/mach-ath79/pci-ath724x.h>
++#endif /* CONFIG_PCI */
++
++#include "machtypes.h"
++#include "dev-gpio-buttons.h"
++#include "dev-leds-gpio.h"
++#include "dev-spi.h"
++
++#define UBNT_XM_GPIO_LED_L1 0
++#define UBNT_XM_GPIO_LED_L2 1
++#define UBNT_XM_GPIO_LED_L3 11
++#define UBNT_XM_GPIO_LED_L4 7
++
++#define UBNT_XM_GPIO_BTN_RESET 12
++
++#define UBNT_XM_KEYS_POLL_INTERVAL 20
++#define UBNT_XM_KEYS_DEBOUNCE_INTERVAL (3 * UBNT_XM_KEYS_POLL_INTERVAL)
++
++#define UBNT_XM_PCI_IRQ 48
++#define UBNT_XM_EEPROM_ADDR (u8 *) KSEG1ADDR(0x1fff1000)
++
++static struct gpio_led ubnt_xm_leds_gpio[] __initdata = {
++ {
++ .name = "ubnt-xm:red:link1",
++ .gpio = UBNT_XM_GPIO_LED_L1,
++ .active_low = 0,
++ }, {
++ .name = "ubnt-xm:orange:link2",
++ .gpio = UBNT_XM_GPIO_LED_L2,
++ .active_low = 0,
++ }, {
++ .name = "ubnt-xm:green:link3",
++ .gpio = UBNT_XM_GPIO_LED_L3,
++ .active_low = 0,
++ }, {
++ .name = "ubnt-xm:green:link4",
++ .gpio = UBNT_XM_GPIO_LED_L4,
++ .active_low = 0,
++ },
++};
++
++static struct gpio_keys_button ubnt_xm_gpio_keys[] __initdata = {
++ {
++ .desc = "reset",
++ .type = EV_KEY,
++ .code = KEY_RESTART,
++ .debounce_interval = UBNT_XM_KEYS_DEBOUNCE_INTERVAL,
++ .gpio = UBNT_XM_GPIO_BTN_RESET,
++ .active_low = 1,
++ }
++};
++
++static struct spi_board_info ubnt_xm_spi_info[] = {
++ {
++ .bus_num = 0,
++ .chip_select = 0,
++ .max_speed_hz = 25000000,
++ .modalias = "mx25l6405d",
++ }
++};
++
++static struct ath79_spi_platform_data ubnt_xm_spi_data = {
++ .bus_num = 0,
++ .num_chipselect = 1,
++};
++
++#ifdef CONFIG_PCI
++static struct ath9k_platform_data ubnt_xm_eeprom_data;
++
++static struct ath724x_pci_data ubnt_xm_pci_data[] = {
++ {
++ .irq = UBNT_XM_PCI_IRQ,
++ .pdata = &ubnt_xm_eeprom_data,
++ },
++};
++#endif /* CONFIG_PCI */
++
++static void __init ubnt_xm_init(void)
++{
++ ath79_register_leds_gpio(-1, ARRAY_SIZE(ubnt_xm_leds_gpio),
++ ubnt_xm_leds_gpio);
++
++ ath79_register_gpio_keys_polled(-1, UBNT_XM_KEYS_POLL_INTERVAL,
++ ARRAY_SIZE(ubnt_xm_gpio_keys),
++ ubnt_xm_gpio_keys);
++
++ ath79_register_spi(&ubnt_xm_spi_data, ubnt_xm_spi_info,
++ ARRAY_SIZE(ubnt_xm_spi_info));
++
++#ifdef CONFIG_PCI
++ memcpy(ubnt_xm_eeprom_data.eeprom_data, UBNT_XM_EEPROM_ADDR,
++ sizeof(ubnt_xm_eeprom_data.eeprom_data));
++
++ ath724x_pci_add_data(ubnt_xm_pci_data, ARRAY_SIZE(ubnt_xm_pci_data));
++#endif /* CONFIG_PCI */
++
++}
++
++MIPS_MACHINE(ATH79_MACH_UBNT_XM,
++ "UBNT-XM",
++ "Ubiquiti Networks XM (rev 1.0) board",
++ ubnt_xm_init);
+--- a/arch/mips/ath79/machtypes.h
++++ b/arch/mips/ath79/machtypes.h
+@@ -19,6 +19,7 @@ enum ath79_mach_type {
+ ATH79_MACH_AP121, /* Atheros AP121 reference board */
+ ATH79_MACH_AP81, /* Atheros AP81 reference board */
+ ATH79_MACH_PB44, /* Atheros PB44 reference board */
++ ATH79_MACH_UBNT_XM, /* Ubiquiti Networks XM board rev 1.0 */
+ };
+
+ #endif /* _ATH79_MACHTYPE_H */