ar71xx: add support for the Zcomax ZCN-1523H-2-8/5-16 boards
authorGabor Juhos <juhosg@openwrt.org>
Fri, 3 Sep 2010 18:14:37 +0000 (18:14 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Fri, 3 Sep 2010 18:14:37 +0000 (18:14 +0000)
SVN-Revision: 22882

13 files changed:
target/linux/ar71xx/base-files/etc/diag.sh
target/linux/ar71xx/base-files/etc/uci-defaults/zcn-1523h-2 [new file with mode: 0755]
target/linux/ar71xx/base-files/etc/uci-defaults/zcn-1523h-5 [new file with mode: 0755]
target/linux/ar71xx/base-files/lib/ar71xx.sh
target/linux/ar71xx/base-files/lib/upgrade/platform.sh
target/linux/ar71xx/config-2.6.32
target/linux/ar71xx/config-2.6.33
target/linux/ar71xx/config-2.6.34
target/linux/ar71xx/config-2.6.35
target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig
target/linux/ar71xx/files/arch/mips/ar71xx/Makefile
target/linux/ar71xx/files/arch/mips/ar71xx/mach-zcn-1523h.c [new file with mode: 0644]
target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h

index 384bf032ca2121b075581397ad2257696a062635..b1e1d2312be68ff23dce6afdc7fa199ed7e6ef86 100755 (executable)
@@ -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 (executable)
index 0000000..4f77316
--- /dev/null
@@ -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 (executable)
index 0000000..c62f72f
--- /dev/null
@@ -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
index 2a96822628d1879296a11cef7b8943ef84b5e691..4b08e93c188437a746a41fad0b24fac4a699fd4b 100755 (executable)
@@ -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"
                ;;
index bfa5cc69bd7a3ba9aa9afa2ba7e752dafc591870..29aeff42ef1640e1a49a818e79a6041a8ab317c5 100755 (executable)
@@ -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"
index 9e4296b9f52ee8a651af772c61dd40f05825dd7b..b3ed8917a331eac221d7cffa80e5e4c3dd3d9cb8 100644 (file)
@@ -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
index 5bc478c463260a7bbfba3ca6e00fd323d78d5b05..e27fb2a251c47e6eece4f8f486d3446211c51741 100644 (file)
@@ -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
index 36a8f33020815ea6c802f897291cdbcfd3bf12ea..6632d501dff4a5f92a42e86684ae21b222b4bc2d 100644 (file)
@@ -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
index 36a8f33020815ea6c802f897291cdbcfd3bf12ea..6632d501dff4a5f92a42e86684ae21b222b4bc2d 100644 (file)
@@ -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
index 984222fff08634af8045d9438b84472d656c1482..bae72742145d8d6580545e64c8b3afea1ab42bbd 100644 (file)
@@ -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
index 3c73291805528f0c36811369d5053d2d55c3a80a..b9c368e1abba72e616a6019919e3ac211e3b2cd2 100644 (file)
@@ -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 (file)
index 0000000..b65e132
--- /dev/null
@@ -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);
index b9114a884b2f38031bc7f69ec703cf2337504f2e..b530abfe411f0035bfb6812860adcfdccdb38c0f 100644 (file)
@@ -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 */