From eebdd633e462903ebd48e84b5bfe27942f106a20 Mon Sep 17 00:00:00 2001 From: Gabor Juhos Date: Mon, 27 Aug 2012 14:55:31 +0000 Subject: [PATCH] ar71xx: add support for the Allnet ALL0315N board Signed-off-by: Daniel Golle SVN-Revision: 33281 --- target/linux/ar71xx/config-3.3 | 1 + .../files/arch/mips/ath79/mach-all0315n.c | 95 +++++++++++++++++++ .../patches-3.3/612-ALL0315N-support.patch | 44 +++++++++ 3 files changed, 140 insertions(+) create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-all0315n.c create mode 100644 target/linux/ar71xx/patches-3.3/612-ALL0315N-support.patch diff --git a/target/linux/ar71xx/config-3.3 b/target/linux/ar71xx/config-3.3 index 09d9f06ee1..f3466130f6 100644 --- a/target/linux/ar71xx/config-3.3 +++ b/target/linux/ar71xx/config-3.3 @@ -21,6 +21,7 @@ CONFIG_ATH79_DEV_WMAC=y CONFIG_ATH79_MACH_ALFA_AP96=y CONFIG_ATH79_MACH_ALFA_NX=y CONFIG_ATH79_MACH_ALL0258N=y +CONFIG_ATH79_MACH_ALL0315N=y CONFIG_ATH79_MACH_AP113=y CONFIG_ATH79_MACH_AP121=y CONFIG_ATH79_MACH_AP136=y diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-all0315n.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-all0315n.c new file mode 100644 index 0000000000..7d5377480a --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-all0315n.c @@ -0,0 +1,95 @@ +/* + * Allnet ALL0315N support + * + * Copyright (C) 2012 Daniel Golle + * + * + * 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 + +#include "common.h" +#include "dev-eth.h" +#include "dev-ap9x-pci.h" +#include "dev-gpio-buttons.h" +#include "dev-m25p80.h" +#include "dev-leds-gpio.h" +#include "machtypes.h" +#include "pci.h" + +#define ALL0315N_GPIO_BTN_RESET 0 +#define ALL0315N_GPIO_LED_RSSIHIGH 14 +#define ALL0315N_GPIO_LED_RSSIMEDIUM 15 +#define ALL0315N_GPIO_LED_RSSILOW 16 + +#define ALL0315N_KEYS_POLL_INTERVAL 20 /* msecs */ +#define ALL0315N_KEYS_DEBOUNCE_INTERVAL (3 * ALL0315N_KEYS_POLL_INTERVAL) + +static struct gpio_led all0315n_leds_gpio[] __initdata = { + { + .name = "all0315n:green:rssihigh", + .gpio = ALL0315N_GPIO_LED_RSSIHIGH, + .active_low = 1, + }, { + .name = "all0315n:yellow:rssimedium", + .gpio = ALL0315N_GPIO_LED_RSSIMEDIUM, + .active_low = 1, + }, { + .name = "all0315n:red:rssilow", + .gpio = ALL0315N_GPIO_LED_RSSILOW, + .active_low = 1, + } +}; + +static struct gpio_keys_button all0315n_gpio_keys[] __initdata = { + { + .desc = "reset", + .type = EV_KEY, + .code = KEY_RESTART, + .debounce_interval = ALL0315N_KEYS_DEBOUNCE_INTERVAL, + .gpio = ALL0315N_GPIO_BTN_RESET, + .active_low = 1, + } +}; + +static void __init all0315n_setup(void) +{ + u8 *mac = (u8 *) KSEG1ADDR(0x1ffc0000); + u8 *ee = (u8 *) KSEG1ADDR(0x1ffc1000); + + ath79_register_m25p80(NULL); + + ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0); + ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; + ath79_eth0_data.speed = SPEED_1000; + ath79_eth0_data.duplex = DUPLEX_FULL; + ath79_eth0_data.phy_mask = BIT(0); + + ath79_init_mac(ath79_eth1_data.mac_addr, mac, 1); + ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; + ath79_eth1_data.speed = SPEED_1000; + ath79_eth1_data.duplex = DUPLEX_FULL; + ath79_eth1_data.phy_mask = BIT(4); + + ath79_register_mdio(0, ~(BIT(0) | BIT(4))); + ath79_register_eth(0); + ath79_register_eth(1); + + + ath79_register_leds_gpio(-1, ARRAY_SIZE(all0315n_leds_gpio), + all0315n_leds_gpio); + + ath79_register_gpio_keys_polled(-1, ALL0315N_KEYS_POLL_INTERVAL, + ARRAY_SIZE(all0315n_gpio_keys), + all0315n_gpio_keys); + + ap9x_pci_setup_wmac_led_pin(0, 1); + ap91_pci_init(ee, mac); +} + +MIPS_MACHINE(ATH79_MACH_ALL0315N, "ALL0315N", "Allnet ALL0315N", + all0315n_setup); diff --git a/target/linux/ar71xx/patches-3.3/612-ALL0315N-support.patch b/target/linux/ar71xx/patches-3.3/612-ALL0315N-support.patch new file mode 100644 index 0000000000..9c054da5b4 --- /dev/null +++ b/target/linux/ar71xx/patches-3.3/612-ALL0315N-support.patch @@ -0,0 +1,44 @@ +Index: linux-3.3.8/arch/mips/ath79/Kconfig +=================================================================== +--- linux-3.3.8.orig/arch/mips/ath79/Kconfig ++++ linux-3.3.8/arch/mips/ath79/Kconfig +@@ -38,6 +38,15 @@ config ATH79_MACH_ALL0258N + select ATH79_DEV_LEDS_GPIO + select ATH79_DEV_M25P80 + ++config ATH79_MACH_ALL0315N ++ bool "Allnet ALL0315N support" ++ select SOC_AR724X ++ select ATH79_DEV_AP9X_PCI if PCI ++ select ATH79_DEV_ETH ++ select ATH79_DEV_GPIO_BUTTONS ++ select ATH79_DEV_LEDS_GPIO ++ select ATH79_DEV_M25P80 ++ + config ATH79_MACH_AP113 + bool "Atheros AP113 board support" + select SOC_AR724X +Index: linux-3.3.8/arch/mips/ath79/Makefile +=================================================================== +--- linux-3.3.8.orig/arch/mips/ath79/Makefile ++++ linux-3.3.8/arch/mips/ath79/Makefile +@@ -39,6 +39,7 @@ obj-$(CONFIG_ATH79_PCI_ATH9K_FIXUP) += p + obj-$(CONFIG_ATH79_MACH_ALFA_AP96) += mach-alfa-ap96.o + obj-$(CONFIG_ATH79_MACH_ALFA_NX) += mach-alfa-nx.o + obj-$(CONFIG_ATH79_MACH_ALL0258N) += mach-all0258n.o ++obj-$(CONFIG_ATH79_MACH_ALL0315N) += mach-all0315n.o + obj-$(CONFIG_ATH79_MACH_AP113) += mach-ap113.o + obj-$(CONFIG_ATH79_MACH_AP121) += mach-ap121.o + obj-$(CONFIG_ATH79_MACH_AP136) += mach-ap136.o +Index: linux-3.3.8/arch/mips/ath79/machtypes.h +=================================================================== +--- linux-3.3.8.orig/arch/mips/ath79/machtypes.h ++++ linux-3.3.8/arch/mips/ath79/machtypes.h +@@ -20,6 +20,7 @@ enum ath79_mach_type { + ATH79_MACH_ALFA_NX, /* ALFA Network N2/N5 board */ + ATH79_MACH_ALL0258N, /* Allnet ALL0258N */ + ATH79_MACH_ALL0305, /* Allnet ALL0305 */ ++ ATH79_MACH_ALL0315N, /* Allnet ALL0315N */ + ATH79_MACH_AP113, /* Atheros AP113 reference board */ + ATH79_MACH_AP121, /* Atheros AP121 reference board */ + ATH79_MACH_AP121_MINI, /* Atheros AP121-MINI reference board */