From 9996947de44a9bdd1af596b715aca0172bb16c84 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 19 Jun 2012 00:22:04 +0000 Subject: [PATCH] ar71xx: add support for the embeddedwireless Dorin board (based on patch by embeddedwireless.de) SVN-Revision: 32447 --- .../base-files/etc/uci-defaults/network | 6 + target/linux/ar71xx/base-files/lib/ar71xx.sh | 3 + .../ar71xx/base-files/lib/upgrade/platform.sh | 1 + target/linux/ar71xx/config-3.3 | 1 + .../files/arch/mips/ath79/mach-ew-dorin.c | 108 ++++++++++++++++++ target/linux/ar71xx/generic/profiles/ew.mk | 18 +++ target/linux/ar71xx/image/Makefile | 7 ++ .../616-MIPS-ath79-EW_Dorin-support.patch | 41 +++++++ 8 files changed, 185 insertions(+) create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-ew-dorin.c create mode 100644 target/linux/ar71xx/generic/profiles/ew.mk create mode 100644 target/linux/ar71xx/patches-3.3/616-MIPS-ath79-EW_Dorin-support.patch diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/network b/target/linux/ar71xx/base-files/etc/uci-defaults/network index 3fbb9fccaa..993e024782 100755 --- a/target/linux/ar71xx/base-files/etc/uci-defaults/network +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/network @@ -184,6 +184,12 @@ wzr-hp-g450h) ucidef_add_switch_vlan "eth0" "2" "0t 1" ;; +ew-dorin) + ucidef_set_interfaces_lan_wan "eth0" "eth1" + ucidef_add_switch "eth0" "1" "1" + ucidef_add_switch_vlan "eth0" "1" "0 2 3" + ;; + *) ucidef_set_interfaces_lan_wan "eth0" "eth1" ;; diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index ddeee3e775..e4a92af75e 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -376,6 +376,9 @@ ar71xx_board_detect() { *ZCN-1523H-5) name="zcn-1523h-5" ;; + *EmbWir-Dorin) + name="ew-dorin" + ;; esac case "$machine" in diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index a3295ed5fc..10ba6f8542 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -93,6 +93,7 @@ platform_check_image() { } return 0 ;; + ew-dorin | \ ap81 | \ ap83 | \ dir-600-a1 | \ diff --git a/target/linux/ar71xx/config-3.3 b/target/linux/ar71xx/config-3.3 index fb484b09bf..2978d4c416 100644 --- a/target/linux/ar71xx/config-3.3 +++ b/target/linux/ar71xx/config-3.3 @@ -32,6 +32,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_EAP7660D=y +CONFIG_ATH79_MACH_EW_DORIN=y CONFIG_ATH79_MACH_HORNET_UB=y CONFIG_ATH79_MACH_JA76PF=y CONFIG_ATH79_MACH_JWAP003=y diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-ew-dorin.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-ew-dorin.c new file mode 100644 index 0000000000..dc052c4868 --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-ew-dorin.c @@ -0,0 +1,108 @@ +/* + * EW Dorin board support + * (based on Atheros Ref. Design AP121) + * Copyright (C) 2011-2012 Gabor Juhos + * Copyright (C) 2012 Embedded Wireless GmbH www.80211.de + * + * 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 "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 DORIN_KEYS_POLL_INTERVAL 20 /* msecs */ +#define DORIN_KEYS_DEBOUNCE_INTERVAL (3 * DORIN_KEYS_POLL_INTERVAL) + +#define DORIN_CALDATA_OFFSET 0x1000 +#define DORIN_WMAC_MAC_OFFSET 0x1002 + +#define DORIN_GPIO_LED_21 21 +#define DORIN_GPIO_LED_22 22 + +#define DORIN_GPIO_BTN_JUMPSTART 11 +#define DORIN_GPIO_BTN_RESET 6 + +static struct gpio_led dorin_leds_gpio[] __initdata = { + { + .name = "dorin:green:led21", + .gpio = DORIN_GPIO_LED_21, + .active_low = 1, + }, + { + .name = "dorin:green:led22", + .gpio = DORIN_GPIO_LED_22, + .active_low = 1, + }, +}; + +static struct gpio_keys_button dorin_gpio_keys[] __initdata = { + { + .desc = "jumpstart button", + .type = EV_KEY, + .code = KEY_WPS_BUTTON, + .debounce_interval = DORIN_KEYS_DEBOUNCE_INTERVAL, + .gpio = DORIN_GPIO_BTN_JUMPSTART, + .active_low = 1, + }, + { + .desc = "reset button", + .type = EV_KEY, + .code = KEY_RESTART, + .debounce_interval = DORIN_KEYS_DEBOUNCE_INTERVAL, + .gpio = DORIN_GPIO_BTN_RESET, + .active_low = 0, + } +}; + +static void __init ew_dorin_setup(void) +{ + u8 *art = (u8 *) KSEG1ADDR(0x1fff0000); + static u8 mac[6]; + + ath79_register_m25p80(NULL); + + ath79_register_usb(); + + if (ar93xx_wmac_read_mac_address(mac)) { + ath79_register_wmac(NULL, NULL); + } else { + ath79_register_wmac(art + DORIN_CALDATA_OFFSET, + art + DORIN_WMAC_MAC_OFFSET); + memcpy(mac, art + DORIN_WMAC_MAC_OFFSET, sizeof(mac)); + } + + mac[3] |= 0x40; + ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0); + + mac[3] &= 0x3F; + ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0); + ath79_setup_ar933x_phy4_switch(true, true); + + ath79_register_mdio(0, 0x0); + + /* LAN ports */ + ath79_register_eth(1); + + /* WAN port */ + ath79_register_eth(0); + + ath79_register_leds_gpio(-1, ARRAY_SIZE(dorin_leds_gpio), + dorin_leds_gpio); + ath79_register_gpio_keys_polled(-1, DORIN_KEYS_POLL_INTERVAL, + ARRAY_SIZE(dorin_gpio_keys), + dorin_gpio_keys); +} + +MIPS_MACHINE(ATH79_MACH_EW_DORIN, "EW-DORIN", "EmbWir-Dorin", + ew_dorin_setup); diff --git a/target/linux/ar71xx/generic/profiles/ew.mk b/target/linux/ar71xx/generic/profiles/ew.mk new file mode 100644 index 0000000000..cb96f82550 --- /dev/null +++ b/target/linux/ar71xx/generic/profiles/ew.mk @@ -0,0 +1,18 @@ +# +# Copyright (C) 2012 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +define Profile/EWDORIN + NAME:=Embedded Wireless Dorin Platform + PACKAGES:= +endef + +define Profile/EWDORIN/Description + Package set optimized for the Dorin Platform. +endef + +$(eval $(call Profile,EWDORIN)) + diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile index 8eed67dc06..0a7d75a3df 100644 --- a/target/linux/ar71xx/image/Makefile +++ b/target/linux/ar71xx/image/Makefile @@ -675,6 +675,12 @@ define Image/Build/Profile/AP121MINI $(call Image/Build/Template/$(fs_64k)/$(1),AthLzma,ap121-mini,$(ap121_mini_cmdline),$(ap121_mtdlayout_4M),917504,2818048,RKuImage) endef +ew-dorin_cmdline=board=EW-DORIN console=ttyATH0,115200 +ew-dorin_mtdlayout_4M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env),896k(kernel),2816k(rootfs),64k(art),3712k@0x50000(firmware) +define Image/Build/Profile/EWDORIN + $(call Image/Build/Template/$(fs_64k)/$(1),AthLzma,ew-dorin,$(ew-dorin_cmdline),$(ew-dorin_mtdlayout_4M),917504,2883584,KRuImage) +endef + ap81_cmdline=board=AP81 console=ttyS0,115200 define Image/Build/Profile/AP81 $(call Image/Build/Template/$(fs_64k)/$(1),AthGzip,ap81,$(ap81_cmdline),,1310720,6619136,KRuImage) @@ -1068,6 +1074,7 @@ define Image/Build/Profile/Default $(call Image/Build/Profile/DIR615E4,$(1)) $(call Image/Build/Profile/DIR825B1,$(1)) $(call Image/Build/Profile/EAP7660D,$(1)) + $(call Image/Build/Profile/EWDORIN,$(1)) $(call Image/Build/Profile/FR54RTR,$(1)) $(call Image/Build/Profile/HORNETUB,$(1)) $(call Image/Build/Profile/JA76PF,$(1)) diff --git a/target/linux/ar71xx/patches-3.3/616-MIPS-ath79-EW_Dorin-support.patch b/target/linux/ar71xx/patches-3.3/616-MIPS-ath79-EW_Dorin-support.patch new file mode 100644 index 0000000000..09a9764b9c --- /dev/null +++ b/target/linux/ar71xx/patches-3.3/616-MIPS-ath79-EW_Dorin-support.patch @@ -0,0 +1,41 @@ +--- a/arch/mips/ath79/Kconfig ++++ b/arch/mips/ath79/Kconfig +@@ -240,6 +240,18 @@ + select ATH79_DEV_M25P80 + select ATH79_DEV_USB + ++config ATH79_MACH_EW_DORIN ++ bool "embedded wireless Dorin Platform 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 ++ help ++ Say 'Y' here if you want your kernel to support the ++ Dorin Platform from www.80211.de . ++ + config ATH79_MACH_JA76PF + bool "jjPlus JA76PF board support" + select SOC_AR71XX +--- a/arch/mips/ath79/machtypes.h ++++ b/arch/mips/ath79/machtypes.h +@@ -32,6 +32,7 @@ + ATH79_MACH_DIR_615_C1, /* D-Link DIR-615 rev. C1 */ + ATH79_MACH_DIR_615_E4, /* D-Link DIR-615 rev. E4 */ + ATH79_MACH_DIR_825_B1, /* D-Link DIR-825 rev. B1 */ ++ ATH79_MACH_EW_DORIN, /* embedded wireless Dorin Platform */ + ATH79_MACH_EAP7660D, /* Senao EAP7660D */ + ATH79_MACH_JA76PF, /* jjPlus JA76PF */ + ATH79_MACH_JA76PF2, /* jjPlus JA76PF2 */ +--- a/arch/mips/ath79/Makefile ++++ b/arch/mips/ath79/Makefile +@@ -49,6 +49,7 @@ + obj-$(CONFIG_ATH79_MACH_DIR_600_A1) += mach-dir-600-a1.o + 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_EW_DORIN) += mach-ew-dorin.o + obj-$(CONFIG_ATH79_MACH_EAP7660D) += mach-eap7660d.o + obj-$(CONFIG_ATH79_MACH_JA76PF) += mach-ja76pf.o + obj-$(CONFIG_ATH79_MACH_JWAP003) += mach-jwap003.o -- 2.30.2