diff options
author | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-01-11 08:02:10 +0000 |
---|---|---|
committer | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-01-11 08:02:10 +0000 |
commit | 0ab559a23e27f18ef8fbe5d18d0b6971c7f8d6a9 (patch) | |
tree | 61fd2cfabc62b228a69d0c85fc91aba7f7899925 | |
parent | eb55ef86f3319c0f08b72fc8dbac1377c2a1dae2 (diff) |
ar71xx: add support for the D-Link DIR-600 rev. A1 board
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19100 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rwxr-xr-x | target/linux/ar71xx/base-files/etc/diag.sh | 3 | ||||
-rwxr-xr-x | target/linux/ar71xx/base-files/lib/ar71xx.sh | 3 | ||||
-rwxr-xr-x | target/linux/ar71xx/base-files/lib/upgrade/platform.sh | 2 | ||||
-rw-r--r-- | target/linux/ar71xx/config-2.6.30 | 1 | ||||
-rw-r--r-- | target/linux/ar71xx/config-2.6.31 | 1 | ||||
-rw-r--r-- | target/linux/ar71xx/config-2.6.32 | 1 | ||||
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig | 8 | ||||
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/ar71xx/Makefile | 1 | ||||
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/ar71xx/mach-dir-600-a1.c | 150 | ||||
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h | 3 | ||||
-rw-r--r-- | target/linux/ar71xx/image/Makefile | 25 | ||||
-rw-r--r-- | target/linux/ar71xx/profiles/d-link.mk | 12 |
12 files changed, 208 insertions, 2 deletions
diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh index 6e4ed5f6f..1fc2c34fe 100755 --- a/target/linux/ar71xx/base-files/etc/diag.sh +++ b/target/linux/ar71xx/base-files/etc/diag.sh @@ -42,6 +42,9 @@ get_status_led() { bullet-m | rocket-m | nano-m) status_led="ubnt:green:link4" ;; + dir-600-a1) + status_led="dir-600-a1:green:power" + ;; dir-615-c1) status_led="dir-615c1:green:status" ;; diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index 42f41e753..327107b0d 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -19,6 +19,9 @@ ar71xx_board_name() { *AW-NR580) name="aw-nr580" ;; + *"DIR-600 rev. A1") + name="dir-600-a1" + ;; *"DIR-825 rev. B1") name="dir-825-b1" ;; diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index 65ea22312..13a154441 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -68,7 +68,7 @@ platform_check_image() { [ "$ARGC" -gt 1 ] && return 1 case "$board" in - ap81 | ap83 | dir-615-c1 | dir-825-b1 | mzk-w04nu | mzk-w300nh | tew-632brp | wrt-400n | bullet-m | nano-m | rocket-m) + ap81 | ap83 | dir-600-a1 | dir-615-c1 | dir-825-b1 | mzk-w04nu | mzk-w300nh | tew-632brp | wrt-400n | bullet-m | nano-m | rocket-m) [ "$magic" != "2705" ] && { echo "Invalid image type." return 1 diff --git a/target/linux/ar71xx/config-2.6.30 b/target/linux/ar71xx/config-2.6.30 index c309ea4b0..357913468 100644 --- a/target/linux/ar71xx/config-2.6.30 +++ b/target/linux/ar71xx/config-2.6.30 @@ -16,6 +16,7 @@ CONFIG_AR71XX_DEV_USB=y CONFIG_AR71XX_MACH_AP81=y CONFIG_AR71XX_MACH_AP83=y CONFIG_AR71XX_MACH_AW_NR580=y +CONFIG_AR71XX_MACH_DIR_600_A1=y CONFIG_AR71XX_MACH_DIR_615_C1=y CONFIG_AR71XX_MACH_DIR_825_B1=y CONFIG_AR71XX_MACH_GENERIC=y diff --git a/target/linux/ar71xx/config-2.6.31 b/target/linux/ar71xx/config-2.6.31 index 9146217fd..5c9affa74 100644 --- a/target/linux/ar71xx/config-2.6.31 +++ b/target/linux/ar71xx/config-2.6.31 @@ -18,6 +18,7 @@ CONFIG_AR71XX_DEV_USB=y CONFIG_AR71XX_MACH_AP81=y CONFIG_AR71XX_MACH_AP83=y CONFIG_AR71XX_MACH_AW_NR580=y +CONFIG_AR71XX_MACH_DIR_600_A1=y CONFIG_AR71XX_MACH_DIR_615_C1=y CONFIG_AR71XX_MACH_DIR_825_B1=y CONFIG_AR71XX_MACH_GENERIC=y diff --git a/target/linux/ar71xx/config-2.6.32 b/target/linux/ar71xx/config-2.6.32 index 35a846856..a4ac682ef 100644 --- a/target/linux/ar71xx/config-2.6.32 +++ b/target/linux/ar71xx/config-2.6.32 @@ -18,6 +18,7 @@ CONFIG_AR71XX_DEV_USB=y CONFIG_AR71XX_MACH_AP81=y CONFIG_AR71XX_MACH_AP83=y CONFIG_AR71XX_MACH_AW_NR580=y +CONFIG_AR71XX_MACH_DIR_600_A1=y CONFIG_AR71XX_MACH_DIR_615_C1=y CONFIG_AR71XX_MACH_DIR_825_B1=y CONFIG_AR71XX_MACH_GENERIC=y diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig b/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig index e5cf2c788..a9ffcc311 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig @@ -19,6 +19,14 @@ config AR71XX_MACH_AP83 select AR71XX_DEV_USB default n +config AR71XX_MACH_DIR_600_A1 + bool "D-Link DIR-600 rev. A1 support" + select AR71XX_DEV_AP91_PCI if PCI + select AR71XX_DEV_M25P80 + select AR71XX_DEV_GPIO_BUTTONS + select AR71XX_DEV_LEDS_GPIO + default n + config AR71XX_MACH_DIR_615_C1 bool "D-Link DIR-615 rev. C1 support" select AR71XX_DEV_M25P80 diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile b/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile index 3a632f74d..a441dc701 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile @@ -28,6 +28,7 @@ obj-$(CONFIG_AR71XX_NVRAM) += nvram.o obj-$(CONFIG_AR71XX_MACH_AP81) += mach-ap81.o obj-$(CONFIG_AR71XX_MACH_AP83) += mach-ap83.o obj-$(CONFIG_AR71XX_MACH_AW_NR580) += mach-aw-nr580.o +obj-$(CONFIG_AR71XX_MACH_DIR_600_A1) += mach-dir-600-a1.o obj-$(CONFIG_AR71XX_MACH_DIR_615_C1) += mach-dir-615-c1.o obj-$(CONFIG_AR71XX_MACH_DIR_825_B1) += mach-dir-825-b1.o obj-$(CONFIG_AR71XX_MACH_GENERIC) += mach-generic.o diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-dir-600-a1.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-dir-600-a1.c new file mode 100644 index 000000000..d76e9b649 --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-dir-600-a1.c @@ -0,0 +1,150 @@ +/* + * D-Link DIR-600 rev. A1 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 DIR_600_A1_GPIO_LED_WPS 0 +#define DIR_600_A1_GPIO_LED_POWER_AMBER 1 +#define DIR_600_A1_GPIO_LED_POWER_GREEN 6 + +#define DIR_600_A1_GPIO_BTN_RESET 8 +#define DIR_600_A1_GPIO_BTN_WPS 12 + +#define DIR_600_A1_BUTTONS_POLL_INTERVAL 20 + +#ifdef CONFIG_MTD_PARTITIONS +static struct mtd_partition dir_600_a1_partitions[] = { + { + .name = "u-boot", + .offset = 0, + .size = 0x030000, + .mask_flags = MTD_WRITEABLE, + }, { + .name = "nvram", + .offset = 0x030000, + .size = 0x010000, + }, { + .name = "kernel", + .offset = 0x040000, + .size = 0x0e0000, + }, { + .name = "rootfs", + .offset = 0x120000, + .size = 0x2c0000, + }, { + .name = "mac", + .offset = 0x3e0000, + .size = 0x010000, + .mask_flags = MTD_WRITEABLE, + }, { + .name = "art", + .offset = 0x3f0000, + .size = 0x010000, + .mask_flags = MTD_WRITEABLE, + }, { + .name = "firmware", + .offset = 0x040000, + .size = 0x3a0000, + } +}; +#endif /* CONFIG_MTD_PARTITIONS */ + +static struct flash_platform_data dir_600_a1_flash_data = { +#ifdef CONFIG_MTD_PARTITIONS + .parts = dir_600_a1_partitions, + .nr_parts = ARRAY_SIZE(dir_600_a1_partitions), +#endif +}; + +static struct gpio_led dir_600_a1_leds_gpio[] __initdata = { + { + .name = "dir-600-a1:green:power", + .gpio = DIR_600_A1_GPIO_LED_POWER_GREEN, + }, { + .name = "dir-600-a1:amber:power", + .gpio = DIR_600_A1_GPIO_LED_POWER_AMBER, + }, { + .name = "dir-600-a1:blue:wps", + .gpio = DIR_600_A1_GPIO_LED_WPS, + .active_low = 1, + } +}; + +static struct gpio_button dir_600_a1_gpio_buttons[] __initdata = { + { + .desc = "reset", + .type = EV_KEY, + .code = BTN_0, + .threshold = 5, + .gpio = DIR_600_A1_GPIO_BTN_RESET, + .active_low = 1, + }, { + .desc = "wps", + .type = EV_KEY, + .code = BTN_1, + .threshold = 5, + .gpio = DIR_600_A1_GPIO_BTN_WPS, + .active_low = 1, + } +}; + +static void __init dir_600_a1_setup(void) +{ + u8 *mac = (u8 *) KSEG1ADDR(0x1fff0000); + u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000); + + ar71xx_set_mac_base(mac); + ar71xx_add_device_mdio(0x0); + + /* WAN port */ + ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; + ar71xx_eth0_data.phy_mask = 0x0; + ar71xx_eth0_data.speed = SPEED_100; + ar71xx_eth0_data.duplex = DUPLEX_FULL; + ar71xx_eth0_data.fifo_cfg1 = 0x0fff0000; + ar71xx_eth0_data.fifo_cfg2 = 0x00001fff; + ar71xx_eth0_data.fifo_cfg3 = 0x008001ff; + + /* LAN ports */ + ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; + ar71xx_eth1_data.phy_mask = 0x0; + ar71xx_eth1_data.speed = SPEED_1000; + ar71xx_eth1_data.duplex = DUPLEX_FULL; + ar71xx_eth1_data.fifo_cfg1 = 0x0fff0000; + ar71xx_eth1_data.fifo_cfg2 = 0x00001fff; + ar71xx_eth1_data.fifo_cfg3 = 0x008001ff; + + ar71xx_add_device_eth(1); + ar71xx_add_device_eth(0); + + ar71xx_add_device_m25p80(&dir_600_a1_flash_data); + + ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(dir_600_a1_leds_gpio), + dir_600_a1_leds_gpio); + + ar71xx_add_device_gpio_buttons(-1, DIR_600_A1_BUTTONS_POLL_INTERVAL, + ARRAY_SIZE(dir_600_a1_gpio_buttons), + dir_600_a1_gpio_buttons); + + ap91_pci_init(ee, NULL); +} + +MIPS_MACHINE(AR71XX_MACH_DIR_600_A1, "DIR-600-A1", "D-Link DIR-600 rev. A1", + dir_600_a1_setup); diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h b/target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h index 91907f4db..98681c6c9 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h @@ -1,7 +1,7 @@ /* * Atheros AR71xx machine type definitions * - * Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org> + * Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org> * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org> * * This program is free software; you can redistribute it and/or modify it @@ -19,6 +19,7 @@ enum ar71xx_mach_type { AR71XX_MACH_AP81, /* Atheros AP81 */ AR71XX_MACH_AP83, /* Atheros AP83 */ AR71XX_MACH_AW_NR580, /* AzureWave AW-NR580 */ + AR71XX_MACH_DIR_600_A1, /* D-Link DIR-600 rev. A1 */ AR71XX_MACH_DIR_615_C1, /* D-Link DIR-615 rev. C1 */ AR71XX_MACH_DIR_825_B1, /* D-Link DIR-825 rev. B1 */ AR71XX_MACH_RB_411, /* MikroTik RouterBOARD 411/411A/411AH */ diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile index 746f52576..4cc88d477 100644 --- a/target/linux/ar71xx/image/Makefile +++ b/target/linux/ar71xx/image/Makefile @@ -77,6 +77,26 @@ define Image/Build/WRT400N fi; fi endef +dir600a1_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(nvram)ro,896k(kernel),2816k(rootfs),64k(mac)ro,64k(art)ro,3712k@0x40000(firmware) +define Image/Build/DIR600A1 + $(call PatchKernelLzma,$(2),$(3) $(dir600a1_mtdlayout)) + if [ `stat -c%s "$(KDIR)/vmlinux-$(2).bin.lzma"` -gt 917504 ]; then \ + echo "Warning: $(KDIR)/vmlinux-$(2).bin.lzma is too big"; \ + else if [ `stat -c%s $(KDIR)/root.$(1)` -gt 2818048 ]; then \ + echo "Warning: $(KDIR)/root.$(1) is too big"; \ + else \ + mkimage -A mips -O linux -T kernel -a 0x80060000 -C lzma -e \ + 0x80060000 \ + -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \ + -d $(KDIR)/vmlinux-$(2).bin.lzma $(KDIR)/vmlinux-$(2).uImage; \ + ( \ + dd if=$(KDIR)/vmlinux-$(2).uImage bs=896k conv=sync; \ + dd if=$(KDIR)/root.$(1) bs=2752k conv=sync; \ + echo -n "AP91-AR7240-RT-090223-00"; \ + ) > $(call imgname,$(1),$(2))-universal.bin; \ + fi; fi +endef + dir825b1_mtdlayout=mtdparts=spi0.0:256k(uboot)ro,64k(config)ro,1024k(kernel),5184k(rootfs),64k(caldata)ro,1600k(unknown)ro,6208k@0x50000(firmware) define Image/Build/DIR825B1 $(call PatchKernelLzma,$(2),$(3) $(dir825b1_mtdlayout)) @@ -328,6 +348,10 @@ define Image/Build/Profile/WP543 $(call Image/Build/Template/64k/$(1),MyLoader,wp543) endef +define Image/Build/Profile/DIR600A1 + $(call Image/Build/Template/64k/$(1),DIR600A1,dir-600-a1,board=DIR-600-A1) +endef + define Image/Build/Profile/DIR615C1 $(call Image/Build/Template/squashfs-only/$(1),Cameo,dir-615-c1,board=DIR-615-C1,"AP81-AR9130-RT-070614-02") endef @@ -429,6 +453,7 @@ define Image/Build/Profile/Default $(call Image/Build/Profile/AP81,$(1)) $(call Image/Build/Profile/AP83,$(1)) $(call Image/Build/Profile/A02RBW300N,$(1)) + $(call Image/Build/Profile/DIR600A1,$(1)) $(call Image/Build/Profile/DIR615C1,$(1)) $(call Image/Build/Profile/DIR825B1,$(1)) $(call Image/Build/Profile/MZKW04NU,$(1)) diff --git a/target/linux/ar71xx/profiles/d-link.mk b/target/linux/ar71xx/profiles/d-link.mk index 3028a4994..d28a74ca9 100644 --- a/target/linux/ar71xx/profiles/d-link.mk +++ b/target/linux/ar71xx/profiles/d-link.mk @@ -5,6 +5,18 @@ # See /LICENSE for more information. # +define Profile/DIR600A1 + NAME:=D-Link DIR-600 rev. A1 + PACKAGES:=kmod-ath9k hostapd-mini +endef + +define Profile/DIR600A1/Description + Package set optimized for the D-Link DIR-600 rev. A1. +endef + +$(eval $(call Profile,DIR600A1)) + + define Profile/DIR615C1 NAME:=D-Link DIR-615 rev. C1 PACKAGES:=kmod-ath9k hostapd-mini |