From: Allan Nick Pedrana <[email protected]> This patch adds the target profile SOM9331 and configures hardware functionality for the 3x Eth Ports & corresponding LED's, the USB Host, the USART to USB bridge and the System LED.
The patch has been tested by me (Rajeev Tandon) and works well (tested with sysupgrade image in OpenEmbed SOM9331) by flashing over the supplied firmware (AA) Tested-by: Rajeev Tandon <[email protected]> -- I based what I did on the patch for SOM9331 running 12.09 AA that was distributed by the vendor, found here[https://github.com/10to7/SOM9331/blob/master/som9331.patch]. target/linux/ar71xx/base-files/etc/diag.sh | 3 target/linux/ar71xx/base-files/etc/uci-defaults/01_leds | 8 target/linux/ar71xx/base-files/etc/uci-defaults/02_network | 1 target/linux/ar71xx/base-files/lib/ar71xx.sh | 3 target/linux/ar71xx/base-files/lib/upgrade/platform.sh | 1 target/linux/ar71xx/config-3.18 | 1 target/linux/ar71xx/files/arch/mips/ath79/mach-som9331.c | 125 ++++++++++ target/linux/ar71xx/generic/profiles/openembed.mk | 13 + target/linux/ar71xx/image/Makefile | 9 target/linux/ar71xx/patches-3.18/610-MIPS-ath79-openwrt-machines.patch | 24 + tools/firmware-utils/src/mktplinkfw.c | 6 11 files changed, 188 insertions(+), 6 deletions(-) diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh index 5a184cd..d984d72 100644 --- a/target/linux/ar71xx/base-files/etc/diag.sh +++ b/target/linux/ar71xx/base-files/etc/diag.sh @@ -224,6 +224,9 @@ get_status_led() { qihoo-c301) status_led="qihoo:green:status" ;; + som9331) + status_led="som9331:green:system" + ;; tew-632brp) status_led="tew-632brp:green:status" ;; diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds index a4b355a..d8b39a6 100644 --- a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds @@ -311,6 +311,14 @@ smart-300) ucidef_set_led_wlan "wlan" "WLAN" "nc-link:green:wlan" "phy0tpt" ;; +som9331) + ucidef_set_led_netdev "wan" "WAN" "som9331:orange:wan" "eth1" + ucidef_set_led_switch "lan1" "LAN1" "som9331:orange:lan1" "switch0" "0x08" + ucidef_set_led_switch "lan2" "LAN2" "som9331:orange:lan2" "switch0" "0x02" + ucidef_set_led_wlan "wlan" "WLAN" "som9331:red:wlan" "phy0tpt" + ucidef_set_led_usbdev "usb" "USB" "som9331:green:system" "1-1" + ;; + tew-712br) ucidef_set_led_netdev "wan" "WAN" "trendnet:green:wan" "eth1" ucidef_set_led_switch "lan1" "LAN1" "trendnet:green:lan1" "switch0" "0x02" diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network index b2e15bb..165a68a 100755 --- a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network @@ -425,6 +425,7 @@ oolite |\ qihoo-c301 |\ rb-750 |\ rb-751 |\ +som9331 |\ tew-632brp |\ tew-712br |\ tew-732br |\ diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index dab4d2c..d9158dc 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -686,6 +686,9 @@ ar71xx_board_detect() { "Smart Electronics Black Swift board"*) name="bsb" ;; + *SOM9331) + name="som9331" + ;; *TEW-632BRP) name="tew-632brp" ;; diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index d025632..e5bfb1b 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -317,6 +317,7 @@ platform_check_image() { onion-omega | \ oolite | \ smart-300 | \ + som9331 | \ tl-mr10u | \ tl-mr11u | \ tl-mr12u | \ diff --git a/target/linux/ar71xx/config-3.18 b/target/linux/ar71xx/config-3.18 index e2ff826..4fe40ab 100644 --- a/target/linux/ar71xx/config-3.18 +++ b/target/linux/ar71xx/config-3.18 @@ -105,6 +105,7 @@ CONFIG_ATH79_MACH_R6100=y # CONFIG_ATH79_MACH_RBSXTLITE is not set CONFIG_ATH79_MACH_RW2458N=y CONFIG_ATH79_MACH_SMART_300=y +CONFIG_ATH79_MACH_SOM9331=y CONFIG_ATH79_MACH_TEW_632BRP=y CONFIG_ATH79_MACH_TEW_673GRU=y CONFIG_ATH79_MACH_TEW_712BR=y diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-som9331.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-som9331.c new file mode 100644 index 0000000..eef5bce --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-som9331.c @@ -0,0 +1,125 @@ +/* + * OpenEmbed SOM9331 board support + * + * Copyright (C) 2011 dongyuqi <729650915 at qq.com> + * Copyright (C) 2011-2012 Gabor Juhos <juhosg at openwrt.org> + * + * 5/27/2016 - Modified by Allan Nick Pedrana <nik9993 at gmail.com> + * + * 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-usb.h" +#include "dev-wmac.h" +#include "machtypes.h" + +#define SOM9331_GPIO_LED_WLAN 27 +#define SOM9331_GPIO_LED_SYSTEM 0 +#define SOM9331_GPIO_LED_2 13 +#define SOM9331_GPIO_LED_3 14 +#define SOM9331_GPIO_LED_5 16 +#define SOM9331_GPIO_LED_WAN SOM9331_GPIO_LED_2 +#define SOM9331_GPIO_LED_LAN1 SOM9331_GPIO_LED_3 +#define SOM9331_GPIO_LED_LAN2 SOM9331_GPIO_LED_5 +#define SOM9331_GPIO_BTN_RESET 11 + +#define SOM9331_KEYS_POLL_INTERVAL 20 /* msecs */ +#define SOM9331_KEYS_DEBOUNCE_INTERVAL (3 * SOM9331_KEYS_POLL_INTERVAL) + +static const char *som9331_part_probes[] = { + "tp-link", + NULL, +}; + +static struct flash_platform_data som9331_flash_data = { + .part_probes = som9331_part_probes, +}; + +static struct gpio_led som9331_leds_gpio[] __initdata = { + { + .name = "som9331:red:wlan", + .gpio = SOM9331_GPIO_LED_WLAN, + .active_low = 1, + }, + { + .name = "som9331:orange:wan", + .gpio = SOM9331_GPIO_LED_WAN, + .active_low = 0, + }, + { + .name = "som9331:orange:lan1", + .gpio = SOM9331_GPIO_LED_LAN1, + .active_low = 0, + }, + { + .name = "som9331:orange:lan2", + .gpio = SOM9331_GPIO_LED_LAN2, + .active_low = 0, + }, + { + .name = "som9331:blue:system", + .gpio = SOM9331_GPIO_LED_SYSTEM, + .active_low = 0, + }, +}; + +static struct gpio_keys_button som9331_gpio_keys[] __initdata = { + { + .desc = "reset", + .type = EV_KEY, + .code = KEY_RESTART, + .debounce_interval = SOM9331_KEYS_DEBOUNCE_INTERVAL, + .gpio = SOM9331_GPIO_BTN_RESET, + .active_low = 0, + } +}; + +static void __init som9331_setup(void) +{ + u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00); + u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000); + + ath79_setup_ar933x_phy4_switch(true, true); + + ath79_gpio_function_disable(AR933X_GPIO_FUNC_ETH_SWITCH_LED0_EN | + AR933X_GPIO_FUNC_ETH_SWITCH_LED1_EN | + AR933X_GPIO_FUNC_ETH_SWITCH_LED2_EN | + AR933X_GPIO_FUNC_ETH_SWITCH_LED3_EN | + AR933X_GPIO_FUNC_ETH_SWITCH_LED4_EN); + + ath79_register_m25p80(&som9331_flash_data); + ath79_register_leds_gpio(-1, ARRAY_SIZE(som9331_leds_gpio), + som9331_leds_gpio); + ath79_register_gpio_keys_polled(-1, SOM9331_KEYS_POLL_INTERVAL, + ARRAY_SIZE(som9331_gpio_keys), + som9331_gpio_keys); + + ath79_register_usb(); + + ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0); + ath79_init_mac(ath79_eth1_data.mac_addr, mac, -1); + + ath79_register_mdio(0, 0x0); + + /* LAN ports */ + ath79_register_eth(1); + + /* WAN port */ + ath79_register_eth(0); + + ath79_register_wmac(ee, mac); +} + +MIPS_MACHINE(ATH79_MACH_SOM9331, "SOM9331", "OpenEmbed SOM9331", som9331_setup); diff --git a/target/linux/ar71xx/generic/profiles/openembed.mk b/target/linux/ar71xx/generic/profiles/openembed.mk new file mode 100644 index 0000000..2603e0a --- /dev/null +++ b/target/linux/ar71xx/generic/profiles/openembed.mk @@ -0,0 +1,13 @@ +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. + +define Profile/SOM9331 + NAME:=OpenEmbed SOM9331 + 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/SOM9331/Description + Package set optimized for the OpenEmbed SOM9331. +endef +$(eval $(call Profile,SOM9331)) + diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile index 9a7acbd..9052c7e 100644 --- a/target/linux/ar71xx/image/Makefile +++ b/target/linux/ar71xx/image/Makefile @@ -371,6 +371,15 @@ define Device/onion-omega endef TARGET_DEVICES += onion-omega +define Device/som9331 + $(Device/tplink-8mlzma) + BOARDNAME := SOM9331 + DEVICE_PROFILE := SOM9331 + TPLINK_HWID := 0x04800054 + CONSOLE := ttyATH0,115200 +endef +TARGET_DEVICES += som9331 + define Device/tl-mr10u-v1 $(Device/tplink-4mlzma) BOARDNAME := TL-MR10U diff --git a/target/linux/ar71xx/patches-3.18/610-MIPS-ath79-openwrt-machines.patch b/target/linux/ar71xx/patches-3.18/610-MIPS-ath79-openwrt-machines.patch index d6e786d..f8f9534 100644 --- a/target/linux/ar71xx/patches-3.18/610-MIPS-ath79-openwrt-machines.patch +++ b/target/linux/ar71xx/patches-3.18/610-MIPS-ath79-openwrt-machines.patch @@ -1,6 +1,6 @@ --- a/arch/mips/ath79/machtypes.h +++ b/arch/mips/ath79/machtypes.h -@@ -16,22 +16,199 @@ +@@ -16,22 +16,200 @@ enum ath79_mach_type { ATH79_MACH_GENERIC = 0, @@ -105,6 +105,7 @@ + ATH79_MACH_RB_SXTLITE5ND, /* Mikrotik RouterBOARD SXT Lite 5nD */ + ATH79_MACH_RW2458N, /* Redwave RW2458N */ + ATH79_MACH_SMART_300, /* NC-LINK SMART-300 */ ++ ATH79_MACH_SOM9331, /* OpenEmbed SOM9331 */ + ATH79_MACH_TEW_632BRP, /* TRENDnet TEW-632BRP */ + ATH79_MACH_TEW_673GRU, /* TRENDnet TEW-673GRU */ + ATH79_MACH_TEW_712BR, /* TRENDnet TEW-712BR */ @@ -282,7 +283,7 @@ config ATH79_MACH_AP121 bool "Atheros AP121 reference board" select SOC_AR933X -@@ -11,62 +84,1050 @@ config ATH79_MACH_AP121 +@@ -11,62 +84,1060 @@ config ATH79_MACH_AP121 select ATH79_DEV_M25P80 select ATH79_DEV_USB select ATH79_DEV_WMAC @@ -420,6 +421,16 @@ + select ATH79_DEV_USB + select ATH79_DEV_WMAC + ++config ATH79_MACH_SOM9331 ++ bool "SOM9331 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_WHR_HP_G300N + bool "Buffalo WHR-HP-G300N board support" + select SOC_AR724X @@ -1361,7 +1372,7 @@ config ATH79_MACH_UBNT_XM bool "Ubiquiti Networks XM/UniFi boards" -@@ -83,6 +1144,106 @@ config ATH79_MACH_UBNT_XM +@@ -83,6 +1154,106 @@ config ATH79_MACH_UBNT_XM Say 'Y' here if you want your kernel to support the Ubiquiti Networks XM (rev 1.0) board. @@ -1468,7 +1479,7 @@ endmenu config SOC_AR71XX -@@ -124,7 +1285,10 @@ config ATH79_DEV_DSA +@@ -124,7 +1295,10 @@ config ATH79_DEV_DSA config ATH79_DEV_ETH def_bool n @@ -1480,7 +1491,7 @@ def_bool n config ATH79_DEV_GPIO_BUTTONS -@@ -154,6 +1318,11 @@ config ATH79_PCI_ATH9K_FIXUP +@@ -154,6 +1328,11 @@ config ATH79_PCI_ATH9K_FIXUP def_bool n config ATH79_ROUTERBOOT @@ -1494,7 +1505,7 @@ endif --- a/arch/mips/ath79/Makefile +++ b/arch/mips/ath79/Makefile -@@ -38,9 +38,128 @@ obj-$(CONFIG_ATH79_ROUTERBOOT) += route +@@ -38,9 +38,129 @@ obj-$(CONFIG_ATH79_ROUTERBOOT) += route # # Machines # @@ -1565,6 +1576,7 @@ +obj-$(CONFIG_ATH79_MACH_RBSXTLITE) += mach-rbsxtlite.o +obj-$(CONFIG_ATH79_MACH_RW2458N) += mach-rw2458n.o +obj-$(CONFIG_ATH79_MACH_SMART_300) += mach-smart-300.o ++obj-$(CONFIG_ATH79_MACH_SOM9331) += mach-som9331.o +obj-$(CONFIG_ATH79_MACH_TEW_632BRP) += mach-tew-632brp.o +obj-$(CONFIG_ATH79_MACH_TEW_673GRU) += mach-tew-673gru.o +obj-$(CONFIG_ATH79_MACH_TEW_712BR) += mach-tew-712br.o diff --git a/tools/firmware-utils/src/mktplinkfw.c b/tools/firmware-utils/src/mktplinkfw.c index 6df869d..743fb07 100644 --- a/tools/firmware-utils/src/mktplinkfw.c +++ b/tools/firmware-utils/src/mktplinkfw.c @@ -35,6 +35,7 @@ #define HWID_GL_INET_V1 0x08000001 #define HWID_GS_OOLITE_V1 0x3C000101 #define HWID_ONION_OMEGA 0x04700001 +#define HWID_SOM9331 0x04800054 #define HWID_TL_MR10U_V1 0x00100101 #define HWID_TL_MR13U_V1 0x00130101 #define HWID_TL_MR3020_V1 0x30200001 @@ -432,6 +433,11 @@ static struct board_info boards[] = { .hw_rev = 1, .layout_id = "16Mlzma", }, { + .id = "SOM9331", + .hw_id = HWID_SOM9331, + .hw_rev = 1, + .layout_id = "8Mlzma", + }, { .id = "ANTMINER-S1", .hw_id = HWID_ANTMINER_S1, .hw_rev = 1, _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
