summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2013-10-30 06:50:52 +0000
committerGabor Juhos <juhosg@openwrt.org>2013-10-30 06:50:52 +0000
commit7074bb286de24b9e9c8a1fd159bbabe69442ebf6 (patch)
treeb05e6b21b18acfa5867e632911c3084db93bf55b
parent6b2c29d5f0594acff1e5243ee22098a9c2ef70c4 (diff)
downloadmtk-20170518-7074bb286de24b9e9c8a1fd159bbabe69442ebf6.zip
mtk-20170518-7074bb286de24b9e9c8a1fd159bbabe69442ebf6.tar.gz
mtk-20170518-7074bb286de24b9e9c8a1fd159bbabe69442ebf6.tar.bz2
ar71xx: add kernel support for DRAGINO2
This patch adds support for DRAGINO2 board (used by Meshpotato v2). Most of the files included can be found in the official svn repository provided by the company [1]. I have just adapt it to the last OpenWrt trunk revision (Fri Oct 4 10:49:47 2013). 1. http://svn.dragino.com/dragino2 Patchwork: http://patchwork.openwrt.org/patch/4234/ Signed-off-by: Pau Escrich <p4u@dabax.net> [juhosg: - rename and refresh kernel patch, - fix checkpatch warnings in mach-dragino2.c] Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 38587
-rw-r--r--target/linux/ar71xx/config-3.101
-rw-r--r--target/linux/ar71xx/files/arch/mips/ath79/mach-dragino2.c127
-rw-r--r--target/linux/ar71xx/patches-3.10/629-MIPS-ath79-add-dragino2-support.patch39
3 files changed, 167 insertions, 0 deletions
diff --git a/target/linux/ar71xx/config-3.10 b/target/linux/ar71xx/config-3.10
index f88d008..eb6a781 100644
--- a/target/linux/ar71xx/config-3.10
+++ b/target/linux/ar71xx/config-3.10
@@ -43,6 +43,7 @@ CONFIG_ATH79_MACH_DIR_600_A1=y
CONFIG_ATH79_MACH_DIR_615_C1=y
CONFIG_ATH79_MACH_DIR_825_B1=y
CONFIG_ATH79_MACH_DIR_825_C1=y
+CONFIG_ATH79_MACH_DRAGINO2=y
CONFIG_ATH79_MACH_EAP7660D=y
CONFIG_ATH79_MACH_EW_DORIN=y
CONFIG_ATH79_MACH_HORNET_UB=y
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-dragino2.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-dragino2.c
new file mode 100644
index 0000000..156fbe5
--- /dev/null
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-dragino2.c
@@ -0,0 +1,127 @@
+/*
+ * DRAGINO V2 board support, based on Atheros AP121 board support
+ *
+ * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
+ * Copyright (C) 2012 Elektra Wagenrad <elektra@villagetelco.org>
+ *
+ * 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/gpio.h>
+#include <asm/mach-ath79/ath79.h>
+#include <asm/mach-ath79/ar71xx_regs.h>
+#include "common.h"
+#include "dev-eth.h"
+#include "dev-gpio-buttons.h"
+#include "dev-leds-gpio.h"
+#include "dev-m25p80.h"
+#include "dev-spi.h"
+#include "dev-usb.h"
+#include "dev-wmac.h"
+#include "machtypes.h"
+
+#define DRAGINO2_GPIO_LED_WLAN 0
+#define DRAGINO2_GPIO_LED_LAN 13
+#define DRAGINO2_GPIO_LED_WAN 17
+
+/*
+ * The following GPIO is actually named "Router" on the board.
+ * However, since the "Router" feature is not supported as of yet
+ * we use it to display USB activity.
+ */
+
+#define DRAGINO2_GPIO_LED_USB 28
+#define DRAGINO2_GPIO_BTN_JUMPSTART 11
+#define DRAGINO2_GPIO_BTN_RESET 12
+
+#define DRAGINO2_KEYS_POLL_INTERVAL 20 /* msecs */
+#define DRAGINO2_KEYS_DEBOUNCE_INTERVAL (3 * DRAGINO2_KEYS_POLL_INTERVAL)
+
+#define DRAGINO2_MAC0_OFFSET 0x0000
+#define DRAGINO2_MAC1_OFFSET 0x0006
+#define DRAGINO2_CALDATA_OFFSET 0x1000
+#define DRAGINO2_WMAC_MAC_OFFSET 0x1002
+
+static struct gpio_led dragino2_leds_gpio[] __initdata = {
+ {
+ .name = "dragino2:red:lan",
+ .gpio = DRAGINO2_GPIO_LED_LAN,
+ .active_low = 0,
+ },
+ {
+ .name = "dragino2:red:wlan",
+ .gpio = DRAGINO2_GPIO_LED_WLAN,
+ .active_low = 0,
+ },
+ {
+ .name = "dragino2:red:wan",
+ .gpio = DRAGINO2_GPIO_LED_WAN,
+ .active_low = 0,
+ },
+ {
+ .name = "dragino2:red:usb",
+ .gpio = DRAGINO2_GPIO_LED_USB,
+ .active_low = 0,
+ },
+};
+
+static struct gpio_keys_button dragino2_gpio_keys[] __initdata = {
+ {
+ .desc = "jumpstart button",
+ .type = EV_KEY,
+ .code = KEY_WPS_BUTTON,
+ .debounce_interval = DRAGINO2_KEYS_DEBOUNCE_INTERVAL,
+ .gpio = DRAGINO2_GPIO_BTN_JUMPSTART,
+ .active_low = 1,
+ },
+ {
+ .desc = "reset button",
+ .type = EV_KEY,
+ .code = KEY_RESTART,
+ .debounce_interval = DRAGINO2_KEYS_DEBOUNCE_INTERVAL,
+ .gpio = DRAGINO2_GPIO_BTN_RESET,
+ .active_low = 1,
+ }
+};
+
+static void __init dragino2_common_setup(void)
+{
+ u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
+
+ ath79_register_m25p80(NULL);
+ ath79_register_wmac(art + DRAGINO2_CALDATA_OFFSET,
+ art + DRAGINO2_WMAC_MAC_OFFSET);
+
+ ath79_init_mac(ath79_eth0_data.mac_addr, art + DRAGINO2_MAC0_OFFSET, 0);
+ ath79_init_mac(ath79_eth1_data.mac_addr, art + DRAGINO2_MAC1_OFFSET, 0);
+
+ ath79_register_mdio(0, 0x0);
+
+ /* Enable GPIO15 and GPIO16 and possibly GPIO26 and GPIO27 */
+ ath79_gpio_function_disable(AR933X_GPIO_FUNC_ETH_SWITCH_LED2_EN |
+ AR933X_GPIO_FUNC_ETH_SWITCH_LED3_EN);
+
+ /* LAN ports */
+ ath79_register_eth(1);
+
+ /* WAN port */
+ ath79_register_eth(0);
+}
+
+static void __init dragino2_setup(void)
+{
+ dragino2_common_setup();
+
+ ath79_register_leds_gpio(-1, ARRAY_SIZE(dragino2_leds_gpio),
+ dragino2_leds_gpio);
+ ath79_register_gpio_keys_polled(-1, DRAGINO2_KEYS_POLL_INTERVAL,
+ ARRAY_SIZE(dragino2_gpio_keys),
+ dragino2_gpio_keys);
+ ath79_register_usb();
+}
+
+MIPS_MACHINE(ATH79_MACH_DRAGINO2, "DRAGINO2", "Dragino Dragino v2",
+ dragino2_setup);
+
diff --git a/target/linux/ar71xx/patches-3.10/629-MIPS-ath79-add-dragino2-support.patch b/target/linux/ar71xx/patches-3.10/629-MIPS-ath79-add-dragino2-support.patch
new file mode 100644
index 0000000..cc852e6
--- /dev/null
+++ b/target/linux/ar71xx/patches-3.10/629-MIPS-ath79-add-dragino2-support.patch
@@ -0,0 +1,39 @@
+--- a/arch/mips/ath79/Kconfig
++++ b/arch/mips/ath79/Kconfig
+@@ -305,6 +305,16 @@ config ATH79_MACH_DIR_825_C1
+ select ATH79_DEV_USB
+ select ATH79_DEV_WMAC
+
++config ATH79_MACH_DRAGINO2
++ bool "DRAGINO V2 support"
++ select SOC_AR933X
++ select ATH79_DEV_M25P80
++ select ATH79_DEV_GPIO_BUTTONS
++ select ATH79_DEV_LEDS_GPIO
++ select ATH79_DEV_WMAC
++ select ATH79_DEV_ETH
++ select ATH79_DEV_USB
++
+ config ATH79_MACH_EW_DORIN
+ bool "embedded wireless Dorin Platform support"
+ select SOC_AR933X
+--- a/arch/mips/ath79/Makefile
++++ b/arch/mips/ath79/Makefile
+@@ -58,6 +58,7 @@ obj-$(CONFIG_ATH79_MACH_DIR_600_A1) += m
+ obj-$(CONFIG_ATH79_MACH_DIR_615_C1) += mach-dir-615-c1.o
+ obj-$(CONFIG_ATH79_MACH_DIR_825_B1) += mach-dir-825-b1.o
+ obj-$(CONFIG_ATH79_MACH_DIR_825_C1) += mach-dir-825-c1.o
++obj-$(CONFIG_ATH79_MACH_DRAGINO2) += mach-dragino2.o
+ obj-$(CONFIG_ATH79_MACH_EW_DORIN) += mach-ew-dorin.o
+ obj-$(CONFIG_ATH79_MACH_EAP7660D) += mach-eap7660d.o
+ obj-$(CONFIG_ATH79_MACH_JA76PF) += mach-ja76pf.o
+--- a/arch/mips/ath79/machtypes.h
++++ b/arch/mips/ath79/machtypes.h
+@@ -44,6 +44,7 @@ enum ath79_mach_type {
+ ATH79_MACH_DIR_825_B1, /* D-Link DIR-825 rev. B1 */
+ ATH79_MACH_DIR_825_C1, /* D-Link DIR-825 rev. C1 */
+ ATH79_MACH_DIR_835_A1, /* D-Link DIR-835 rev. A1 */
++ ATH79_MACH_DRAGINO2, /* Dragino Version 2 */
+ ATH79_MACH_EW_DORIN, /* embedded wireless Dorin Platform */
+ ATH79_MACH_EW_DORIN_ROUTER, /* embedded wireless Dorin Router Platform */
+ ATH79_MACH_EAP7660D, /* Senao EAP7660D */