Ticket #10741: hw556_svn_all.patch

File hw556_svn_all.patch, 13.7 KB (added by noltari@…, 6 years ago)

Patches v3 (Supports atheros and ralink)

  • target/linux/brcm63xx/image/Makefile

     
    6060                --block-size 0x20000 --image-offset $(4) 
    6161endef 
    6262 
     63define Image/Build/CFEHW556 
     64        # Generate the tagged image 
     65        $(STAGING_DIR_HOST)/bin/imagetag -i $(KDIR)/vmlinux.lzma.cfe -f $(KDIR)/root.$(1) \ 
     66        --output $(BIN_DIR)/openwrt-$(2)-$(1)-cfe.bin \ 
     67        --boardid $(2) --chipid $(3) --entry $(LOADADDR) \ 
     68        --load-addr $(LOADADDR) --tag-version 8 --rsa-signature "$(5)" \ 
     69        --image-offset $(4) --info1 "$(6)" --block-size 0x20000 
     70endef 
     71 
     72 
    6373define Image/Build/CFEAGPF 
    6474        # Generate the tagged image 
    6575        $(STAGING_DIR_HOST)/bin/imagetag -i $(KDIR)/vmlinux.lzma.cfe -f $(KDIR)/root.$(1) \ 
     
    247257 
    248258        #HW553 
    249259        $(call Image/Build/CFEHW553,$(1),HW553,6358,0x20000,HW553) 
     260        #HW556  
     261        $(call Image/Build/CFEHW556,$(1),HW556,6358,0x20000,EchoLife_HG556a,OpenWRT-$(REVISION))  
    250262 
    251263        # T-Com Speedport W 303V Typ B 
    252264        $(call Image/Build/SPW303V,$(1),96358-502V,6358,SPW303V) 
  • target/linux/brcm63xx/profiles/300-HW556.mk

     
     1# 
     2# Copyright (C) 2009 OpenWrt.org 
     3# 
     4# This is free software, licensed under the GNU General Public License v2. 
     5# See /LICENSE for more information. 
     6# 
     7 
     8define Profile/HW556 
     9  NAME:=HW556 WiFi 
     10  PACKAGES:=kmod-rt2800-pci kmod-ath9k wpad-mini 
     11endef 
     12 
     13define Profile/HW556/Description 
     14        Package set compatible with hardware using Atheros or Ralink WiFi cards (Huawei HG556a) 
     15endef 
     16$(eval $(call Profile,HW556)) 
     17 
  • target/linux/brcm63xx/patches-3.3/428-BCM63XX-add-a-fixup-for-ath9k-devices.patch

     
    2424 obj-y          += boards/ 
    2525--- /dev/null 
    2626+++ b/arch/mips/bcm63xx/pci-ath9k-fixup.c 
    27 @@ -0,0 +1,190 @@ 
     27@@ -0,0 +1,191 @@ 
    2828+/* 
    2929+ *  Broadcom BCM63XX Ath9k EEPROM fixup helper. 
    3030+ * 
     
    205205+               return; 
    206206+ 
    207207+       ath9k_fixups[ath9k_num_fixups].slot = slot; 
     208+       ath9k_fixups[ath9k_num_fixups].pdata.endian_check = 1; 
    208209+ 
    209210+       if (!bcm63xx_read_eeprom(ath9k_fixups[ath9k_num_fixups].pdata.eeprom_data, offset)) 
    210211+               return; 
  • target/linux/brcm63xx/patches-3.3/554-board_hw556.patch

     
     1--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
     2+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
     3@@ -2361,6 +2361,88 @@ static struct board_info __initdata boar 
     4        }, 
     5 }; 
     6  
     7+static struct board_info __initdata board_HW556 = { 
     8+       .name                           = "HW556", 
     9+       .expected_cpu_id        = 0x6358, 
     10+ 
     11+       .has_uart0                      = 1, 
     12+       .has_pci                        = 1, 
     13+       .has_ohci0                      = 1, 
     14+       .has_ehci0                      = 1, 
     15+ 
     16+       .has_enet1 = 1, 
     17+       .enet1 = { 
     18+               .force_speed_100        = 1, 
     19+               .force_duplex_full      = 1, 
     20+       }, 
     21+ 
     22+       .leds = { 
     23+               { 
     24+                       .name           = "HW556:red:message",  
     25+                       .gpio           = 0, 
     26+                       .active_low     = 1, 
     27+               }, 
     28+               { 
     29+                       .name           = "HW556:red:hspa",  
     30+                       .gpio           = 1, 
     31+                       .active_low     = 1, 
     32+               }, 
     33+               {  
     34+                       .name           = "HW556:red:dsl",  
     35+                       .gpio           = 2, 
     36+                       .active_low     = 1, 
     37+               }, 
     38+               { 
     39+                       .name           = "HW556:red:power",  
     40+                       .gpio           = 3, 
     41+                       .active_low     = 1, 
     42+                       .default_trigger = "default-on", 
     43+               }, 
     44+               { 
     45+                       .name           = "HW556:red:all",  
     46+                       .gpio           = 6, 
     47+                       .active_low     = 1, 
     48+                       .default_trigger = "default-on",  
     49+               }, 
     50+       }, 
     51+ 
     52+       .buttons = { 
     53+               { 
     54+                       .desc           = "diagnostic", 
     55+                       .gpio           = 8, 
     56+                       .active_low = 1,  
     57+                       .type           = EV_KEY, 
     58+                       .code           = BTN_0, 
     59+                       .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL, 
     60+               }, 
     61+               { 
     62+                       .desc   =        "wlan",  
     63+                       .gpio           = 9,  
     64+                       .active_low = 1,  
     65+                       .type           = EV_KEY,  
     66+                       .code           = KEY_WLAN,  
     67+                       .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,  
     68+               }, 
     69+               { 
     70+                       .desc           = "restart", 
     71+                       .gpio           = 10, 
     72+                       .active_low = 1,  
     73+                       .type           = EV_KEY, 
     74+                       .code           = BTN_1, 
     75+                       .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL, 
     76+               }, 
     77+               { 
     78+                       .desc           = "reset", 
     79+                       .gpio           = 11, 
     80+                       .active_low = 1,  
     81+                       .type           = EV_KEY, 
     82+                       .code           = KEY_RESTART, 
     83+                       .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL, 
     84+               }, 
     85+       }, 
     86+}; 
     87+ 
     88+ 
     89  /* T-Home Speedport W 303V Typ B */ 
     90 static struct board_info __initdata board_spw303v = { 
     91        .name                   = "96358-502V", 
     92@@ -2621,6 +2703,7 @@ static const struct board_info __initdat 
     93        &board_nb4_fxc_r1, 
     94        &board_nb4_fxc_r2, 
     95        &board_HW553, 
     96+       &board_HW556, 
     97        &board_spw303v, 
     98 #endif 
     99  
  • target/linux/brcm63xx/patches-3.3/802-fix_caldata.patch

     
     1--- a/drivers/mtd/bcm63xxpart.c 
     2+++ b/drivers/mtd/bcm63xxpart.c 
     3@@ -163,7 +163,17 @@ static int bcm63xx_parse_cfe_partitions( 
     4                rootfsaddr = 0; 
     5                spareaddr = cfelen; 
     6        } 
     7-       sparelen = master->size - spareaddr - nvramlen - caldatalen1 - caldatalen2; 
     8+       if(caldatalen1 > 0) { 
     9+               if(caldatalen2 > 0) { 
     10+                       sparelen = min(caldataaddr1, caldataaddr2) - spareaddr; 
     11+               } 
     12+               else { 
     13+                       sparelen = caldataaddr1 - spareaddr; 
     14+               } 
     15+       } 
     16+       else { 
     17+               sparelen = master->size - spareaddr - nvramlen; 
     18+       } 
     19  
     20        /* Determine number of partitions */ 
     21        if (rootfslen > 0) 
     22@@ -240,8 +250,17 @@ static int bcm63xx_parse_cfe_partitions( 
     23        /* Global partition "linux" to make easy firmware upgrade */ 
     24        parts[curpart].name = "linux"; 
     25        parts[curpart].offset = cfelen; 
     26-       parts[curpart].size = master->size - cfelen - nvramlen 
     27-                             - caldatalen1 - caldatalen2; 
     28+       if(caldatalen1 > 0) { 
     29+               if(caldatalen2 > 0) { 
     30+                       parts[curpart].size = min(caldataaddr1, caldataaddr2) - parts[curpart].offset; 
     31+               } 
     32+               else { 
     33+                       parts[curpart].size = caldataaddr1 - parts[curpart].offset; 
     34+               } 
     35+       } 
     36+       else { 
     37+               parts[curpart].size = master->size - cfelen - nvramlen; 
     38+       } 
     39  
     40        for (i = 0; i < nrparts; i++) 
     41                pr_info("Partition %d is %s offset %llx and length %llx\n", i, 
  • target/linux/brcm63xx/patches-3.3/805-hw556_ralink_eeprom.patch

     
     1--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 2012-07-14 17:17:44.232109764 +0200 
     2+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 2012-07-14 17:25:11.718828825 +0200 
     3@@ -37,6 +37,7 @@ 
     4 #include <board_bcm963xx.h> 
     5 #include <bcm_tag.h> 
     6 #include <pci_ath9k_fixup.h> 
     7+#include <dev-wifi-rt2x00.h> 
     8  
     9 #define PFX    "board_bcm963xx: " 
     10  
     11@@ -3089,5 +3090,13 @@ int __init board_register_devices(void) 
     12        for (i = 0; i < board.has_caldata; i++) 
     13                pci_enable_ath9k_fixup(board.caldata[i].slot, board.caldata[i].caldata_offset); 
     14  
     15+       /* HW556 Ralink EEPROM */ 
     16+       if(!strncmp(board.name, "HW556", 5) && board.caldata[0].caldata_offset == 0xeffe00) { 
     17+               u8 mac[ETH_ALEN]; 
     18+               if (!bcm63xx_nvram_get_mac_address(mac)) { 
     19+                       bcm63xx_register_rt2x00("rt3062.bin", mac); 
     20+               } 
     21+       } 
     22+ 
     23        return 0; 
     24 } 
     25--- /dev/null 
     26+++ b/arch/mips/bcm63xx/dev-wifi-rt2x00.c 
     27@@ -0,0 +1,28 @@ 
     28+/* 
     29+ *  Copyright (C) 2011 John Crispin <blogic@openwrt.org> 
     30+ * 
     31+ *  This program is free software; you can redistribute it and/or modify it 
     32+ *  under the terms of the GNU General Public License version 2 as published 
     33+ *  by the Free Software Foundation. 
     34+ */ 
     35+ 
     36+#include <linux/init.h> 
     37+#include <linux/platform_device.h> 
     38+#include <linux/rt2x00_platform.h> 
     39+#include <linux/pci.h> 
     40+ 
     41+#include <dev-wifi-rt2x00.h> 
     42+ 
     43+struct rt2x00_platform_data rt2x00_pdata; 
     44+ 
     45+static void rt2x00_pci_plat_dev_init(struct pci_dev *dev) { 
     46+       dev->dev.platform_data = &rt2x00_pdata; 
     47+} 
     48+ 
     49+DECLARE_PCI_FIXUP_FINAL(0x1814, 0x3592,  rt2x00_pci_plat_dev_init); 
     50+ 
     51+void __init bcm63xx_register_rt2x00(const char *firmware, const u8 *mac) { 
     52+       rt2x00_pdata.eeprom_file_name = kstrdup(firmware, GFP_KERNEL); 
     53+       rt2x00_pdata.mac_address = mac; 
     54+} 
     55+ 
     56--- a/arch/mips/bcm63xx/Makefile        2012-07-14 17:17:44.232109764 +0200 
     57+++ b/arch/mips/bcm63xx/Makefile        2012-07-14 16:56:49.169498900 +0200 
     58@@ -1,7 +1,7 @@ 
     59 obj-y          += clk.o cpu.o cs.o gpio.o irq.o nvram.o prom.o setup.o \ 
     60                   timer.o dev-dsp.o dev-enet.o dev-flash.o dev-hsspi.o \ 
     61                   dev-pcmcia.o dev-rng.o dev-spi.o dev-uart.o dev-usb-ehci.o \ 
     62-                  dev-usb-ohci.o dev-wdt.o pci-ath9k-fixup.o 
     63+                  dev-usb-ohci.o dev-wdt.o pci-ath9k-fixup.o dev-wifi-rt2x00.o 
     64 obj-$(CONFIG_EARLY_PRINTK)     += early_printk.o 
     65  
     66 obj-y          += boards/ 
     67--- /dev/null 
     68+++ b/arch/mips/include/asm/mach-bcm63xx/dev-wifi-rt2x00.h 
     69@@ -0,0 +1,15 @@ 
     70+/* 
     71+ *  Copyright (C) 2011 John Crispin <blogic@openwrt.org> 
     72+ * 
     73+ *  This program is free software; you can redistribute it and/or modify it 
     74+ *  under the terms of the GNU General Public License version 2 as published 
     75+ *  by the Free Software Foundation. 
     76+ */ 
     77+ 
     78+#ifndef _DEV_WIFI_RT2X00_H__ 
     79+#define _DEV_WIFI_RT2X00_H__ 
     80+ 
     81+extern void bcm63xx_register_rt2x00(const char *firmware, const u8 *mac); 
     82+ 
     83+#endif 
     84+ 
  • target/linux/brcm63xx/patches-3.3/803-hw556_cfelen.patch

     
     1--- a/drivers/mtd/bcm63xxpart.c 
     2+++ b/drivers/mtd/bcm63xxpart.c 
     3@@ -89,8 +89,13 @@ static int bcm63xx_parse_cfe_partitions( 
     4        if (bcm63xx_detect_cfe(master)) 
     5                return -EINVAL; 
     6  
     7-       cfe_erasesize = max_t(uint32_t, master->erasesize, 
     8-                             BCM63XX_CFE_BLOCK_SIZE); 
     9+       /* HW556 erase block size of 128k */ 
     10+       if(!strncmp(bcm63xx_nvram_get_name(), "HW556", 5)) { 
     11+               cfe_erasesize = 0x20000; 
     12+       } 
     13+       else { 
     14+               cfe_erasesize = max_t(uint32_t, master->erasesize, BCM63XX_CFE_BLOCK_SIZE); 
     15+       } 
     16  
     17        cfelen = cfe_erasesize; 
     18        nvramlen = bcm63xx_nvram_get_psi_size() * 1024; 
  • target/linux/brcm63xx/patches-3.3/804-hw556_caldata.patch

     
     1--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
     2+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
     3@@ -2802,6 +2802,42 @@ static void __init boardid_fixup(u8 *boo 
     4        printk(KERN_INFO "Overriding boardid with '%s'\n", board_name); 
     5 } 
     6  
     7+#define MAC_ADDR_OFFSET                        0x6A0 
     8+#define MAC_ADDR_PREFIX_SHIFT  8 
     9+u32 board_get_mac_prefix(u8 *boot_addr) { 
     10+       u32 mac_prefix = (*((u32 *) (boot_addr + MAC_ADDR_OFFSET))) >> MAC_ADDR_PREFIX_SHIFT; 
     11+       return mac_prefix; 
     12+} 
     13+ 
     14+static void __init hw556_caldata_fixup(u8 *boot_addr) { 
     15+       u32 mac_prefix = board_get_mac_prefix(boot_addr); 
     16+       switch(mac_prefix) { 
     17+               case 0x5c4ca9:  //Atheros/MX29GL128EH 
     18+               case 0xf4c714:  //Atheros/S29GL128P10 
     19+                       board.has_caldata = 1; 
     20+                       board.caldata[0].slot = 1; 
     21+                       board.caldata[0].caldata_offset = 0xefe000; 
     22+                       break; 
     23+               case 0x6416f0:  //Atheros/MX29LV128DB 
     24+                       board.has_caldata = 1; 
     25+                       board.caldata[0].slot = 1; 
     26+                       board.caldata[0].caldata_offset = 0xf7e000; 
     27+                       break; 
     28+               case 0x84a8e4:  //Ralink 
     29+               case 0x04c06f:  //Ralink/MX29GL128EH 
     30+                       board.has_caldata = 1; 
     31+                       board.caldata[0].slot = 1; 
     32+                       board.caldata[0].caldata_offset = 0xeffe00; 
     33+                       break; 
     34+               default: 
     35+                       board.has_caldata = 1; 
     36+                       board.caldata[0].slot = 255; 
     37+                       board.caldata[0].caldata_offset = 0xe00000; 
     38+                       printk("HW556: Unable to detect board model 0x%x. Protecting last 2MB of flash to avoid erasing wlan cal_data.", mac_prefix); 
     39+                       break; 
     40+       } 
     41+} 
     42+ 
     43 /* 
     44  * early init callback, read nvram data from flash and checksum it 
     45  */ 
     46@@ -2883,6 +2915,10 @@ void __init board_prom_init(void) 
     47                       name); 
     48                return; 
     49        } 
     50+       /* Detect HW556 caldata depending on MAC addr */ 
     51+       else if(!strncmp(board_name, "HW556", 5)) { 
     52+               hw556_caldata_fixup(boot_addr); 
     53+       } 
     54  
     55        /* setup pin multiplexing depending on board enabled device, 
     56         * this has to be done this early since PCI init is done 
  • target/linux/brcm63xx/base-files/lib/brcm63xx.sh

     
    4141                brcm63xx_has_reset_button="true" 
    4242                ifname=eth1 
    4343                ;; 
     44        HW556) 
     45                status_led="power" 
     46                brcm63xx_has_reset_button="true" 
     47                ifname=eth0 
     48                ;; 
    4449        96348GW-11) 
    4550                status_led="power" 
    4651                brcm63xx_has_reset_button="true" 
  • target/linux/brcm63xx/base-files/etc/uci-defaults/network

     
    2121AW4339U |\ 
    2222CPVA642 |\ 
    2323CT536_CT5621 |\ 
     24HW556 |\ 
    2425D-4P-W |\ 
    2526SPW303V |\ 
    2627SPW500V |\ 
  • target/linux/brcm63xx/base-files/etc/uci-defaults/brcm63xx_fixcrc.sh

     
    1515case "$board_name" in 
    1616        96328avng |\ 
    1717        963281TAN |\ 
     18        HW556 |\ 
    1819        "CPVA502+" |\ 
    1920        AW4339U |\ 
    2021        CPVA642 |\