diff options
-rwxr-xr-x | target/linux/ar71xx/base-files/etc/diag.sh | 3 | ||||
-rwxr-xr-x | target/linux/ar71xx/base-files/etc/uci-defaults/zcn-1523h-2 | 24 | ||||
-rwxr-xr-x | target/linux/ar71xx/base-files/etc/uci-defaults/zcn-1523h-5 | 30 | ||||
-rwxr-xr-x | target/linux/ar71xx/base-files/lib/ar71xx.sh | 6 | ||||
-rwxr-xr-x | target/linux/ar71xx/base-files/lib/upgrade/platform.sh | 7 | ||||
-rw-r--r-- | target/linux/ar71xx/config-2.6.32 | 1 | ||||
-rw-r--r-- | target/linux/ar71xx/config-2.6.33 | 1 | ||||
-rw-r--r-- | target/linux/ar71xx/config-2.6.34 | 1 | ||||
-rw-r--r-- | target/linux/ar71xx/config-2.6.35 | 1 | ||||
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig | 10 | ||||
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/ar71xx/Makefile | 1 | ||||
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/ar71xx/mach-zcn-1523h.c | 211 | ||||
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h | 2 |
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 */ |