aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2010-09-03 18:14:37 +0000
committerGabor Juhos <juhosg@openwrt.org>2010-09-03 18:14:37 +0000
commitb4336a8e2db89f6f1b9d9eee885e63c34e636df1 (patch)
tree2b02d78c88d97378c54888769545f4651463368b
parent2a541325d3db510c2b5aee30dc88c72255a797c0 (diff)
downloadupstream-b4336a8e2db89f6f1b9d9eee885e63c34e636df1.tar.gz
upstream-b4336a8e2db89f6f1b9d9eee885e63c34e636df1.tar.bz2
upstream-b4336a8e2db89f6f1b9d9eee885e63c34e636df1.zip
ar71xx: add support for the Zcomax ZCN-1523H-2-8/5-16 boards
SVN-Revision: 22882
-rwxr-xr-xtarget/linux/ar71xx/base-files/etc/diag.sh3
-rwxr-xr-xtarget/linux/ar71xx/base-files/etc/uci-defaults/zcn-1523h-224
-rwxr-xr-xtarget/linux/ar71xx/base-files/etc/uci-defaults/zcn-1523h-530
-rwxr-xr-xtarget/linux/ar71xx/base-files/lib/ar71xx.sh6
-rwxr-xr-xtarget/linux/ar71xx/base-files/lib/upgrade/platform.sh7
-rw-r--r--target/linux/ar71xx/config-2.6.321
-rw-r--r--target/linux/ar71xx/config-2.6.331
-rw-r--r--target/linux/ar71xx/config-2.6.341
-rw-r--r--target/linux/ar71xx/config-2.6.351
-rw-r--r--target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig10
-rw-r--r--target/linux/ar71xx/files/arch/mips/ar71xx/Makefile1
-rw-r--r--target/linux/ar71xx/files/arch/mips/ar71xx/mach-zcn-1523h.c211
-rw-r--r--target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h2
13 files changed, 297 insertions, 1 deletions
diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh
index 384bf032ca..b1e1d2312b 100755
--- a/target/linux/ar71xx/base-files/etc/diag.sh
+++ b/target/linux/ar71xx/base-files/etc/diag.sh
@@ -108,6 +108,9 @@ get_status_led() {
wzr-hp-g300nh)
status_led="wzr-hp-g300nh:green:router"
;;
+ zcn-1523h-2 | zcn-1523h-5)
+ status_led="zcn-1523h:amber:init"
+ ;;
esac;
}
diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/zcn-1523h-2 b/target/linux/ar71xx/base-files/etc/uci-defaults/zcn-1523h-2
new file mode 100755
index 0000000000..4f77316357
--- /dev/null
+++ b/target/linux/ar71xx/base-files/etc/uci-defaults/zcn-1523h-2
@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# Copyright (C) 2010 OpenWrt.org
+#
+
+. /lib/ar71xx.sh
+
+board=$(ar71xx_board_name)
+
+zcn_set_leds() {
+ uci batch <<EOF
+set system.led_lan1='led'
+set system.led_lan1.name='lan1'
+set system.led_lan1.sysfs='zcn-1523h:green:lan1'
+set system.led_lan1.trigger='netdev'
+set system.led_lan1.dev='eth0'
+set system.led_lan1.mode='link tx rx'
+commit system
+EOF
+}
+
+if [ "${board}" == "zcn-1523h-2" ]; then
+ zcn_set_leds
+fi
diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/zcn-1523h-5 b/target/linux/ar71xx/base-files/etc/uci-defaults/zcn-1523h-5
new file mode 100755
index 0000000000..c62f72f099
--- /dev/null
+++ b/target/linux/ar71xx/base-files/etc/uci-defaults/zcn-1523h-5
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+# Copyright (C) 2010 OpenWrt.org
+#
+
+. /lib/ar71xx.sh
+
+board=$(ar71xx_board_name)
+
+zcn_set_leds() {
+ uci batch <<EOF
+set system.led_lan1='led'
+set system.led_lan1.name='lan1'
+set system.led_lan1.sysfs='zcn-1523h:green:lan1'
+set system.led_lan1.trigger='netdev'
+set system.led_lan1.dev='eth0'
+set system.led_lan1.mode='link tx rx'
+set system.led_lan2='led'
+set system.led_lan2.name='lan2'
+set system.led_lan2.sysfs='zcn-1523h:green:lan2'
+set system.led_lan2.trigger='netdev'
+set system.led_lan2.dev='eth1'
+set system.led_lan2.mode='link tx rx'
+commit system
+EOF
+}
+
+if [ "${board}" == "zcn-1523h-5" ]; then
+ zcn_set_leds
+fi
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index 2a96822628..4b08e93c18 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -121,6 +121,12 @@ ar71xx_board_name() {
*WZR-HP-G300NH)
name="wzr-hp-g300nh"
;;
+ *ZCN-1523H-2)
+ name="zcn-1523h-2"
+ ;;
+ *ZCN-1523H-5)
+ name="zcn-1523h-5"
+ ;;
*)
name="generic"
;;
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index bfa5cc69bd..29aeff42ef 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -96,6 +96,13 @@ platform_check_image() {
}
return 0
;;
+ zcn-1523h-2 | zcn-1523h-5)
+ [ "$magic" != "6873" -a "$magic" != "1985" ] && {
+ echo "Invalid image type."
+ return 1
+ }
+ return 0
+ ;;
routerstation | routerstation-pro | ls-sr71 | pb42 | pb44 | eap7660d )
[ "$magic" != "4349" ] && {
echo "Invalid image. Use *-sysupgrade.bin files on this board"
diff --git a/target/linux/ar71xx/config-2.6.32 b/target/linux/ar71xx/config-2.6.32
index 9e4296b9f5..b3ed8917a3 100644
--- a/target/linux/ar71xx/config-2.6.32
+++ b/target/linux/ar71xx/config-2.6.32
@@ -45,6 +45,7 @@ CONFIG_AR71XX_MACH_WP543=y
CONFIG_AR71XX_MACH_WRT160NL=y
CONFIG_AR71XX_MACH_WRT400N=y
CONFIG_AR71XX_MACH_WZR_HP_G300NH=y
+CONFIG_AR71XX_MACH_ZCN_1523H=y
CONFIG_AR71XX_NVRAM=y
CONFIG_AR71XX_WDT=y
CONFIG_AR8216_PHY=y
diff --git a/target/linux/ar71xx/config-2.6.33 b/target/linux/ar71xx/config-2.6.33
index 5bc478c463..e27fb2a251 100644
--- a/target/linux/ar71xx/config-2.6.33
+++ b/target/linux/ar71xx/config-2.6.33
@@ -45,6 +45,7 @@ CONFIG_AR71XX_MACH_WP543=y
CONFIG_AR71XX_MACH_WRT160NL=y
CONFIG_AR71XX_MACH_WRT400N=y
CONFIG_AR71XX_MACH_WZR_HP_G300NH=y
+CONFIG_AR71XX_MACH_ZCN_1523H=y
CONFIG_AR71XX_NVRAM=y
CONFIG_AR71XX_WDT=y
CONFIG_AR8216_PHY=y
diff --git a/target/linux/ar71xx/config-2.6.34 b/target/linux/ar71xx/config-2.6.34
index 36a8f33020..6632d501df 100644
--- a/target/linux/ar71xx/config-2.6.34
+++ b/target/linux/ar71xx/config-2.6.34
@@ -45,6 +45,7 @@ CONFIG_AR71XX_MACH_WP543=y
CONFIG_AR71XX_MACH_WRT160NL=y
CONFIG_AR71XX_MACH_WRT400N=y
CONFIG_AR71XX_MACH_WZR_HP_G300NH=y
+CONFIG_AR71XX_MACH_ZCN_1523H=y
CONFIG_AR71XX_NVRAM=y
CONFIG_AR71XX_WDT=y
CONFIG_AR8216_PHY=y
diff --git a/target/linux/ar71xx/config-2.6.35 b/target/linux/ar71xx/config-2.6.35
index 36a8f33020..6632d501df 100644
--- a/target/linux/ar71xx/config-2.6.35
+++ b/target/linux/ar71xx/config-2.6.35
@@ -45,6 +45,7 @@ CONFIG_AR71XX_MACH_WP543=y
CONFIG_AR71XX_MACH_WRT160NL=y
CONFIG_AR71XX_MACH_WRT400N=y
CONFIG_AR71XX_MACH_WZR_HP_G300NH=y
+CONFIG_AR71XX_MACH_ZCN_1523H=y
CONFIG_AR71XX_NVRAM=y
CONFIG_AR71XX_WDT=y
CONFIG_AR8216_PHY=y
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig b/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig
index 984222fff0..bae7274214 100644
--- a/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig
+++ b/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig
@@ -177,7 +177,7 @@ config AR71XX_MACH_TL_WA901ND
select AR71XX_DEV_GPIO_BUTTONS
select AR71XX_DEV_LEDS_GPIO
default n
-
+
config AR71XX_MACH_TL_WR741ND
bool "TP-LINK TL-WR741ND support"
select AR71XX_DEV_M25P80
@@ -240,6 +240,14 @@ config AR71XX_MACH_EAP7660D
select AR71XX_DEV_LEDS_GPIO
default n
+config AR71XX_MACH_ZCN_1523H
+ bool "Zcomax ZCN-1523H support"
+ select AR71XX_DEV_M25P80
+ select AR71XX_DEV_AP91_PCI if PCI
+ select AR71XX_DEV_GPIO_BUTTONS
+ select AR71XX_DEV_LEDS_GPIO
+ default n
+
endmenu
config AR71XX_DEV_M25P80
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile b/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile
index 3c73291805..b9c368e1ab 100644
--- a/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile
+++ b/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile
@@ -55,3 +55,4 @@ obj-$(CONFIG_AR71XX_MACH_WP543) += mach-wp543.o
obj-$(CONFIG_AR71XX_MACH_WRT160NL) += mach-wrt160nl.o
obj-$(CONFIG_AR71XX_MACH_WRT400N) += mach-wrt400n.o
obj-$(CONFIG_AR71XX_MACH_WZR_HP_G300NH) += mach-wzr-hp-g300nh.o
+obj-$(CONFIG_AR71XX_MACH_ZCN_1523H) += mach-zcn-1523h.o
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-zcn-1523h.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-zcn-1523h.c
new file mode 100644
index 0000000000..b65e13291f
--- /dev/null
+++ b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-zcn-1523h.c
@@ -0,0 +1,211 @@
+/*
+ * Zcomax ZCN-1523H-2-8/5-16 board support
+ *
+ * Copyright (C) 2010 Gabor Juhos <juhosg@openwrt.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/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+
+#include <asm/mach-ar71xx/ar71xx.h>
+
+#include "machtype.h"
+#include "devices.h"
+#include "dev-m25p80.h"
+#include "dev-ap91-pci.h"
+#include "dev-gpio-buttons.h"
+#include "dev-leds-gpio.h"
+
+#define ZCN_1523H_GPIO_BTN_RESET 0
+#define ZCN_1523H_GPIO_LED_INIT 11
+#define ZCN_1523H_GPIO_LED_LAN1 17
+
+#define ZCN_1523H_2_GPIO_LED_WEAK 13
+#define ZCN_1523H_2_GPIO_LED_MEDIUM 14
+#define ZCN_1523H_2_GPIO_LED_STRONG 15
+
+#define ZCN_1523H_5_GPIO_LED_UNKNOWN 1
+#define ZCN_1523H_5_GPIO_LED_LAN2 13
+#define ZCN_1523H_5_GPIO_LED_WEAK 14
+#define ZCN_1523H_5_GPIO_LED_MEDIUM 15
+#define ZCN_1523H_5_GPIO_LED_STRONG 16
+
+#define ZCN_1523H_BUTTONS_POLL_INTERVAL 20
+
+#ifdef CONFIG_MTD_PARTITIONS
+static struct mtd_partition zcn_1523h_partitions[] = {
+ {
+ .name = "u-boot",
+ .offset = 0,
+ .size = 0x040000,
+ .mask_flags = MTD_WRITEABLE,
+ } , {
+ .name = "u-boot-env",
+ .offset = 0x040000,
+ .size = 0x010000,
+ .mask_flags = MTD_WRITEABLE,
+ } , {
+ .name = "rootfs",
+ .offset = 0x050000,
+ .size = 0x610000,
+ } , {
+ .name = "kernel",
+ .offset = 0x660000,
+ .size = 0x170000,
+ } , {
+ .name = "configure",
+ .offset = 0x7d0000,
+ .size = 0x010000,
+ .mask_flags = MTD_WRITEABLE,
+ } , {
+ .name = "mfg",
+ .offset = 0x7e0000,
+ .size = 0x010000,
+ .mask_flags = MTD_WRITEABLE,
+ } , {
+ .name = "eeprom",
+ .offset = 0x7f0000,
+ .size = 0x010000,
+ .mask_flags = MTD_WRITEABLE,
+ } , {
+ .name = "firmware",
+ .offset = 0x050000,
+ .size = 0x780000,
+ }
+};
+#endif /* CONFIG_MTD_PARTITIONS */
+
+static struct flash_platform_data zcn_1523h_flash_data = {
+#ifdef CONFIG_MTD_PARTITIONS
+ .parts = zcn_1523h_partitions,
+ .nr_parts = ARRAY_SIZE(zcn_1523h_partitions),
+#endif
+};
+
+static struct gpio_button zcn_1523h_gpio_buttons[] __initdata = {
+ {
+ .desc = "reset",
+ .type = EV_KEY,
+ .code = KEY_RESTART,
+ .threshold = 3,
+ .gpio = ZCN_1523H_GPIO_BTN_RESET,
+ .active_low = 1,
+ }
+};
+
+static struct gpio_led zcn_1523h_leds_gpio[] __initdata = {
+ {
+ .name = "zcn-1523h:amber:init",
+ .gpio = ZCN_1523H_GPIO_LED_INIT,
+ .active_low = 1,
+ }, {
+ .name = "zcn-1523h:green:lan1",
+ .gpio = ZCN_1523H_GPIO_LED_LAN1,
+ .active_low = 1,
+ }
+};
+
+static struct gpio_led zcn_1523h_2_leds_gpio[] __initdata = {
+ {
+ .name = "zcn-1523h:red:weak",
+ .gpio = ZCN_1523H_2_GPIO_LED_WEAK,
+ .active_low = 1,
+ }, {
+ .name = "zcn-1523h:amber:medium",
+ .gpio = ZCN_1523H_2_GPIO_LED_MEDIUM,
+ .active_low = 1,
+ }, {
+ .name = "zcn-1523h:green:strong",
+ .gpio = ZCN_1523H_2_GPIO_LED_STRONG,
+ .active_low = 1,
+ }
+};
+
+static struct gpio_led zcn_1523h_5_leds_gpio[] __initdata = {
+ {
+ .name = "zcn-1523h:red:weak",
+ .gpio = ZCN_1523H_5_GPIO_LED_WEAK,
+ .active_low = 1,
+ }, {
+ .name = "zcn-1523h:amber:medium",
+ .gpio = ZCN_1523H_5_GPIO_LED_MEDIUM,
+ .active_low = 1,
+ }, {
+ .name = "zcn-1523h:green:strong",
+ .gpio = ZCN_1523H_5_GPIO_LED_STRONG,
+ .active_low = 1,
+ }, {
+ .name = "zcn-1523h:green:lan2",
+ .gpio = ZCN_1523H_5_GPIO_LED_LAN2,
+ .active_low = 1,
+ }, {
+ .name = "zcn-1523h:amber:unknown",
+ .gpio = ZCN_1523H_5_GPIO_LED_UNKNOWN,
+ }
+};
+
+static void __init zcn_1523h_generic_setup(void)
+{
+ u8 *mac = (u8 *) KSEG1ADDR(0x1f7e0004);
+ u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
+
+ ar71xx_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);
+
+ ar71xx_add_device_m25p80(&zcn_1523h_flash_data);
+
+ ar71xx_add_device_leds_gpio(0, ARRAY_SIZE(zcn_1523h_leds_gpio),
+ zcn_1523h_leds_gpio);
+
+ ar71xx_add_device_gpio_buttons(-1, ZCN_1523H_BUTTONS_POLL_INTERVAL,
+ ARRAY_SIZE(zcn_1523h_gpio_buttons),
+ zcn_1523h_gpio_buttons);
+
+ ap91_pci_init(ee, mac);
+
+ ar71xx_init_mac(ar71xx_eth0_data.mac_addr, mac, 0);
+ ar71xx_init_mac(ar71xx_eth1_data.mac_addr, mac, 1);
+
+ /* LAN1 port */
+ ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
+ ar71xx_eth0_data.speed = SPEED_100;
+ ar71xx_eth0_data.duplex = DUPLEX_FULL;
+
+ /* LAN2 port */
+ ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
+ ar71xx_eth1_data.speed = SPEED_1000;
+ ar71xx_eth1_data.duplex = DUPLEX_FULL;
+
+ ar71xx_add_device_mdio(0x0);
+ ar71xx_add_device_eth(0);
+}
+
+static void __init zcn_1523h_2_setup(void)
+{
+ zcn_1523h_generic_setup();
+
+ ar71xx_add_device_leds_gpio(1, ARRAY_SIZE(zcn_1523h_2_leds_gpio),
+ zcn_1523h_2_leds_gpio);
+}
+
+MIPS_MACHINE(AR71XX_MACH_ZCN_1523H_2, "ZCN-1523H-2", "Zcomax ZCN-1523H-2",
+ zcn_1523h_2_setup);
+
+static void __init zcn_1523h_5_setup(void)
+{
+ zcn_1523h_generic_setup();
+
+ ar71xx_add_device_leds_gpio(1, ARRAY_SIZE(zcn_1523h_5_leds_gpio),
+ zcn_1523h_5_leds_gpio);
+ ar71xx_add_device_eth(1);
+}
+
+MIPS_MACHINE(AR71XX_MACH_ZCN_1523H_5, "ZCN-1523H-5", "Zcomax ZCN-1523H-5",
+ zcn_1523h_5_setup);
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h b/target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h
index b9114a884b..b530abfe41 100644
--- a/target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h
+++ b/target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h
@@ -56,6 +56,8 @@ enum ar71xx_mach_type {
AR71XX_MACH_WRT400N, /* Linksys WRT400N */
AR71XX_MACH_WZR_HP_G300NH, /* Buffalo WZR-HP-G300NH */
AR71XX_MACH_EAP7660D, /* Senao EAP7660D */
+ AR71XX_MACH_ZCN_1523H_2, /* Zcomax ZCN-1523H-2-xx */
+ AR71XX_MACH_ZCN_1523H_5, /* Zcomax ZCN-1523H-5-xx */
};
#endif /* _AR71XX_MACHTYPE_H */