Changeset 16396


Ignore:
Timestamp:
2009-06-10T10:24:13+02:00 (7 years ago)
Author:
florian
Message:

The attached patch adds building of firmware
images for more routers based on the brcm63xx chipset.

Signed-Off By: Daniel Dickinson <crazycshore@…>

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/brcm63xx/files/drivers/mtd/maps/bcm963xx-flash.c

    r16393 r16396  
    164164            break; 
    165165          case 3: 
    166             matchtagid = "bc308"; 
    167             tagid = &(buf->bc308.tagId[0]); 
    168             sscanf(buf->bc308.rootAddress,"%u", &rootfsaddr); 
    169             sscanf(buf->bc308.rootLength, "%u", &rootfslen); 
    170             sscanf(buf->bc308.kernelAddress, "%u", &kerneladdr); 
    171             sscanf(buf->bc308.kernelLength, "%u", &kernellen); 
    172             sscanf(buf->bc308.totalLength, "%u", &totallen); 
    173             tagidcrc = buf->bc308.tagIdCRC; 
    174             tagversion = &(buf->bc308.tagVersion[0]); 
    175             boardid = &(buf->bc308.boardid[0]); 
     166            matchtagid = "bc221"; 
     167            tagid = &(buf->bc221.tagId[0]); 
     168            sscanf(buf->bc221.rootAddress,"%u", &rootfsaddr); 
     169            sscanf(buf->bc221.rootLength, "%u", &rootfslen); 
     170            sscanf(buf->bc221.kernelAddress, "%u", &kerneladdr); 
     171            sscanf(buf->bc221.kernelLength, "%u", &kernellen); 
     172            sscanf(buf->bc221.totalLength, "%u", &totallen); 
     173            tagidcrc = buf->bc221.tagIdCRC; 
     174            tagversion = &(buf->bc221.tagVersion[0]); 
     175            boardid = &(buf->bc221.boardid[0]); 
    176176            break; 
    177177          case 4: 
  • trunk/target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/bcm_tag.h

    r16393 r16396  
    77#define TAGINFO_LEN 20                 /* Length of vendor information field in tag */ 
    88#define TAGVER_LEN 4                   /* Length of Tag Version */ 
     9#define TAGLAYOUT_LEN 4                /* Length of FlashLayoutVer */ 
    910 
    1011#define NUM_TAGID 5 
     
    1617}; 
    1718 
    18  // what is called bc308 may actually be BT Voyager-specific 
    19  // bc310 should be right  
     19 // bc221 is used by BT Voyager and should be right 
     20 // bc310 should be right, and may apply to 3.08 code as well 
    2021#define TAGID_DEFINITIONS { \ 
    2122  { "bccfe", "Broadcom CFE flash image" }, \ 
    2223  { "bc300", "Broadcom code version 3.00-3.06 and all ftp/tftp flash" }, \ 
    2324  { "ag306", "Alice Gate (Pirelli, based on Broadcom 3.06)" }, \ 
    24   { "bc308", "Broadcom code version 3.08" }, \ 
     25  { "bc221", "Broadcom code version 2.21" }, \ 
    2526  { "bc310", "Broadcom code version 3.10-3.12" }, \ 
    2627} 
    2728 
    2829struct bcm_tag_bccfe { 
    29         unsigned char tagVersion[TAGVER_LEN];                    // 0-3: Version of the image tag 
     30        unsigned char tagVersion[TAGVER_LEN];           // 0-3: Version of the image tag 
    3031        unsigned char sig_1[20];                        // 4-23: Company Line 1 
    3132        unsigned char sig_2[14];                        // 24-37: Company Line 2 
     
    5354 
    5455struct bcm_tag_bc300 { 
    55         unsigned char tagVersion[4];                    // 0-3: Version of the image tag 
     56        unsigned char tagVersion[TAGVER_LEN];           // 0-3: Version of the image tag 
    5657        unsigned char sig_1[20];                        // 4-23: Company Line 1 
    5758        unsigned char sig_2[14];                        // 24-37: Company Line 2 
     
    8182 
    8283struct bcm_tag_ag306 { 
    83         unsigned char tagVersion[4];                    // 0-3: Version of the image tag 
     84        unsigned char tagVersion[TAGVER_LEN];           // 0-3: Version of the image tag 
    8485        unsigned char sig_1[20];                        // 4-23: Company Line 1 
    8586        unsigned char sig_2[14];                        // 24-37: Company Line 2 
     
    106107}; 
    107108 
    108 struct bcm_tag_bc308 { 
    109         unsigned char tagVersion[4];                    // 0-3: Version of the image tag 
     109struct bcm_tag_bc221 { 
     110        unsigned char tagVersion[TAGVER_LEN];           // 0-3: Version of the image tag 
    110111        unsigned char sig_1[20];                        // 4-23: Company Line 1 
    111112        unsigned char sig_2[14];                        // 24-37: Company Line 2 
     
    122123        unsigned char dualImage[2];                     // 138-139: Unused at present 
    123124        unsigned char inactiveFlag[2];                  // 140-141: Unused at present 
    124         unsigned char information1[TAGINFO_LEN+2];      // 142-163: Unused at present 
     125        unsigned char rsa_signature[TAGINFO_LEN];       // 142-161: RSA Signature (unused at present; some vendors may use this) 
     126        unsigned char reserved5[2];                     // 162-163: Unused at present 
    125127        unsigned char tagId[TAGID_LEN];                 // 164-169: Identifies which type of tag this is, currently two-letter company code, and then three digits for version of broadcom code in which this tag was first introduced 
    126128        unsigned char rootAddress[ADDRESS_LEN];         // 170-181: Address in memory of rootfs partition 
    127129        unsigned char rootLength[IMAGE_LEN];            // 182-191: Size of rootfs partition 
    128         unsigned char flashLayoutVer[2];                // 192-193: Version flash layout 
    129         unsigned char curflashLayoutVer[2];             // 194-195: Unused at present 
     130        unsigned char flashLayoutVer[4];                // 192-195: Version flash layout 
    130131        unsigned char kernelCRC[4];                     // 196-199: Guessed to be kernel CRC 
    131132        unsigned char reserved4[16];                    // 200-215: Reserved area; unused at present 
     
    171172  struct bcm_tag_bc300 bc300; 
    172173  struct bcm_tag_ag306 ag306; 
    173   struct bcm_tag_bc308 bc308; 
     174  struct bcm_tag_bc221 bc221; 
    174175  struct bcm_tag_bc310 bc310; 
    175176}; 
  • trunk/target/linux/brcm63xx/image/Makefile

    r16393 r16396  
    3535                -o $(BIN_DIR)/openwrt-$(2)-$(1)-$(6)-cfe.bin \ 
    3636                -b $(2) -c $(3) -e $(LOADADDR) -l $(LOADADDR) \ 
    37                 -t $(4) -d "$(5)" 
     37                -t $(4) -d "$(5)" $(7) 
    3838#               -b $(2) -c $(3) -e $(KERNEL_ENTRY) -l $(LOADADDR) 
    3939 
     
    100100        dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/openwrt-$(BOARD)-root.$(1) bs=128k conv=sync 
    101101        # Various routers 
    102         $(call Image/Build/CFE,$(1),96345GW2,6345,bccfe,,bccfe) 
    103         $(call Image/Build/CFE,$(1),96345GW2,6345,bc300,,bc300) 
    104         $(call Image/Build/CFE,$(1),96345GW2,6345,bc310,OpenWRT-$(SVN_REVISION),bc310) 
    105         $(call Image/Build/CFE,$(1),96348GW,6348,bccfe,,bcfe) 
    106         # BT Voyager V2500V 
    107         $(call Image/Build/CFE,$(1),V2500V_BB,6348,bc308,,btvgr) 
     102        $(call Image/Build/CFE,$(1),96345GW2,6345,bccfe,,bccfe,) 
     103        $(call Image/Build/CFE,$(1),96345GW2,6345,bc221,,bc221,-y 5) 
     104        $(call Image/Build/CFE,$(1),96345GW2,6345,bc300,,bc300,) 
     105        $(call Image/Build/CFE,$(1),96345GW2,6345,bc310,OpenWRT-$(SVN_REVISION),bc310,) 
     106        $(call Image/Build/CFE,$(1),96348GW,6348,bccfe,,bcfe,) 
     107        $(call Image/Build/CFE,$(1),96348GW,6348,bc221,,bc221,-y 5) 
     108        # BT Voyager V210_BTR 
     109        $(call Image/Build/CFE,$(1),V210_BB,6348,bc221,,btvgr,-y 5) 
     110        # BT Voyager V210_ROI, V210_WB 
     111        $(call Image/Build/CFE,$(1),V210,6348,bc221,,btvgr,-y 5) 
     112        # BT Voyager V2091_BTR 
     113        $(call Image/Build/CFE,$(1),V2091_BB,6348,bc221,,btvgr,-y 5) 
     114        # BT Voyager V2091_ROI, V2091_WB 
     115        $(call Image/Build/CFE,$(1),V2091,6348,bc221,,btvgr,-y 5) 
     116        # BT Voyager V220V, V220V_MGCP_BTR 
     117        $(call Image/Build/CFE,$(1),RTA1052V,6348,bc221,,btvgr,-y 5) 
     118        # BT Voyager V2110, V2110_AA, V2110_ROI 
     119        $(call Image/Build/CFE,$(1),V2110,6348,bc221,,btvgr,-y 5) 
     120        # BT Voyager V2500V, V2500V_SIP_CLUB, V2500V_AA 
     121        $(call Image/Build/CFE,$(1),V2500V_BB,6348,bc221,,btvgr,-y 5) 
    108122        # Tecom GW6000 
    109         $(call Image/Build/CFE,$(1),96348GW,6348,bc300,,bc300) 
     123        $(call Image/Build/CFE,$(1),96348GW,6348,bc300,,bc300,) 
    110124        # Tecom GW6200 
    111125        $(call Image/Build/CFE,$(1),96348GW,6348,bc310,$(shell printf '\x99'),gw6200) 
     
    116130        $(call Image/Build/CFE,$(1),96348GW-11,6348,bccfe,,bccfe) 
    117131        $(call Image/Build/CFE,$(1),96348GW-11,6348,bc300,,bc300) 
     132        # TP-Link 8900GB 
     133        $(call Image/Build/CFE,$(1),96348GW-11,6348,bc310,$(shell printf 'PRID\x89\x10\x00\x02'),td8900GB) 
    118134        # Davolink DV201AMR 
    119135        $(call Image/Build/CFEOLD,$(1),DV201AMR,6348) 
     
    121137        $(call Image/Build/CFE,$(1),96348GW-A,6348,bccfe,,bccfe) 
    122138        $(call Image/Build/CFE,$(1),96348GW-A,6348,bc300,,bc300) 
    123         $(call Image/Build/CFE,$(1),96348GW-A,6348,bc310,OpenWRT-$(SVN_REVISION),bc310) 
    124         # NetGear DG834GT 
     139        # NetGear DG834GT, DG834PN 
    125140        $(call Image/Build/CFE,$(1),96348GW-10,6348,bccfe,,bccfe) 
    126141        $(call Image/Build/CFE,$(1),96348GW-10,6348,bc300,,bc300) 
     142        # Belkin f5d7633 
     143        $(call Image/Build/CFE,$(1),96348GW-10,6348,bc310,,bc310) 
     144        # D-Link DSL-2640B 
     145        $(call Image/Build/CFE,$(1),D-4P-W,6348,bc310,,bc310) 
     146 
     147        # TP-Link TD-8810A, TD-8810B, TD-8811A, TD-8811B 
     148        $(call Image/Build/CFE,$(1),8L-2M-8M,6338,bc300,,bc300) 
    127149 
    128150        # Sagem F@ST2404 
     
    132154        # Inventel Livebox 
    133155        $(call Image/Build/RedBoot,livebox) 
     156        # D-Link DSL-2740B 
     157        $(call Image/Build/CFE,$(1),96358GW,6358,bc310,,dsl2740b) 
    134158        # Pirelli Alice Gate VoIP 2 Plus Wi-Fi AGPF-S0 
    135159        $(call Image/Build/CFEAGPF,$(1),AGPF-S0,6358,0x20000,bccfe,,bccfe) 
  • trunk/target/linux/brcm63xx/image/README.images-bcm63xx

    r16393 r16396  
    4545image reflects the router for which the image was created. 
    4646 
    47 router     |method| codever |tagid |filename 
    48 +----------+------+---------+------+------------------------------------------- 
    49 |any       |cfe   |   any   |bccfe |openwrt-<board>-<filesystem>-bccfe-cfe.bin 
    50 |any       |t/ftp |   any   |bc300 |openwrt-<board>-<filesystem>-bc300-cfe.bin 
    51 |          |web   |3.00-3.06|bc300 |openwrt-<board>-<filesystem>-bc300-cfe.bin 
    52 |          |web   |3.08     |bc308 |openwrt-<board>-<filesystem>-bc308-cfe.bin 
    53 |          |web   |3.10-3.12|bc310 |openwrt-<board>-<filesystem>-bc310-cfe.bin 
    54 |CT536     |web   |3.02     |bc300 |openwrt-<board>-<filesystem>-bc300-cfe.bin 
    55 |CT5621    |web   |3.02     |bc300 |openwrt-<board>-<filesystem>-bc300-cfe.bin 
    56 |GW6000    |web   |3.00     |bc300 |openwrt-<board>-<filesystem>-bc300-cfe.bin 
    57 |USR9108?  |web   |?        |bc300 |openwrt-<board>-<filesystem>-bc300-cfe.bin 
    58 |USR9108?  |web   |?        |bc310 |openwrt-<board>-<filesystem>-bc310-cfe.bin 
    59 |DG834GT   |web   |3.02     |bc300 |openwrt-<board>-<filesystem>-bc300-cfe.bin 
    60 |V2500V    |web   |3.08     |bc308 |openwrt-<board>-<filesystem>-btvgr-cfe.bin 
    61 |GW6200    |web   |3.10     |bc310 |openwrt-<board>-<filesystem>-gw6200-cfe.bin 
    62 |Neufbox4  |web   |3.12     |bc310 |openwrt-<board>-<filesystem>-nb4-cfe.bin 
    63 |F@ST2404  |web   |?        |bc300 |openwrt-<board>-<filesystem>-bc300-cfe.bin 
    64 |F@ST2404  |web   |?        |bc310 |openwrt-<board>-<filesystem>-bc310-cfe.bin 
    65 |AGVoIP2+Wi|web   |alice3.06|ag306 |openwrt-<board>-<filesystem>-agv2+w-cfe.bin 
     47router        |method| codever |tagid |filename 
     48+-------------+------+---------+------+---------------------------------------- 
     49|any          |cfe   |   any   |bccfe |openwrt-<board>-<fs>-bccfe-cfe.bin 
     50|any          |t/ftp |   any   |bc300 |openwrt-<board>-<fs>-bc300-cfe.bin 
     51|             |web   |3.00-3.06|bc300 |openwrt-<board>-<fs>-bc300-cfe.bin 
     52|             |web   |3.10-3.12|bc310 |openwrt-<board>-<fs>-bc310-cfe.bin 
     53|AGVoIP2+WiFi |web   |alice3.06|ag306 |openwrt-AGPF-S0-<fs>-agv2+w-cfe.bin 
     54|CT536        |web   |3.02     |bc300 |openwrt-96348GW-11-<fs>-bc300-cfe.bin 
     55|CT5621       |web   |3.02     |bc300 |openwrt-96348GW-11-<fs>-bc300-cfe.bin 
     56|DG834GT      |web   |3.02     |bc300 |openwrt-96348GW-10-<fs>-bc300-cfe.bin 
     57|DG834PN      |web   |3.02     |bc300 |openwrt-96348GW-10-<fs>-bc300-cfe.bin 
     58|DSL-2640B    |web   |3.10     |bc310 |openwrt-D-4P-W-<fs>-bc310-cfe.bin 
     59|DSL-2740B    |web   |3.10     |bc310 |openwrt-96358GW-<fs>-dsl2740b-cfe.bin 
     60|F5D7633      |web   |3.10     |bc310 |openwrt-96348GW-10-<fs>-bc310-cfe.bin 
     61|F@ST2404     |web   |?        |bc300 |openwrt-F@ST2404-<fs>-bc300-cfe.bin 
     62|F@ST2404     |web   |?        |bc310 |openwrt-F@ST2404-<fs>-bc310-cfe.bin 
     63|GW6000       |web   |3.00     |bc300 |openwrt-96348GW-<fs>-bc300-cfe.bin 
     64|GW6200       |web   |3.10     |bc310 |openwrt-96348GW-<fs>-gw6200-cfe.bin 
     65|Neufbox4     |web   |3.12     |bc310 |openwrt-96358VW-<fs>-nb4-cfe.bin 
     66|TD8810A      |web   |3.06     |bc300 |openwrt-8L-2M-8M-<fs>-bc306-cfe.bin 
     67|TD8810B      |web   |3.06     |bc300 |openwrt-8L-2M-8M-<fs>-bc306-cfe.bin 
     68|TD8811A      |web   |3.06     |bc300 |openwrt-8L-2M-8M-<fs>-bc306-cfe.bin 
     69|TD8811B      |web   |3.06     |bc300 |openwrt-8L-2M-8M-<fs>-bc306-cfe.bin 
     70|TD8900GB     |web   |3.06     |bc300 |openwrt-96348GW-11-<fs>-td8900gb-cfe.bin 
     71|USR9108      |web   |?        |bc300 |openwrt-96348GW-A-<fs>-bc300-cfe.bin 
     72|V2091_BTR    |web   |2.21     |bc221 |openwrt-V2091_BB-<fs>-btvgr-cfe.bin 
     73|V2091_ROI    |web   |2.21     |bc221 |openwrt-V2091-<fs>-btvgr-cfe.bin 
     74|V2091_WB     |web   |2.21     |bc221 |openwrt-V2091-<fs>-btvgr-cfe.bin 
     75|V210_BTR     |web   |2.21     |bc221 |openwrt-V210_BB-<fs>-btvgr-cfe.bin 
     76|V210_ROI     |web   |2.21     |bc221 |openwrt-V210-<fs>-btvgr-cfe.bin 
     77|V210_WB      |web   |2.21     |bc221 |openwrt-V210-<fs>-btvgr-cfe.bin 
     78|V2110        |web   |2.21     |bc221 |openwrt-V2110-<fs>-btvgr-cfe.bin 
     79|V2110_AA     |web   |2.21     |bc221 |openwrt-V2110-<fs>-btvgr-cfe.bin 
     80|V2110_ROI    |web   |2.21     |bc221 |openwrt-V2110-<fs>-btvgr-cfe.bin 
     81|V2500V       |web   |2.21     |bc221 |openwrt-V2500V_BB-<fs>-btvgr-cfe.bin 
     82|V2500V_AA    |web   |2.21     |bc221 |openwrt-V2500V_BB-<fs>-btvgr-cfe.bin 
     83|V2500V_SIP_CLUB |web|2.21     |bc221 |openwrt-V2500V_BB-<fs>-btvgr-cfe.bin 
    6684 
    6785Old imagetag routers 
     
    7896Vendor                     |Model                                     |Code Ver 
    7997---------------------------+------------------------------------------+-------- 
     98Belkin                     |F5D7633                                   |3.10 
     99British Telecom (BT)       |Voyager V2091_BTR                         |2.21 
     100British Telecom (BT)       |Voyager V2091_ROI                         |2.21 
     101British Telecom (BT)       |Voyager V2091_WB                          |2.21 
     102British Telecom (BT)       |Voyager V210_BTR                          |2.21 
     103British Telecom (BT)       |Voyager V210_ROI                          |2.21 
     104British Telecom (BT)       |Voyager V210_WB                           |2.21 
     105British Telecom (BT)       |Voyager V2110                             |2.21 
     106British Telecom (BT)       |Voyager V2110_AA                          |2.21 
     107British Telecom (BT)       |Voyager V2110_ROI                         |2.21 
     108British Telecom (BT)       |Voyager V220V                             |2.21 
     109British Telecom (BT)       |Voyager V2500V                            |2.21 
     110British Telecom (BT)       |Voyager V2500V_AA                         |2.21 
     111British Telecom (BT)       |Voyager V2500V_SIP_CLUB                   |2.21 
    80112Comtrend                   |CT-5261                                   |3.02 
    81113Comtrend                   |CT-536                                    |3.02 
     114D-Link                     |DSL-2640B                                 |3.10 
     115D-Link                     |DSL-2670B                                 |3.10 
     116NetGear                    |DG834GT                                   |3.02 
     117NetGear                    |DG834PN                                   |3.02 
     118Neuf Cegetel               |Neufbox 4                                 |3.12 
     119Pirelli                    |Alice Gate Wi-Fi (+VoIP models?)          |ag 3.06 
     120Sagem                      |F@ST2404                                  |? 
     121TP-Link                    |TD-8810A                                  |3.06 
     122TP-Link                    |TD-8810B                                  |3.06 
     123TP-Link                    |TD-8811A                                  |3.06 
     124TP-Link                    |TD-8811B                                  |3.06 
     125TP-Link                    |TD-W8900GB                                |3.06 
    82126Tecom                      |GW6000                                    |3.00 
    83127Tecom                      |GW6200                                    |3.10 
    84 Pirelli                    |Alice Gate Wi-Fi (+VoIP models?)          |ag 3.06 
    85 ?                          |TD-88xx                                   |3.06 
    86 BT                         |Voyager V2500V                            |3.08 (?) 
    87 Belkin                     |F5D7633                                   |3.10 
    88 Neuf ?                     |Neufbox 4                                 |3.12 
    89 NetGear                    |DG834GT                                   |3.02 
    90 Sagem                      |F@ST2404                                  |? 
    91128USR                        |9108                                      |? 
  • trunk/tools/firmware-utils/src/imagetag.c

    r16393 r16396  
    131131            const uint32_t loadaddr, const uint32_t entry, 
    132132            const char *ver, const char *magic2, const uint32_t flash_bs, 
    133             const char *tagid, const char *information) 
     133            const char *tagid, const char *information, const char *layoutver) 
    134134{ 
    135135        union bcm_tag tag; 
     
    227227                /* Compute the crc32 of the kernel and padding between kernel and rootfs) */ 
    228228                kernelcrc = compute_crc32(kernelcrc, binfile, kerneloff - fwaddr, kernellen + rootfsoffpadlen); 
    229         } else if ( tagid && ( (strncmp(tagid, "bc308", TAGID_LEN) == 0))) { 
     229        } else if ( tagid && ( (strncmp(tagid, "bc221", TAGID_LEN) == 0))) { 
    230230                /* Compute the crc32 of the entire image (deadC0de included) */ 
    231231                imagecrc = compute_crc32(imagecrc, binfile, kerneloff - fwaddr, imagelen); 
     
    344344          int2tag(tag.ag306.kernelCRC, kernelcrc); 
    345345          int2tag(tag.ag306.headerCRC, crc32(IMAGETAG_CRC_START, (uint8_t*)&tag, sizeof(tag) - 20)); 
    346         } else if ( tagid && (strcmp(tagid, "bc308") == 0)) { 
     346        } else if ( tagid && (strcmp(tagid, "bc221") == 0)) { 
    347347          /* Build the tag */ 
    348           strncpy(tag.bc308.tagVersion, ver, TAGVER_LEN); 
    349           strncpy(tag.bc308.sig_1, IMAGETAG_MAGIC1, sizeof(tag.bc308.sig_1) - 1); 
    350           strncpy(tag.bc308.sig_2, magic2, sizeof(tag.bc308.sig_2) - 1); 
    351           strcpy(tag.bc308.chipid, chipid); 
    352           strcpy(tag.bc308.boardid, boardid); 
    353           strcpy(tag.bc308.big_endian, "1"); 
    354           sprintf(tag.bc308.totalLength, "%lu", imagelen); 
     348          strncpy(tag.bc221.tagVersion, ver, TAGVER_LEN); 
     349          strncpy(tag.bc221.sig_1, IMAGETAG_MAGIC1, sizeof(tag.bc221.sig_1) - 1); 
     350          strncpy(tag.bc221.sig_2, magic2, sizeof(tag.bc221.sig_2) - 1); 
     351          strcpy(tag.bc221.chipid, chipid); 
     352          strcpy(tag.bc221.boardid, boardid); 
     353          strcpy(tag.bc221.big_endian, "1"); 
     354          sprintf(tag.bc221.totalLength, "%lu", imagelen); 
    355355 
    356356          /* We don't include CFE */ 
    357           strcpy(tag.bc308.cfeAddress, "0"); 
    358           strcpy(tag.bc308.cfeLength, "0"); 
     357          strcpy(tag.bc221.cfeAddress, "0"); 
     358          strcpy(tag.bc221.cfeLength, "0"); 
    359359 
    360360          if (kernelfile) { 
    361             sprintf(tag.bc308.kernelAddress, "%lu", kerneloff); 
    362             sprintf(tag.bc308.kernelLength, "%lu", kernellen + rootfsoffpadlen); 
     361            sprintf(tag.bc221.kernelAddress, "%lu", kerneloff); 
     362            sprintf(tag.bc221.kernelLength, "%lu", kernellen + rootfsoffpadlen); 
    363363          } 
    364364 
    365365          if (rootfsfile) { 
    366             sprintf(tag.bc308.flashImageStart, "%lu", kerneloff); 
    367             sprintf(tag.bc308.flashRootLength, "%lu", rootfslen + sizeof(deadcode)); 
    368             sprintf(tag.bc308.rootAddress, "%lu", rootfsoff); 
    369             sprintf(tag.bc308.rootLength, "%lu", rootfslen); 
    370           } 
    371  
    372           strncpy(tag.bc308.tagId, "bc308", TAGID_LEN); 
    373           strcpy(tag.bc308.flashLayoutVer, "5"); // This is needed at least for BT Voyager 
    374  
    375           int2tag(tag.bc308.tagIdCRC, crc32(IMAGETAG_CRC_START, (uint8_t*)&(tag.bc308.tagId[0]), TAGID_LEN)); 
    376           int2tag(tag.bc308.imageCRC, imagecrc); 
    377           int2tag(tag.bc308.kernelCRC, kernelcrc); 
    378           int2tag(tag.bc308.headerCRC, crc32(IMAGETAG_CRC_START, (uint8_t*)&tag, sizeof(tag) - 20)); 
     366            sprintf(tag.bc221.flashImageStart, "%lu", kerneloff); 
     367            sprintf(tag.bc221.flashRootLength, "%lu", rootfslen + sizeof(deadcode)); 
     368            sprintf(tag.bc221.rootAddress, "%lu", rootfsoff); 
     369            sprintf(tag.bc221.rootLength, "%lu", rootfslen); 
     370          } 
     371 
     372          strncpy(tag.bc221.tagId, "bc221", TAGID_LEN); 
     373          if (layoutver) { 
     374            strncpy(tag.bc221.flashLayoutVer, layoutver, TAGLAYOUT_LEN); 
     375          } 
     376 
     377          int2tag(tag.bc221.tagIdCRC, crc32(IMAGETAG_CRC_START, (uint8_t*)&(tag.bc221.tagId[0]), TAGID_LEN)); 
     378          int2tag(tag.bc221.imageCRC, imagecrc); 
     379          int2tag(tag.bc221.kernelCRC, kernelcrc); 
     380          int2tag(tag.bc221.headerCRC, crc32(IMAGETAG_CRC_START, (uint8_t*)&tag, sizeof(tag) - 20)); 
    379381        } else if ( tagid && (strcmp(tagid, "bc310") == 0)) { 
    380382          /* Build the tag */ 
     
    426428{ 
    427429        int c, i; 
    428         char *kernel, *rootfs, *bin, *boardid, *chipid, *magic2, *ver, *tagid, *information; 
     430        char *kernel, *rootfs, *bin, *boardid, *chipid, *magic2, *ver, *tagid, *information, *layoutver; 
    429431        uint32_t flashstart, fwoffset, loadaddr, entry; 
    430432        uint32_t fwaddr, flash_bs; 
    431433        int tagidfound = 0; 
    432434         
    433         kernel = rootfs = bin = boardid = chipid = magic2 = ver = tagid = information = NULL; 
     435        kernel = rootfs = bin = boardid = chipid = magic2 = ver = tagid = information = layoutver = NULL; 
    434436        entry = 0; 
    435437 
     
    443445        printf("Copyright (C) 2009 Daniel Dickinson\n"); 
    444446 
    445         while ((c = getopt(argc, argv, "i:f:o:b:c:s:n:v:m:k:l:e:h:t:d:")) != -1) { 
     447        while ((c = getopt(argc, argv, "i:f:o:b:c:s:n:v:m:k:l:e:h:t:d:y:")) != -1) { 
    446448                switch (c) { 
    447449                        case 'i': 
     
    486488                        case 'd': 
    487489                                information = optarg; 
     490                                break; 
     491                        case 'y': 
     492                                layoutver = optarg; 
    488493                                break; 
    489494                        case 'h': 
     
    504509                                fprintf(stderr, "       -t <tagid> - type if imagetag to create, use 'list' to see available choices"); 
    505510                                fprintf(stderr, "       -d <information> - vendor specific information, for those that need it"); 
     511                                fprintf(stderr, "       -y <layoutver> - Flash Layout Version (2.2x code versions need this)"); 
    506512                                fprintf(stderr, "       -h                      - Displays this text\n\n"); 
    507513                                return 1; 
     
    574580                 
    575581 
    576         return tagfile(kernel, rootfs, bin, boardid, chipid, fwaddr, loadaddr, entry, ver, magic2, flash_bs, tagid, information); 
     582        return tagfile(kernel, rootfs, bin, boardid, chipid, fwaddr, loadaddr, entry, ver, magic2, flash_bs, tagid, information, layoutver); 
    577583} 
Note: See TracChangeset for help on using the changeset viewer.