ar71xx: Backport support for Onion Omega
authorblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 3 Aug 2015 10:22:33 +0000 (10:22 +0000)
committerblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 3 Aug 2015 10:22:33 +0000 (10:22 +0000)
Backport of r46458 to CC

https://onion.io/omega

Signed-off-by: L. D. Pinney <ldpinney@gmail.com>
Acked-by: Boken Lin <bl@onion.io>
Tested-by: Jacky Huang <huangfangcheng@163.com>
git-svn-id: svn://svn.openwrt.org/openwrt/branches/chaos_calmer@46548 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/ar71xx/base-files/etc/diag.sh
target/linux/ar71xx/base-files/etc/uci-defaults/02_network
target/linux/ar71xx/base-files/lib/ar71xx.sh
target/linux/ar71xx/base-files/lib/upgrade/platform.sh
target/linux/ar71xx/config-3.18
target/linux/ar71xx/files/arch/mips/ath79/mach-onion-omega.c [new file with mode: 0644]
target/linux/ar71xx/generic/profiles/onion.mk [new file with mode: 0644]
target/linux/ar71xx/image/Makefile
target/linux/ar71xx/patches-3.18/610-MIPS-ath79-openwrt-machines.patch
tools/firmware-utils/src/mktplinkfw.c

index 7ff5a8e..d6c7ec9 100644 (file)
@@ -169,6 +169,9 @@ get_status_led() {
        om5p-an)
                status_led="om5p:blue:power"
                ;;
        om5p-an)
                status_led="om5p:blue:power"
                ;;
+       onion-omega)
+               status_led="onion:amber:system"
+               ;;
        pb44)
                status_led="pb44:amber:jump1"
                ;;
        pb44)
                status_led="pb44:amber:jump1"
                ;;
index 8dcedc8..d577fc6 100644 (file)
@@ -275,6 +275,10 @@ mynet-n750)
        [ -n "$mac" ] && ucidef_set_interface_macaddr "wan" "$mac"
        ;;
 
        [ -n "$mac" ] && ucidef_set_interface_macaddr "wan" "$mac"
        ;;
 
+onion-omega)
+       ucidef_set_interface_lan "wlan0"
+       ;;
+
 dhp-1565-a1 |\
 dir-835-a1 |\
 wndr3700v4 | \
 dhp-1565-a1 |\
 dir-835-a1 |\
 wndr3700v4 | \
index f19af26..4c10ab2 100755 (executable)
@@ -550,6 +550,9 @@ ar71xx_board_detect() {
        *"OM5P AN")
                name="om5p-an"
                ;;
        *"OM5P AN")
                name="om5p-an"
                ;;
+       *"Onion Omega")
+               name="onion-omega"
+               ;;
        *PB42)
                name="pb42"
                ;;
        *PB42)
                name="pb42"
                ;;
index 205cf22..f3dd61b 100755 (executable)
@@ -310,6 +310,7 @@ platform_check_image() {
        el-mini | \
        gl-inet | \
        mc-mac1200r | \
        el-mini | \
        gl-inet | \
        mc-mac1200r | \
+       onion-omega | \
        oolite | \
        smart-300 | \
        tl-mr10u | \
        oolite | \
        smart-300 | \
        tl-mr10u | \
index c9ec327..4f52332 100644 (file)
@@ -86,6 +86,7 @@ CONFIG_ATH79_MACH_NBG460N=y
 CONFIG_ATH79_MACH_NBG6716=y
 CONFIG_ATH79_MACH_OM2P=y
 CONFIG_ATH79_MACH_OM5P=y
 CONFIG_ATH79_MACH_NBG6716=y
 CONFIG_ATH79_MACH_OM2P=y
 CONFIG_ATH79_MACH_OM5P=y
+CONFIG_ATH79_MACH_ONION_OMEGA=y
 CONFIG_ATH79_MACH_PB42=y
 CONFIG_ATH79_MACH_PB44=y
 CONFIG_ATH79_MACH_PB92=y
 CONFIG_ATH79_MACH_PB42=y
 CONFIG_ATH79_MACH_PB44=y
 CONFIG_ATH79_MACH_PB92=y
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-onion-omega.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-onion-omega.c
new file mode 100644 (file)
index 0000000..c739840
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ *  Onion Omega board support
+ *
+ *  Copyright (C) 2015 Boken Lin <bl@onion.io>
+ *
+ *  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 "dev-eth.h"
+#include "dev-gpio-buttons.h"
+#include "dev-leds-gpio.h"
+#include "dev-m25p80.h"
+#include "dev-usb.h"
+#include "dev-wmac.h"
+#include "machtypes.h"
+
+#define OMEGA_GPIO_LED_SYSTEM  27
+#define OMEGA_GPIO_BTN_RESET   11
+
+#define OMEGA_GPIO_USB_POWER   8
+
+#define OMEGA_KEYS_POLL_INTERVAL       20  /* msecs */
+#define OMEGA_KEYS_DEBOUNCE_INTERVAL   (3 * OMEGA_KEYS_POLL_INTERVAL)
+
+static const char *omega_part_probes[] = {
+       "tp-link",
+       NULL,
+};
+
+static struct flash_platform_data omega_flash_data = {
+       .part_probes    = omega_part_probes,
+};
+
+static struct gpio_led omega_leds_gpio[] __initdata = {
+       {
+               .name       = "onion:amber:system",
+               .gpio       = OMEGA_GPIO_LED_SYSTEM,
+               .active_low = 1,
+       },
+};
+
+static struct gpio_keys_button omega_gpio_keys[] __initdata = {
+       {
+               .desc       = "reset",
+               .type       = EV_KEY,
+               .code       = KEY_RESTART,
+               .debounce_interval = OMEGA_KEYS_DEBOUNCE_INTERVAL,
+               .gpio       = OMEGA_GPIO_BTN_RESET,
+               .active_low = 0,
+       }
+};
+
+static void __init onion_omega_setup(void)
+{
+       u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
+       u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
+
+       ath79_register_m25p80(&omega_flash_data);
+       ath79_register_leds_gpio(-1, ARRAY_SIZE(omega_leds_gpio),
+                               omega_leds_gpio);
+       ath79_register_gpio_keys_polled(-1, OMEGA_KEYS_POLL_INTERVAL,
+                                       ARRAY_SIZE(omega_gpio_keys),
+                                       omega_gpio_keys);
+
+       gpio_request_one(OMEGA_GPIO_USB_POWER,
+                       GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
+                       "USB power");
+       ath79_register_usb();
+
+       ath79_init_mac(ath79_eth0_data.mac_addr, mac, -1);
+
+       ath79_register_mdio(0, 0x0);
+       ath79_register_eth(0);
+
+       ath79_register_wmac(ee, mac);
+}
+
+MIPS_MACHINE(ATH79_MACH_ONION_OMEGA, "ONION-OMEGA", "Onion Omega", onion_omega_setup);
diff --git a/target/linux/ar71xx/generic/profiles/onion.mk b/target/linux/ar71xx/generic/profiles/onion.mk
new file mode 100644 (file)
index 0000000..dd5874e
--- /dev/null
@@ -0,0 +1,16 @@
+#
+# Copyright (C) 2014 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Profile/OMEGA
+   NAME:=Onion Omega
+   PACKAGES:=kmod-usb-core kmod-usb2 kmod-usb-storage kmod-i2c-core kmod-i2c-gpio-custom kmod-spi-bitbang kmod-spi-dev kmod-spi-gpio kmod-spi-gpio-custom kmod-usb-serial
+endef
+
+define Profile/OMEGA/Description
+   Package set optimized for the Onion Omega development platform.
+endef
+$(eval $(call Profile,OMEGA))
index 8276c84..b279d8f 100644 (file)
@@ -337,6 +337,15 @@ define Device/mc-mac1200r
 endef
 TARGET_DEVICES += mc-mac1200r
 
 endef
 TARGET_DEVICES += mc-mac1200r
 
+define Device/onion-omega
+    $(Device/tplink-16mlzma)
+    BOARDNAME := ONION-OMEGA
+    DEVICE_PROFILE := OMEGA
+    TPLINK_HWID := 0x04700001
+    CONSOLE := ttyATH0,115200
+endef
+TARGET_DEVICES += onion-omega
+
 define Device/tl-mr10u-v1
     $(Device/tplink-4mlzma)
     BOARDNAME := TL-MR10U
 define Device/tl-mr10u-v1
     $(Device/tplink-4mlzma)
     BOARDNAME := TL-MR10U
index bac8f20..f11b2d0 100644 (file)
@@ -1,6 +1,8 @@
---- a/arch/mips/ath79/machtypes.h
-+++ b/arch/mips/ath79/machtypes.h
-@@ -16,22 +16,194 @@
+Index: linux-3.18.19/arch/mips/ath79/machtypes.h
+===================================================================
+--- linux-3.18.19.orig/arch/mips/ath79/machtypes.h
++++ linux-3.18.19/arch/mips/ath79/machtypes.h
+@@ -16,22 +16,195 @@
  
  enum ath79_mach_type {
        ATH79_MACH_GENERIC = 0,
  
  enum ath79_mach_type {
        ATH79_MACH_GENERIC = 0,
@@ -74,6 +76,7 @@
 +      ATH79_MACH_OM2Pv2,              /* OpenMesh OM2Pv2 */
 +      ATH79_MACH_OM2P,                /* OpenMesh OM2P */
 +      ATH79_MACH_OM5P,                /* OpenMesh OM5P */
 +      ATH79_MACH_OM2Pv2,              /* OpenMesh OM2Pv2 */
 +      ATH79_MACH_OM2P,                /* OpenMesh OM2P */
 +      ATH79_MACH_OM5P,                /* OpenMesh OM5P */
++      ATH79_MACH_ONION_OMEGA,         /* ONION OMEGA */
 +      ATH79_MACH_PB42,                /* Atheros PB42 */
 +      ATH79_MACH_PB92,                /* Atheros PB92 */
 +      ATH79_MACH_QIHOO_C301,          /* Qihoo 360 C301 */
 +      ATH79_MACH_PB42,                /* Atheros PB42 */
 +      ATH79_MACH_PB92,                /* Atheros PB92 */
 +      ATH79_MACH_QIHOO_C301,          /* Qihoo 360 C301 */
  };
  
  #endif /* _ATH79_MACHTYPE_H */
  };
  
  #endif /* _ATH79_MACHTYPE_H */
---- a/arch/mips/ath79/Kconfig
-+++ b/arch/mips/ath79/Kconfig
+Index: linux-3.18.19/arch/mips/ath79/Kconfig
+===================================================================
+--- linux-3.18.19.orig/arch/mips/ath79/Kconfig
++++ linux-3.18.19/arch/mips/ath79/Kconfig
 @@ -2,6 +2,70 @@ if ATH79
  
  menu "Atheros AR71XX/AR724X/AR913X machine selection"
 @@ -2,6 +2,70 @@ if ATH79
  
  menu "Atheros AR71XX/AR724X/AR913X machine selection"
  config ATH79_MACH_AP121
        bool "Atheros AP121 reference board"
        select SOC_AR933X
  config ATH79_MACH_AP121
        bool "Atheros AP121 reference board"
        select SOC_AR933X
-@@ -11,62 +75,1020 @@ config ATH79_MACH_AP121
+@@ -11,62 +75,1030 @@ config ATH79_MACH_AP121
        select ATH79_DEV_M25P80
        select ATH79_DEV_USB
        select ATH79_DEV_WMAC
        select ATH79_DEV_M25P80
        select ATH79_DEV_USB
        select ATH79_DEV_WMAC
 +      select ATH79_DEV_M25P80
 +      select ATH79_DEV_WMAC
 +
 +      select ATH79_DEV_M25P80
 +      select ATH79_DEV_WMAC
 +
++config ATH79_MACH_ONION_OMEGA
++      bool "ONION OMEGA support"
++      select SOC_AR933X
++      select ATH79_DEV_ETH
++      select ATH79_DEV_GPIO_BUTTONS
++      select ATH79_DEV_LEDS_GPIO
++      select ATH79_DEV_M25P80
++      select ATH79_DEV_USB
++      select ATH79_DEV_WMAC
++
 +config ATH79_MACH_MR600
 +      bool "OpenMesh MR600 board support"
 +      select SOC_AR934X
 +config ATH79_MACH_MR600
 +      bool "OpenMesh MR600 board support"
 +      select SOC_AR934X
  
  config ATH79_MACH_UBNT_XM
        bool "Ubiquiti Networks XM/UniFi boards"
  
  config ATH79_MACH_UBNT_XM
        bool "Ubiquiti Networks XM/UniFi boards"
-@@ -83,6 +1105,97 @@ config ATH79_MACH_UBNT_XM
+@@ -83,6 +1115,97 @@ config ATH79_MACH_UBNT_XM
          Say 'Y' here if you want your kernel to support the
          Ubiquiti Networks XM (rev 1.0) board.
  
          Say 'Y' here if you want your kernel to support the
          Ubiquiti Networks XM (rev 1.0) board.
  
  endmenu
  
  config SOC_AR71XX
  endmenu
  
  config SOC_AR71XX
-@@ -124,7 +1237,10 @@ config ATH79_DEV_DSA
+@@ -124,7 +1247,10 @@ config ATH79_DEV_DSA
  config ATH79_DEV_ETH
        def_bool n
  
  config ATH79_DEV_ETH
        def_bool n
  
        def_bool n
  
  config ATH79_DEV_GPIO_BUTTONS
        def_bool n
  
  config ATH79_DEV_GPIO_BUTTONS
-@@ -154,6 +1270,11 @@ config ATH79_PCI_ATH9K_FIXUP
+@@ -154,6 +1280,11 @@ config ATH79_PCI_ATH9K_FIXUP
        def_bool n
  
  config ATH79_ROUTERBOOT
        def_bool n
  
  config ATH79_ROUTERBOOT
        def_bool n
  
  endif
        def_bool n
  
  endif
---- a/arch/mips/ath79/Makefile
-+++ b/arch/mips/ath79/Makefile
-@@ -38,9 +38,123 @@ obj-$(CONFIG_ATH79_ROUTERBOOT)             += route
+Index: linux-3.18.19/arch/mips/ath79/Makefile
+===================================================================
+--- linux-3.18.19.orig/arch/mips/ath79/Makefile
++++ linux-3.18.19/arch/mips/ath79/Makefile
+@@ -38,9 +38,124 @@ obj-$(CONFIG_ATH79_ROUTERBOOT)             += route
  #
  # Machines
  #
  #
  # Machines
  #
 +obj-$(CONFIG_ATH79_MACH_NBG460N)      += mach-nbg460n.o
 +obj-$(CONFIG_ATH79_MACH_OM2P)         += mach-om2p.o
 +obj-$(CONFIG_ATH79_MACH_OM5P)         += mach-om5p.o
 +obj-$(CONFIG_ATH79_MACH_NBG460N)      += mach-nbg460n.o
 +obj-$(CONFIG_ATH79_MACH_OM2P)         += mach-om2p.o
 +obj-$(CONFIG_ATH79_MACH_OM5P)         += mach-om5p.o
++obj-$(CONFIG_ATH79_MACH_ONION_OMEGA)  += mach-onion-omega.o
 +obj-$(CONFIG_ATH79_MACH_PB42)         += mach-pb42.o
  obj-$(CONFIG_ATH79_MACH_PB44)         += mach-pb44.o
 +obj-$(CONFIG_ATH79_MACH_PB92)         += mach-pb92.o
 +obj-$(CONFIG_ATH79_MACH_PB42)         += mach-pb42.o
  obj-$(CONFIG_ATH79_MACH_PB44)         += mach-pb44.o
 +obj-$(CONFIG_ATH79_MACH_PB92)         += mach-pb92.o
 +obj-$(CONFIG_ATH79_MACH_ZCN_1523H)    += mach-zcn-1523h.o
 +obj-$(CONFIG_ATH79_MACH_CARAMBOLA2)   += mach-carambola2.o
 +obj-$(CONFIG_ATH79_MACH_NBG6716)      += mach-nbg6716.o
 +obj-$(CONFIG_ATH79_MACH_ZCN_1523H)    += mach-zcn-1523h.o
 +obj-$(CONFIG_ATH79_MACH_CARAMBOLA2)   += mach-carambola2.o
 +obj-$(CONFIG_ATH79_MACH_NBG6716)      += mach-nbg6716.o
---- a/arch/mips/ath79/prom.c
-+++ b/arch/mips/ath79/prom.c
+Index: linux-3.18.19/arch/mips/ath79/prom.c
+===================================================================
+--- linux-3.18.19.orig/arch/mips/ath79/prom.c
++++ linux-3.18.19/arch/mips/ath79/prom.c
 @@ -180,6 +180,12 @@ void __init prom_init(void)
                        ath79_prom_append_cmdline("board", env);
                }
 @@ -180,6 +180,12 @@ void __init prom_init(void)
                        ath79_prom_append_cmdline("board", env);
                }
index 8c543eb..99338d4 100644 (file)
@@ -34,6 +34,7 @@
 #define HWID_ANTMINER_S3       0x04440003
 #define HWID_GL_INET_V1                0x08000001
 #define HWID_GS_OOLITE_V1      0x3C000101
 #define HWID_ANTMINER_S3       0x04440003
 #define HWID_GL_INET_V1                0x08000001
 #define HWID_GS_OOLITE_V1      0x3C000101
+#define HWID_ONION_OMEGA       0x04700001
 #define HWID_TL_MR10U_V1       0x00100101
 #define HWID_TL_MR13U_V1       0x00130101
 #define HWID_TL_MR3020_V1      0x30200001
 #define HWID_TL_MR10U_V1       0x00100101
 #define HWID_TL_MR13U_V1       0x00130101
 #define HWID_TL_MR3020_V1      0x30200001
@@ -420,6 +421,11 @@ static struct board_info boards[] = {
                .hw_rev         = 1,
                .layout_id      = "16Mlzma",
        }, {
                .hw_rev         = 1,
                .layout_id      = "16Mlzma",
        }, {
+               .id             = "ONION-OMEGA",
+               .hw_id          = HWID_ONION_OMEGA,
+               .hw_rev         = 1,
+               .layout_id      = "16Mlzma",
+       }, {
                .id             = "ANTMINER-S1",
                .hw_id          = HWID_ANTMINER_S1,
                .hw_rev         = 1,
                .id             = "ANTMINER-S1",
                .hw_id          = HWID_ANTMINER_S1,
                .hw_rev         = 1,