AA: ramips: add support for DIR-620D1
authorjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 6 May 2013 12:26:03 +0000 (12:26 +0000)
committerjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 6 May 2013 12:26:03 +0000 (12:26 +0000)
Both DIR-615H1 and DIR-620D1 are ralink rt3352 based router. But DIR-620D1 have 8MB flash and USB port.

Signed-off-by: Serge Vasilugin <vasilugin@yandex.ru>
git-svn-id: svn://svn.openwrt.org/openwrt/branches/attitude_adjustment@36557 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/ramips/base-files/etc/diag.sh
target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
target/linux/ramips/base-files/etc/uci-defaults/leds
target/linux/ramips/base-files/etc/uci-defaults/network
target/linux/ramips/base-files/lib/preinit/06_set_iface_mac
target/linux/ramips/base-files/lib/ramips.sh
target/linux/ramips/base-files/lib/upgrade/platform.sh
target/linux/ramips/files/arch/mips/include/asm/mach-ralink/machine.h
target/linux/ramips/files/arch/mips/ralink/rt305x/mach-dir-615-h1.c
target/linux/ramips/image/Makefile

index b963b8a..395ed6f 100755 (executable)
@@ -36,7 +36,7 @@ get_status_led() {
        argus-atp52b)
                status_led="argus-atp52b:green:run"
                ;;
-       dir-300-b1 | dir-600-b1 | dir-600-b2 | dir-615-h1 | dir-615-d | dir-620-a1)
+       dir-300-b1 | dir-600-b1 | dir-600-b2 | dir-615-h1 | dir-615-d | dir-620-a1 | dir-620-d1)
                status_led="d-link:green:status"
                ;;
        dir-645)
index 3ec4bff..28e9301 100644 (file)
@@ -62,6 +62,7 @@ case "$FIRMWARE" in
        carambola | \
        dir-615-h1 | \
        dir-620-a1 | \
+       dir-620-d1 | \
        esr-9753 | \
        fonera20n | \
        freestation5 | \
index 81d9c44..8f2a92b 100755 (executable)
@@ -41,6 +41,9 @@ case $board in
                ucidef_set_led_default "status" "Status LED (amber)" "d-link:amber:status" "0"
                set_wifi_led "rt2800pci-phy0::radio"
                ;;
+       dir-620-d1)
+               set_wifi_led "d-link:green:wifi"
+               ;;
        esr-9753)
                set_wifi_led "rt2800pci-phy0::radio"
                ;;
index 1f3fd63..cf9c0bb 100755 (executable)
@@ -141,6 +141,7 @@ ramips_setup_macs()
        3g-6200n | \
        argus-atp52b | \
        bc2 | \
+       dir-620-d1 |\
        f5d8235-v1 | \
        nw718 | \
        psr-680w | \
index 20b9a95..b959479 100644 (file)
@@ -9,6 +9,7 @@ preinit_set_mac_address() {
 
        case $(ramips_board_name) in
        3g-6200n |\
+       dir-620-d1 |\
        wl-330n |\
        wl-330n3g)
                mac=$(ramips_get_mac_binary factory 4)
index f9b874f..25a1205 100755 (executable)
@@ -89,6 +89,9 @@ ramips_board_name() {
        *"DIR-620 A1")
                name="dir-620-a1"
                ;;
+       *"DIR-620 D1")
+               name="dir-620-d1"
+               ;;
        *"DIR-615 H1")
                name="dir-615-h1"
                ;;
index 0b53d7e..25dbe6e 100755 (executable)
@@ -26,6 +26,7 @@ platform_check_image() {
        dir-615-h1 | \
        dir-615-d | \
        dir-620-a1 | \
+       dir-620-d1 | \
        dap-1350 | \
        esr-9753 | \
        fonera20n | \
index 8f99ce1..83d2e26 100644 (file)
@@ -66,6 +66,7 @@ enum ramips_mach_type {
        /* RT3352 based machines */
        RAMIPS_MACH_ALL5002,            /* Allnet ALL5002 */
        RAMIPS_MACH_DIR_615_H1,
+       RAMIPS_MACH_DIR_620_D1,
 
        /* RT3662 based machines */
        RAMIPS_MACH_DIR_645,            /* D-Link DIR-645 */
index dbfe4aa..33d53a9 100644 (file)
@@ -110,3 +110,70 @@ static void __init dir615h1_init(void)
 
 MIPS_MACHINE(RAMIPS_MACH_DIR_615_H1, "DIR-615-H1", "D-Link DIR-615 H1",
             dir615h1_init);
+
+#define DIR_620_D1_GPIO_LED_STATUS_GREEN 9
+#define DIR_620_D1_GPIO_LED_WIFI_GREEN 17
+#define DIR_620_D1_GPIO_BUTTON_WPS     7  /* active low */
+
+#define DIR_620_D1_KEYS_POLL_INTERVAL  20
+#define DIR_620_D1_KEYS_DEBOUNCE_INTERVAL (3 * DIR_620_D1_KEYS_POLL_INTERVAL)
+
+static struct gpio_led dir_620_d1_leds_gpio[] __initdata = {
+       {
+               .name           = "d-link:green:status",
+               .gpio           = DIR_620_D1_GPIO_LED_STATUS_GREEN,
+               .active_low     = 1,
+       }, {
+               .name           = "d-link:green:wifi",
+               .gpio           = DIR_620_D1_GPIO_LED_WIFI_GREEN,
+               .active_low     = 1,
+       }
+};
+
+static struct gpio_keys_button dir_620_d1_gpio_buttons[] __initdata = {
+       {
+               .desc           = "wps",
+               .type           = EV_KEY,
+               .code           = KEY_RESTART,
+               .debounce_interval = DIR_615_H1_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = DIR_620_D1_GPIO_BUTTON_WPS,
+               .active_low     = 1,
+       }
+};
+
+const struct flash_platform_data dir620d1_flash = {
+       .type           = "mx25l6405d",
+};
+
+struct spi_board_info dir620d1_spi_slave_info[] __initdata = {
+       {
+               .modalias       = "m25p80",
+               .platform_data  = &dir620d1_flash,
+               .irq            = -1,
+               .max_speed_hz   = 10000000,
+               .bus_num        = 0,
+               .chip_select    = 0,
+       },
+};
+
+static void __init dir620d1_init(void)
+{
+       rt305x_gpio_init( (RT305X_GPIO_MODE_GPIO << RT305X_GPIO_MODE_UART0_SHIFT) |
+                          RT305X_GPIO_MODE_JTAG
+                       );
+       rt305x_register_spi(dir620d1_spi_slave_info,
+                           ARRAY_SIZE(dir620d1_spi_slave_info));
+       rt305x_esw_data.vlan_config = RT305X_ESW_VLAN_CONFIG_LLLLW;
+       rt305x_register_ethernet();
+       ramips_register_gpio_leds(-1, ARRAY_SIZE(dir_620_d1_leds_gpio),
+                                 dir_620_d1_leds_gpio);
+       ramips_register_gpio_buttons(-1, DIR_620_D1_KEYS_POLL_INTERVAL,
+                                    ARRAY_SIZE(dir_620_d1_gpio_buttons),
+                                    dir_620_d1_gpio_buttons);
+       rt305x_register_wifi();
+       rt305x_register_wdt();
+       rt305x_register_usb();
+}
+
+MIPS_MACHINE(RAMIPS_MACH_DIR_620_D1, "DIR-620-D1", "D-Link DIR-620 D1",
+            dir620d1_init);
index 71caa10..3c0024b 100644 (file)
@@ -231,6 +231,10 @@ define BuildFirmware/DIR620A1
        $(call BuildFirmware/Generic,$(1),$(2),$(call mkcmdline,$(3),ttyS1,57600) $(call mkmtd/phys,$(mtdlayout_dir620a1)),$(kernel_size_dir620a1),$(rootfs_size_dir620a1),DIR_620)
 endef
 
+define BuildFirmware/DIR620D1
+       $(call BuildFirmware/Generic,$(1),$(2),$(call mkcmdline,$(3),ttyS1,57600) $(call mkmtd/spi,$(mtdlayout_dir620a1)),$(kernel_size_dir620a1),$(rootfs_size_dir620a1),DIR_620D1)
+endef
+
 define BuildFirmware/DIR620A1/initramfs
        $(call BuildFirmware/Generic/initramfs,$(1),$(2),$(call mkcmdline,$(3),ttyS1,57600) $(call mkmtd/phys,$(mtdlayout_dir620a1)),$(kernel_size_dir620a1),$(rootfs_size_dir620a1))
 endef
@@ -470,7 +474,8 @@ define Image/Build/Profile/DIR300B1
 endef
 
 define Image/Build/Profile/DIR615H1
-        $(call Image/Build/Template/$(fs_squash)/$(1),DIR615H1,dir-615-h1,DIR-615-H1,ttyS1,57600,spi)
+       $(call Image/Build/Template/$(fs_squash)/$(1),DIR615H1,dir-615-h1,DIR-615-H1,ttyS1,57600,spi)
+       $(call Image/Build/Template/$(fs_squash)/$(1),DIR620D1,dir-620-d1,DIR-620-D1,ttyS1,57600,spi)
 endef
 
 define Image/Build/Profile/DAP1350