From bbc86587e41891c62a31926f187838aaeff67709 Mon Sep 17 00:00:00 2001 From: Alexander Couzens Date: Tue, 10 Feb 2015 14:46:32 +0100 Subject: [PATCH] add sysmocom devices SOB-AP1 SOB-JB02 --- .../base-files/etc/uci-defaults/01_leds | 6 + target/linux/ar71xx/base-files/lib/ar71xx.sh | 6 + target/linux/ar71xx/config-3.10 | 2 + .../files/arch/mips/ath79/mach-sysmocom.c | 114 ++++++++++++++++++ .../linux/ar71xx/generic/profiles/sysmocom.mk | 28 +++++ target/linux/ar71xx/image/Makefile | 2 + .../ar71xx/patches-3.10/999-sysmocom.patch | 44 +++++++ 7 files changed, 202 insertions(+) create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-sysmocom.c create mode 100644 target/linux/ar71xx/generic/profiles/sysmocom.mk create mode 100644 target/linux/ar71xx/patches-3.10/999-sysmocom.patch 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 0d085be..f51049f 100755 --- a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds @@ -206,6 +206,12 @@ smart-300) ucidef_set_led_wlan "wlan" "WLAN" "nc-link:green:wlan" "phy0tpt" ;; +sysmocom-sob-ap1 | \ +sysmocom-sob-jb02) + ucidef_set_led_netdev "lan" "LAN" "sysmocom:orange:eth0" "eth0" + ucidef_set_led_wlan "wlan" "WLAN" "sysmocom:orange:wlan" "phy0tpt" + ;; + 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/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index df35775..ed4fb81 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -745,6 +745,12 @@ ar71xx_board_detect() { *"HiWiFi HC6361") name="hiwifi-hc6361" ;; + *"sysmocom SOB-AP1") + name="sysmocom-sob-ap1" + ;; + *"sysmocom SOB-JB02") + name="sysmocom-sob-jb02" + ;; esac case "$machine" in diff --git a/target/linux/ar71xx/config-3.10 b/target/linux/ar71xx/config-3.10 index 482914a..9f232eb 100644 --- a/target/linux/ar71xx/config-3.10 +++ b/target/linux/ar71xx/config-3.10 @@ -80,6 +80,8 @@ CONFIG_ATH79_MACH_PB92=y # CONFIG_ATH79_MACH_RBSXTLITE is not set CONFIG_ATH79_MACH_RW2458N=y CONFIG_ATH79_MACH_SMART_300=y +CONFIG_ATH79_MACH_SYSMOCOM_SOB_AP1=y +CONFIG_ATH79_MACH_SYSMOCOM_SOB_JB02=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-sysmocom.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-sysmocom.c new file mode 100644 index 0000000..fc7707b --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-sysmocom.c @@ -0,0 +1,114 @@ +/* + * sysmocom devices + * + * Copyright (C) 2015 Alexander Couzens + * + * 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-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 SYSMOCOM_GPIO_LED_WLAN 0 +#define SYSMOCOM_GPIO_LED_ETH0 13 +#define SYSMOCOM_GPIO_LED_PSE 15 + +#define SYSMOCOM_MAC0_OFFSET 0x0000 +#define SYSMOCOM_MAC1_OFFSET 0x0006 +#define SYSMOCOM_CALDATA_OFFSET 0x1000 +#define SYSMOCOM_WMAC_MAC_OFFSET 0x1002 + +static struct gpio_led sysmocom_sob_ap1_leds_gpio[] __initdata = { + { + .name = "sysmocom:orange:wlan", + .gpio = SYSMOCOM_GPIO_LED_WLAN, + .active_low = 0, + }, { + .name = "sysmocom:orange:eth0", + .gpio = SYSMOCOM_GPIO_LED_ETH0, + .active_low = 0, + }, { + .name = "sysmocom:red:pse", + .gpio = SYSMOCOM_GPIO_LED_PSE, + .active_low = 0, + } +}; + +static struct gpio_led sysmocom_sob_jb02_leds_gpio[] __initdata = { + { + .name = "sysmocom:orange:wlan", + .gpio = SYSMOCOM_GPIO_LED_WLAN, + .active_low = 0, + }, { + .name = "sysmocom:orange:eth0", + .gpio = SYSMOCOM_GPIO_LED_ETH0, + .active_low = 0, + } +}; + + +static void __init sysmocom_common_setup(void) +{ + u8 *art = (u8 *) KSEG1ADDR(0x1fff0000); + + ath79_register_m25p80(NULL); + ath79_register_wmac(art + SYSMOCOM_CALDATA_OFFSET, + art + SYSMOCOM_WMAC_MAC_OFFSET); + + ath79_setup_ar933x_phy4_switch(false, false); + + ath79_init_mac(ath79_eth0_data.mac_addr, art + SYSMOCOM_MAC0_OFFSET, 0); + + ath79_register_mdio(0, 0x0); + + /* WAN port */ + ath79_register_eth(0); +} + +static void __init sysmocom_sob_ap1_setup(void) +{ + sysmocom_common_setup(); + + ath79_gpio_function_disable(AR724X_GPIO_FUNC_ETH_SWITCH_LED0_EN | + AR724X_GPIO_FUNC_ETH_SWITCH_LED1_EN | + AR724X_GPIO_FUNC_ETH_SWITCH_LED2_EN | + AR724X_GPIO_FUNC_ETH_SWITCH_LED3_EN | + AR724X_GPIO_FUNC_ETH_SWITCH_LED4_EN); + + ath79_register_leds_gpio(-1, ARRAY_SIZE(sysmocom_sob_ap1_leds_gpio), + sysmocom_sob_ap1_leds_gpio); + ath79_register_usb(); +} + +static void __init sysmocom_sob_jb02_setup(void) +{ + sysmocom_common_setup(); + + ath79_gpio_function_disable(AR724X_GPIO_FUNC_ETH_SWITCH_LED0_EN | + AR724X_GPIO_FUNC_ETH_SWITCH_LED1_EN | + AR724X_GPIO_FUNC_ETH_SWITCH_LED2_EN | + AR724X_GPIO_FUNC_ETH_SWITCH_LED3_EN | + AR724X_GPIO_FUNC_ETH_SWITCH_LED4_EN); + + ath79_register_leds_gpio(-1, ARRAY_SIZE(sysmocom_sob_jb02_leds_gpio), + sysmocom_sob_jb02_leds_gpio); + ath79_register_usb(); +} + +MIPS_MACHINE(ATH79_MACH_ATH79_MACH_SYSMOCOM_AP1, "SYSMOSOBAP1", "sysmocom SOB-AP1", + sysmocom_sob_ap1_setup); + +MIPS_MACHINE(ATH79_MACH_ATH79_MACH_SYSMOCOM_JB02, "SYSMOSOBJB02", "sysmocom SOB-JB02", + sysmocom_setup); + diff --git a/target/linux/ar71xx/generic/profiles/sysmocom.mk b/target/linux/ar71xx/generic/profiles/sysmocom.mk new file mode 100644 index 0000000..d2399f2 --- /dev/null +++ b/target/linux/ar71xx/generic/profiles/sysmocom.mk @@ -0,0 +1,28 @@ +# +# Copyright (C) 2015 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +define Profile/SYSMOSOBAP1 + NAME:=sysmocom SOB-AP1 board + PACKAGES:=kmod-usb-core kmod-usb2 +endef + +define Profile/SYSMOSOBAP1/Description + Package set for sysmoSOB-AP +endef + +$(eval $(call Profile,SYSMOSOBAP1)) + +define Profile/SYSMOSOBJB02 + NAME:=sysmocom SOB-JB02 board + PACKAGES:=kmod-usb-core kmod-usb2 +endef + +define Profile/SYSMOSOBJB02/Description + Package set for sysmoSOB JB02 +endef + +$(eval $(call Profile,SYSMOSOBJB02)) diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile index 425fcc5..519ded8 100644 --- a/target/linux/ar71xx/image/Makefile +++ b/target/linux/ar71xx/image/Makefile @@ -1067,6 +1067,8 @@ $(eval $(call SingleProfile,AthLzma,64k,AP113,ap113,AP113,ttyS0,115200,$$(ap113_ $(eval $(call SingleProfile,AthLzma,64k,AP121_2M,ap121-2M,AP121,ttyATH0,115200,$$(ap121_mtdlayout_2M),RKuImage)) $(eval $(call SingleProfile,AthLzma,64k,AP121_4M,ap121-4M,AP121,ttyATH0,115200,$$(ap121_mtdlayout_4M),RKuImage)) $(eval $(call SingleProfile,AthLzma,64k,CARAMBOLA2,carambola2,CARAMBOLA2,ttyATH0,115200,$$(carambola2_mtdlayout_16M),KRuImage,65536)) +$(eval $(call SingleProfile,AthLzma,64k,SYSMOSOBAP1,sysmo-sob-ap1,SYSMOSOBAP1,ttyATH0,115200,$$(carambola2_mtdlayout_16M),KRuImage,65536)) +$(eval $(call SingleProfile,AthLzma,64k,SYSMOSOBJB02,sysmo-sob-jb02,SYSMOSOBJB02,ttyATH0,115200,$$(carambola2_mtdlayout_16M),KRuImage,65536)) $(eval $(call SingleProfile,AthLzma,64k,AP121MINI,ap121-mini,AP121-MINI,ttyATH0,115200,$$(ap121_mtdlayout_4M),RKuImage)) $(eval $(call SingleProfile,AthLzma,64k,AP132,ap132,AP132,ttyS0,115200,$$(ap132_mtdlayout),KRuImage)) $(eval $(call SingleProfile,AthLzma,64k,AP135,ap135-020,AP135-020,ttyS0,115200,$$(ap135_mtdlayout),RKuImage)) diff --git a/target/linux/ar71xx/patches-3.10/999-sysmocom.patch b/target/linux/ar71xx/patches-3.10/999-sysmocom.patch new file mode 100644 index 0000000..d9b447e --- /dev/null +++ b/target/linux/ar71xx/patches-3.10/999-sysmocom.patch @@ -0,0 +1,44 @@ +Index: linux-3.10.49/arch/mips/ath79/machtypes.h +=================================================================== +--- linux-3.10.49.orig/arch/mips/ath79/machtypes.h ++++ linux-3.10.49/arch/mips/ath79/machtypes.h +@@ -103,6 +103,8 @@ enum ath79_mach_type { + ATH79_MACH_RB_SXTLITE2ND, /* Mikrotik RouterBOARD SXT Lite 2nD */ + ATH79_MACH_RB_SXTLITE5ND, /* Mikrotik RouterBOARD SXT Lite 5nD */ + ATH79_MACH_RW2458N, /* Redwave RW2458N */ ++ ATH79_MACH_SYSMOCOM_SOB_JB02, /* sysmocom SOB-JB02 */ ++ ATH79_MACH_SYSMOCOM_SOB_AP1, /* sysmocom SOB-AP */ + ATH79_MACH_SMART_300, /* NC-LINK SMART-300 */ + ATH79_MACH_TEW_632BRP, /* TRENDnet TEW-632BRP */ + ATH79_MACH_TEW_673GRU, /* TRENDnet TEW-673GRU */ +Index: linux-3.10.49/arch/mips/ath79/Kconfig +=================================================================== +--- linux-3.10.49.orig/arch/mips/ath79/Kconfig ++++ linux-3.10.49/arch/mips/ath79/Kconfig +@@ -1034,6 +1034,26 @@ config ATH79_MACH_CARAMBOLA2 + select ATH79_DEV_USB + select ATH79_DEV_WMAC + ++config ATH79_MACH_SYSMOCOM_SOB_JB02 ++ bool "sysmocom SOB JB02" ++ 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_SYSMOCOM_SOB_AP1 ++ bool "sysmocom SOB SOB AP" ++ 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_BHU_BXU2000N2_A + bool "BHU BXU2000n-2 rev. A support" + select SOC_AR934X