Ticket #8824: wndr3700v2-backfire.3.patch

File wndr3700v2-backfire.3.patch, 13.2 KB (added by ard@…, 6 years ago)

complete "backport" of WNDR3700v2 support from trunk to backfire r25855

  • target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h

     
    4949        AR71XX_MACH_UBNT_ROCKET_M, /* Ubiquiti Rocket M */ 
    5050        AR71XX_MACH_UBNT_NANO_M, /* Ubiquiti NanoStation M */ 
    5151        AR71XX_MACH_WNDR3700,   /* NETGEAR WNDR3700 */ 
     52        AR71XX_MACH_WNDR3700V2, /* NETGEAR WNDR3700v2 */ 
    5253        AR71XX_MACH_WNR2000,    /* NETGEAR WNR2000 */ 
    5354        AR71XX_MACH_WP543,      /* Compex WP543 */ 
    5455        AR71XX_MACH_WRT160NL,   /* Linksys WRT160NL */ 
  • target/linux/ar71xx/files/arch/mips/ar71xx/mach-wndr3700.c

     
    9393                .mask_flags     = MTD_WRITEABLE, 
    9494        } 
    9595}; 
    96 #endif /* CONFIG_MTD_PARTITIONS */ 
    9796 
    98 static struct flash_platform_data wndr3700_flash_data = { 
    99 #ifdef CONFIG_MTD_PARTITIONS 
    100         .parts          = wndr3700_partitions, 
    101         .nr_parts       = ARRAY_SIZE(wndr3700_partitions), 
    102 #endif 
     97static struct mtd_partition wndr3700v2_partitions[] = { 
     98        { 
     99                .name           = "uboot", 
     100                .offset         = 0, 
     101                .size           = 0x050000, 
     102                .mask_flags     = MTD_WRITEABLE, 
     103        }, { 
     104                .name           = "env", 
     105                .offset         = 0x050000, 
     106                .size           = 0x020000, 
     107                .mask_flags     = MTD_WRITEABLE, 
     108        }, { 
     109                .name           = "rootfs", 
     110                .offset         = 0x070000, 
     111                .size           = 0xe40000, 
     112        }, { 
     113                .name           = "config", 
     114                .offset         = 0xeb0000, 
     115                .size           = 0x010000, 
     116                .mask_flags     = MTD_WRITEABLE, 
     117        }, { 
     118                .name           = "config_bak", 
     119                .offset         = 0xec0000, 
     120                .size           = 0x010000, 
     121                .mask_flags     = MTD_WRITEABLE, 
     122        }, { 
     123                .name           = "pot", 
     124                .offset         = 0xed0000, 
     125                .size           = 0x010000, 
     126                .mask_flags     = MTD_WRITEABLE, 
     127        }, { 
     128                .name           = "traffic_meter", 
     129                .offset         = 0xee0000, 
     130                .size           = 0x010000, 
     131                .mask_flags     = MTD_WRITEABLE, 
     132        }, { 
     133                .name           = "language", 
     134                .offset         = 0xef0000, 
     135                .size           = 0x100000, 
     136                .mask_flags     = MTD_WRITEABLE, 
     137        }, { 
     138                .name           = "caldata", 
     139                .offset         = 0xff0000, 
     140                .size           = 0x010000, 
     141                .mask_flags     = MTD_WRITEABLE, 
     142        } 
    103143}; 
     144#define wndr3700_num_partitions         ARRAY_SIZE(wndr3700_partitions) 
     145#define wndr3700v2_num_partitions       ARRAY_SIZE(wndr3700v2_partitions) 
     146#else 
     147#define wndr3700_partitions             NULL 
     148#define wndr3700_num_partitions         0 
     149#define wndr3700v2_partitions           NULL 
     150#define wndr3700v2_num_partitions       0 
     151#endif /* CONFIG_MTD_PARTITIONS */ 
    104152 
     153static struct flash_platform_data wndr3700_flash_data; 
     154 
    105155static struct gpio_led wndr3700_leds_gpio[] __initdata = { 
    106156        { 
    107157                .name           = "wndr3700:green:power", 
     
    164214        } 
    165215}; 
    166216 
    167 static void __init wndr3700_setup(void) 
     217static void __init wndr3700_common_setup(void) 
    168218{ 
    169219        u8 *art = (u8 *) KSEG1ADDR(0x1fff0000); 
    170220 
     
    213263                      art + WNDR3700_WMAC1_MAC_OFFSET); 
    214264} 
    215265 
     266static void __init wndr3700_setup(void)  
     267{  
     268        wndr3700_flash_data.parts = wndr3700_partitions,  
     269        wndr3700_flash_data.nr_parts = wndr3700_num_partitions,  
     270        wndr3700_common_setup();  
     271}  
     272 
    216273MIPS_MACHINE(AR71XX_MACH_WNDR3700, "WNDR3700", "NETGEAR WNDR3700", 
    217              wndr3700_setup); 
     274                wndr3700_setup); 
     275 
     276static void __init wndr3700v2_setup(void)  
     277{  
     278        wndr3700_flash_data.parts = wndr3700v2_partitions,  
     279        wndr3700_flash_data.nr_parts = wndr3700v2_num_partitions,  
     280        wndr3700_common_setup();  
     281}  
     282  
     283MIPS_MACHINE(AR71XX_MACH_WNDR3700V2, "WNDR3700v2", "NETGEAR WNDR3700v2",  
     284                wndr3700v2_setup);  
  • target/linux/ar71xx/image/Makefile

     
    319319        rm $(KDIR)/image.tmp 
    320320endef 
    321321 
    322 wndr3700_mtdlayout=mtdparts=spi0.0:320k(u-boot)ro,128k(u-boot-env)ro,1024k(kernel),6656k(rootfs),64k(art)ro,7680k@0x70000(firmware) 
    323 define Image/Build/WNDR3700 
    324         $(call PatchKernelLzma,$(2),$(3) $(wndr3700_mtdlayout)) 
     322define Image/Build/Netgear 
     323        $(call PatchKernelLzma,$(2),$(3) $($4)) 
    325324        $(call MkImageLzma,$(KDIR)/vmlinux-$(2).bin.lzma,$(KDIR)/vmlinux-$(2).uImage) 
    326325        mkdir -p $(KDIR)/wndr3700/image 
    327326        $(STAGING_DIR_HOST)/bin/wndr3700 \ 
    328327                $(KDIR)/vmlinux-$(2).uImage \ 
    329                 $(KDIR)/wndr3700/image/uImage 
     328                $(KDIR)/wndr3700/image/uImage \ 
     329                $(5) 
    330330        $(STAGING_DIR_HOST)/bin/mksquashfs-lzma \ 
    331331                $(KDIR)/wndr3700 $(KDIR)/vmlinux-$(2).uImage.squashfs.tmp \ 
    332332                -nopad -noappend -root-owned -be 
     
    338338                $(KDIR)/vmlinux-$(2).uImage.squashfs.tmp2 
    339339        $(STAGING_DIR_HOST)/bin/wndr3700 \ 
    340340                $(KDIR)/vmlinux-$(2).uImage.squashfs.tmp2 \ 
    341                 $(KDIR)/vmlinux-$(2).uImage.squashfs 
     341                $(KDIR)/vmlinux-$(2).uImage.squashfs \ 
     342                $(5) 
    342343        -rm -f $(KDIR)/vmlinux-$(2).uImage.squashfs.tmp* 
    343344        ( \ 
    344345                dd if=$(KDIR)/vmlinux-$(2).uImage.squashfs bs=1024k conv=sync; \ 
    345346                dd if=$(KDIR)/root.$(1) bs=64k; \ 
    346347        ) > $(call imgname,$(1),$(2))-sysupgrade.bin 
    347348        $(STAGING_DIR_HOST)/bin/mkdniimg \ 
    348                 -B WNDR3700 -v OpenWrt.$(REVISION) \ 
     349                -B $(6) -v OpenWrt.$(REVISION) \ 
    349350                -i $(call imgname,$(1),$(2))-sysupgrade.bin \ 
    350351                -o $(call imgname,$(1),$(2))-factory.img 
     352        $(STAGING_DIR_HOST)/bin/mkdniimg \ 
     353                -B $(6) -v OpenWrt.$(REVISION) -r "NA" \ 
     354                -i $(call imgname,$(1),$(2))-sysupgrade.bin \ 
     355                -o $(call imgname,$(1),$(2))-factory-NA.img 
    351356endef 
    352357 
    353 define Image/Build/WNDR3700/initramfs 
    354         $(call PatchKernelLzma,$(2),$(3) $(wndr3700_mtdlayout)) 
    355         $(call MkImageLzma,$(KDIR)/vmlinux-$(2).bin.lzma,$(KDIR)/vmlinux-$(2).uImage) 
    356         $(STAGING_DIR_HOST)/bin/wndr3700 \ 
    357                 $(KDIR)/vmlinux-$(2).uImage \ 
    358                 $(call imgname,$(1),$(2))-uImage.bin 
     358define Image/Build/Netgear/initramfs  
     359        $(call PatchKernelLzma,$(2),$(3) $($(4)))  
     360        $(call MkImageLzma,$(KDIR)/vmlinux-$(2).bin.lzma,$(KDIR)/vmlinux-$(2).uImage)  
     361        $(STAGING_DIR_HOST)/bin/wndr3700 \  
     362                $(KDIR)/vmlinux-$(2).uImage \  
     363                $(call imgname,$(1),$(2))-uImage.bin \  
     364                $(5)  
    359365endef 
    360366 
    361367define Image/Build/Template/initramfs/initramfs 
     
    519525        $(call Image/Build/Template/$(fs_squash)/$(1),TPLINK,tl-wr1043nd-v1,board=TL-WR1043ND,TL-WR1043NDv1) 
    520526endef 
    521527 
     528wndr3700_mtdlayout=mtdparts=spi0.0:320k(u-boot)ro,128k(u-boot-env)ro,1024k(kernel),6656k(rootfs),64k(art)ro,7680k@0x70000(firmware) 
     529wndr3700v2_mtdlayout=mtdparts=spi0.0:320k(u-boot)ro,128k(u-boot-env)ro,1024k(kernel),14848k(rootfs),64k(art)ro,15872k@0x70000(firmware) 
    522530define Image/Build/Profile/WNDR3700 
    523         $(call Image/Build/Template/$(fs_64k)/$(1),WNDR3700,wndr3700,board=WNDR3700) 
     531        $(call Image/Build/Template/$(fs_64k)/$(1),Netgear,wndr3700,board=WNDR3700,wndr3700_mtdlayout,3700,WNDR3700) 
     532        $(call Image/Build/Template/$(fs_64k)/$(1),Netgear,wndr3700v2,board=WNDR3700v2,wndr3700v2_mtdlayout,3701,WNDR3700v2) 
    524533endef 
    525534 
    526535define Image/Build/Profile/WRT400N 
  • target/linux/ar71xx/base-files/lib/ar71xx.sh

     
    103103        *WNDR3700) 
    104104                name="wndr3700" 
    105105                ;; 
     106        *WNDR3700v2) 
     107                name="wndr3700v2" 
     108                ;; 
    106109        *WNR2000) 
    107110                name="wnr2000" 
    108111                ;; 
  • target/linux/ar71xx/base-files/lib/upgrade/platform.sh

     
    6464platform_check_image() { 
    6565        local board=$(ar71xx_board_name) 
    6666        local magic="$(get_magic_word "$1")" 
     67        local magic_long="$(get_magic_long "$1")" 
    6768 
    6869        [ "$ARGC" -gt 1 ] && return 1 
    6970 
     
    8384                return 0 
    8485                ;; 
    8586        wndr3700) 
    86                 [ "$magic" != "3337" ] && { 
     87                [ "$magic_long" != "33373030" ] && { 
    8788                        echo "Invalid image type." 
    8889                        return 1 
    8990                } 
    9091                return 0 
    9192                ;; 
     93        wndr3700v2) 
     94                [ "$magic_long" != "33373031" ] && { 
     95                        echo "Invalid image type." 
     96                        return 1 
     97                } 
     98                return 0 
     99                ;; 
    92100        wrt160nl) 
    93101                [ "$magic" != "4e4c" ] && { 
    94102                        echo "Invalid image type." 
  • target/linux/ar71xx/base-files/etc/defconfig/wndr3700v2/network

     
     1config interface loopback 
     2        option ifname   lo 
     3        option proto    static 
     4        option ipaddr   127.0.0.1 
     5        option netmask  255.0.0.0 
     6 
     7config interface lan 
     8        option ifname   eth0.1 
     9        option type     bridge 
     10        option proto    static 
     11        option ipaddr   192.168.1.1 
     12        option netmask  255.255.255.0 
     13 
     14config interface wan 
     15        option ifname   eth1 
     16        option proto    dhcp 
     17 
     18config switch 
     19        option name     rtl8366s 
     20        option reset    1 
     21        option enable_vlan 1 
     22        # Blinkrate: 0=43ms; 1=84ms; 2=120ms; 3=170ms; 4=340ms; 5=670ms 
     23        option blinkrate        2 
     24 
     25config switch_vlan 
     26        option device   rtl8366s 
     27        option vlan     1 
     28        option ports    "0 1 2 3 5t" 
     29 
     30config switch_port 
     31        # Port 1 controls the GREEN configuration of LEDs for 
     32        # the switch and the section does not correspond to a real 
     33        # switch port. 
     34        # 
     35        # 0=LED off; 1=Collision/FDX; 2=Link/activity; 3=1000 Mb/s; 
     36        # 4=100 Mb/s; 5=10 Mb/s; 6=1000 Mb/s+activity; 7=100 Mb/s+activity; 
     37        # 8=10 Mb/s+activity; 9=10/100 Mb/s+activity; 10: Fiber; 
     38        # 11: Fault; 12: Link/activity(tx); 13: Link/activity(rx); 
     39        # 14: Link (master); 15: separate register 
     40 
     41        option device           rtl8366s 
     42        option port             1 
     43        option led              6 
     44 
     45config switch_port 
     46        # Port 2 controls the ORANGE configuration of LEDs for 
     47        # the switch and the section does not correspond to a real 
     48        # switch port. 
     49        # 
     50        # See the key above for switch port 1 for the meaning of the 
     51        # 'led' setting below. 
     52         
     53        option device           rtl8366s 
     54        option port             2 
     55        option led              9 
     56 
     57config switch_port                                               
     58        # Port 5 controls the configuration of the WAN LED and the 
     59        # section does not correspond to a real switch port. 
     60        # 
     61        # To toggle the use of green or orange LEDs for the WAN port, 
     62        # see the LED setting for wndr3700:green:wan in /etc/config/system. 
     63        # 
     64        # See the key above for switch port 1 for the meaning of the 
     65        # 'led' setting below. 
     66 
     67        option device           rtl8366s 
     68        option port             5 
     69        option led              2 
  • target/linux/ar71xx/base-files/etc/uci-defaults/wndr3700

     
    1717EOF 
    1818} 
    1919 
    20 if [ "${board}" == "wndr3700" ]; then 
     20if [ "${board}" == "wndr3700" -o "${board}" == "wndr3700v2" ]; then 
    2121        wndr3700_set_wan_led 
    2222fi 
  • target/linux/ar71xx/base-files/etc/diag.sh

     
    8484        tl-wr941nd) 
    8585                status_led="tl-wr941nd:green:system" 
    8686                ;; 
    87         wndr3700) 
     87        wndr3700 | wndr3700v2) 
    8888                status_led="wndr3700:green:power" 
    8989                ;; 
    9090        wnr2000) 
  • package/base-files/files/lib/upgrade/common.sh

     
    130130        get_image "$@" | dd bs=2 count=1 2>/dev/null | hexdump -v -n 2 -e '1/1 "%02x"' 
    131131} 
    132132 
     133get_magic_long() { 
     134        get_image "$@" | dd bs=4 count=1 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' 
     135} 
     136 
    133137refresh_mtd_partitions() { 
    134138        mtd refresh rootfs 
    135139} 
  • tools/firmware-utils/src/mkdniimg.c

     
    2727static char *progname; 
    2828static char *ofname; 
    2929static char *version = "1.00.00"; 
    30 static char *region ="NA"; 
     30static char *region =""; 
    3131 
    3232static char *board_id; 
    3333/* 
  • tools/firmware-utils/src/wndr3700.c

     
    3737 
    3838#define BPB 8 /* bits/byte */ 
    3939 
     40#define WNDR3700_MAGIC_LEN      4 
     41 
    4042static uint32_t crc32[1<<BPB]; 
     43static char *magic = "3700"; 
    4144 
    4245static void init_crc32() 
    4346{ 
     
    6467} 
    6568 
    6669struct header { 
    67     uint32_t magic; 
     70    unsigned char magic[WNDR3700_MAGIC_LEN]; 
    6871    uint32_t crc; 
    6972    unsigned char stuff[56]; 
    7073}; 
     
    7477static void usage(const char *mess) 
    7578{ 
    7679        fprintf(stderr, "Error: %s\n", mess); 
    77         fprintf(stderr, "Usage: wndr3700 input_file output_file\n"); 
     80        fprintf(stderr, "Usage: wndr3700 input_file output_file [magic]\n"); 
    7881        fprintf(stderr, "\n"); 
    7982        exit(1); 
    8083} 
     
    9093 
    9194        // verify parameters 
    9295 
    93         if (argc != 3) 
     96        if (argc < 3) 
    9497                usage("wrong number of arguments"); 
    9598 
     99        if (argc > 3) 
     100                magic = argv[3]; 
     101 
     102        if (strlen(magic) != WNDR3700_MAGIC_LEN) { 
     103                fprintf(stderr, "Invalid magic: '%s'\n", magic); 
     104                exit(1); 
     105        } 
     106 
    96107        // mmap input_file 
    97108        if ((fd = open(argv[1], O_RDONLY))  < 0 
    98109        || (len = lseek(fd, 0, SEEK_END)) < 0 
     
    110121        // preload header 
    111122        memcpy(&header, input_file, sizeof(header)); 
    112123 
    113         header.magic = htonl(0x33373030); /* 3700 in ascii */ 
     124        memcpy(header.magic, magic, WNDR3700_MAGIC_LEN); 
    114125        header.crc = 0; 
    115126 
    116127        // create a firmware image in memory and copy the input_file to it