The attached patch adds building of firmware
authorflorian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Wed, 10 Jun 2009 08:24:13 +0000 (08:24 +0000)
committerflorian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Wed, 10 Jun 2009 08:24:13 +0000 (08:24 +0000)
images for more routers based on the brcm63xx chipset.

Signed-Off By: Daniel Dickinson <crazycshore@gmail.com>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@16396 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/brcm63xx/files/drivers/mtd/maps/bcm963xx-flash.c
target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/bcm_tag.h
target/linux/brcm63xx/image/Makefile
target/linux/brcm63xx/image/README.images-bcm63xx
tools/firmware-utils/src/imagetag.c

index bdb5799..371fad2 100644 (file)
@@ -163,16 +163,16 @@ static int parse_cfe_partitions( struct mtd_info *master, struct mtd_partition *
            boardid = &(buf->ag306.boardid[0]);
            break;
          case 3:
            boardid = &(buf->ag306.boardid[0]);
            break;
          case 3:
-           matchtagid = "bc308";
-           tagid = &(buf->bc308.tagId[0]);
-           sscanf(buf->bc308.rootAddress,"%u", &rootfsaddr);
-           sscanf(buf->bc308.rootLength, "%u", &rootfslen);
-           sscanf(buf->bc308.kernelAddress, "%u", &kerneladdr);
-           sscanf(buf->bc308.kernelLength, "%u", &kernellen);
-           sscanf(buf->bc308.totalLength, "%u", &totallen);
-           tagidcrc = buf->bc308.tagIdCRC;
-           tagversion = &(buf->bc308.tagVersion[0]);
-           boardid = &(buf->bc308.boardid[0]);
+           matchtagid = "bc221";
+           tagid = &(buf->bc221.tagId[0]);
+           sscanf(buf->bc221.rootAddress,"%u", &rootfsaddr);
+           sscanf(buf->bc221.rootLength, "%u", &rootfslen);
+           sscanf(buf->bc221.kernelAddress, "%u", &kerneladdr);
+           sscanf(buf->bc221.kernelLength, "%u", &kernellen);
+           sscanf(buf->bc221.totalLength, "%u", &totallen);
+           tagidcrc = buf->bc221.tagIdCRC;
+           tagversion = &(buf->bc221.tagVersion[0]);
+           boardid = &(buf->bc221.boardid[0]);
            break;
          case 4:
            matchtagid = "bc310";
            break;
          case 4:
            matchtagid = "bc310";
index 1613150..a4f06f8 100644 (file)
@@ -6,6 +6,7 @@
 #define TAGID_LEN  6                   /* Length of tag ID */
 #define TAGINFO_LEN 20                 /* Length of vendor information field in tag */
 #define TAGVER_LEN 4                   /* Length of Tag Version */
 #define TAGID_LEN  6                   /* Length of tag ID */
 #define TAGINFO_LEN 20                 /* Length of vendor information field in tag */
 #define TAGVER_LEN 4                   /* Length of Tag Version */
+#define TAGLAYOUT_LEN 4                /* Length of FlashLayoutVer */
 
 #define NUM_TAGID 5
 #define IMAGETAG_CRC_START             0xFFFFFFFF
 
 #define NUM_TAGID 5
 #define IMAGETAG_CRC_START             0xFFFFFFFF
@@ -15,18 +16,18 @@ struct tagiddesc_t {
   char tagiddesc[80];
 };
 
   char tagiddesc[80];
 };
 
- // what is called bc308 may actually be BT Voyager-specific
- // bc310 should be right 
+ // bc221 is used by BT Voyager and should be right
+ // bc310 should be right, and may apply to 3.08 code as well
 #define TAGID_DEFINITIONS { \
   { "bccfe", "Broadcom CFE flash image" }, \
   { "bc300", "Broadcom code version 3.00-3.06 and all ftp/tftp flash" }, \
   { "ag306", "Alice Gate (Pirelli, based on Broadcom 3.06)" }, \
 #define TAGID_DEFINITIONS { \
   { "bccfe", "Broadcom CFE flash image" }, \
   { "bc300", "Broadcom code version 3.00-3.06 and all ftp/tftp flash" }, \
   { "ag306", "Alice Gate (Pirelli, based on Broadcom 3.06)" }, \
-  { "bc308", "Broadcom code version 3.08" }, \
+  { "bc221", "Broadcom code version 2.21" }, \
   { "bc310", "Broadcom code version 3.10-3.12" }, \
 }
 
 struct bcm_tag_bccfe {
   { "bc310", "Broadcom code version 3.10-3.12" }, \
 }
 
 struct bcm_tag_bccfe {
-       unsigned char tagVersion[TAGVER_LEN];                    // 0-3: Version of the image tag
+       unsigned char tagVersion[TAGVER_LEN];           // 0-3: Version of the image tag
        unsigned char sig_1[20];                        // 4-23: Company Line 1
        unsigned char sig_2[14];                        // 24-37: Company Line 2
        unsigned char chipid[6];                        // 38-43: Chip this image is for
        unsigned char sig_1[20];                        // 4-23: Company Line 1
        unsigned char sig_2[14];                        // 24-37: Company Line 2
        unsigned char chipid[6];                        // 38-43: Chip this image is for
@@ -52,7 +53,7 @@ struct bcm_tag_bccfe {
 };
 
 struct bcm_tag_bc300 {
 };
 
 struct bcm_tag_bc300 {
-       unsigned char tagVersion[4];                    // 0-3: Version of the image tag
+       unsigned char tagVersion[TAGVER_LEN];           // 0-3: Version of the image tag
        unsigned char sig_1[20];                        // 4-23: Company Line 1
        unsigned char sig_2[14];                        // 24-37: Company Line 2
        unsigned char chipid[6];                        // 38-43: Chip this image is for
        unsigned char sig_1[20];                        // 4-23: Company Line 1
        unsigned char sig_2[14];                        // 24-37: Company Line 2
        unsigned char chipid[6];                        // 38-43: Chip this image is for
@@ -80,7 +81,7 @@ struct bcm_tag_bc300 {
 };
 
 struct bcm_tag_ag306 {
 };
 
 struct bcm_tag_ag306 {
-       unsigned char tagVersion[4];                    // 0-3: Version of the image tag
+       unsigned char tagVersion[TAGVER_LEN];           // 0-3: Version of the image tag
        unsigned char sig_1[20];                        // 4-23: Company Line 1
        unsigned char sig_2[14];                        // 24-37: Company Line 2
        unsigned char chipid[6];                        // 38-43: Chip this image is for
        unsigned char sig_1[20];                        // 4-23: Company Line 1
        unsigned char sig_2[14];                        // 24-37: Company Line 2
        unsigned char chipid[6];                        // 38-43: Chip this image is for
@@ -105,8 +106,8 @@ struct bcm_tag_ag306 {
         unsigned char tagId[TAGID_LEN];                 // 250-255: 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
 };
 
         unsigned char tagId[TAGID_LEN];                 // 250-255: 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
 };
 
-struct bcm_tag_bc308 {
-       unsigned char tagVersion[4];                    // 0-3: Version of the image tag
+struct bcm_tag_bc221 {
+       unsigned char tagVersion[TAGVER_LEN];           // 0-3: Version of the image tag
        unsigned char sig_1[20];                        // 4-23: Company Line 1
        unsigned char sig_2[14];                        // 24-37: Company Line 2
        unsigned char chipid[6];                        // 38-43: Chip this image is for
        unsigned char sig_1[20];                        // 4-23: Company Line 1
        unsigned char sig_2[14];                        // 24-37: Company Line 2
        unsigned char chipid[6];                        // 38-43: Chip this image is for
@@ -121,12 +122,12 @@ struct bcm_tag_bc308 {
        unsigned char kernelLength[IMAGE_LEN];          // 128-137: Size of kernel
        unsigned char dualImage[2];                     // 138-139: Unused at present
        unsigned char inactiveFlag[2];                  // 140-141: Unused at present
        unsigned char kernelLength[IMAGE_LEN];          // 128-137: Size of kernel
        unsigned char dualImage[2];                     // 138-139: Unused at present
        unsigned char inactiveFlag[2];                  // 140-141: Unused at present
-        unsigned char information1[TAGINFO_LEN+2];      // 142-163: Unused at present
+        unsigned char rsa_signature[TAGINFO_LEN];       // 142-161: RSA Signature (unused at present; some vendors may use this)
+        unsigned char reserved5[2];                     // 162-163: Unused at present
         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
         unsigned char rootAddress[ADDRESS_LEN];         // 170-181: Address in memory of rootfs partition
         unsigned char rootLength[IMAGE_LEN];            // 182-191: Size of rootfs partition
         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
         unsigned char rootAddress[ADDRESS_LEN];         // 170-181: Address in memory of rootfs partition
         unsigned char rootLength[IMAGE_LEN];            // 182-191: Size of rootfs partition
-        unsigned char flashLayoutVer[2];                // 192-193: Version flash layout
-       unsigned char curflashLayoutVer[2];             // 194-195: Unused at present
+        unsigned char flashLayoutVer[4];                // 192-195: Version flash layout
         unsigned char kernelCRC[4];                     // 196-199: Guessed to be kernel CRC
         unsigned char reserved4[16];                    // 200-215: Reserved area; unused at present
        unsigned char imageCRC[4];                      // 216-219: CRC32 of images
         unsigned char kernelCRC[4];                     // 196-199: Guessed to be kernel CRC
         unsigned char reserved4[16];                    // 200-215: Reserved area; unused at present
        unsigned char imageCRC[4];                      // 216-219: CRC32 of images
@@ -170,7 +171,7 @@ union bcm_tag {
   struct bcm_tag_bccfe bccfe;
   struct bcm_tag_bc300 bc300;
   struct bcm_tag_ag306 ag306;
   struct bcm_tag_bccfe bccfe;
   struct bcm_tag_bc300 bc300;
   struct bcm_tag_ag306 ag306;
-  struct bcm_tag_bc308 bc308;
+  struct bcm_tag_bc221 bc221;
   struct bcm_tag_bc310 bc310;
 };
 
   struct bcm_tag_bc310 bc310;
 };
 
index 9ba137d..310b3bf 100644 (file)
@@ -34,7 +34,7 @@ define Image/Build/CFE
        $(STAGING_DIR_HOST)/bin/imagetag -i $(KDIR)/vmlinux.lzma.cfe -f $(KDIR)/root.$(1) \
                -o $(BIN_DIR)/openwrt-$(2)-$(1)-$(6)-cfe.bin \
                -b $(2) -c $(3) -e $(LOADADDR) -l $(LOADADDR) \
        $(STAGING_DIR_HOST)/bin/imagetag -i $(KDIR)/vmlinux.lzma.cfe -f $(KDIR)/root.$(1) \
                -o $(BIN_DIR)/openwrt-$(2)-$(1)-$(6)-cfe.bin \
                -b $(2) -c $(3) -e $(LOADADDR) -l $(LOADADDR) \
-               -t $(4) -d "$(5)"
+               -t $(4) -d "$(5)" $(7)
 #              -b $(2) -c $(3) -e $(KERNEL_ENTRY) -l $(LOADADDR)
 
 endef
 #              -b $(2) -c $(3) -e $(KERNEL_ENTRY) -l $(LOADADDR)
 
 endef
@@ -99,14 +99,28 @@ define Image/Build
        $(STAGING_DIR_HOST)/bin/trx -o $(BIN_DIR)/openwrt-$(BOARD)-$(1).trx -f $(KDIR)/loader.gz -f $(KDIR)/vmlinux.lzma $(call trxalign/$(1)) -f $(KDIR)/root.$(1)
        dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/openwrt-$(BOARD)-root.$(1) bs=128k conv=sync
        # Various routers
        $(STAGING_DIR_HOST)/bin/trx -o $(BIN_DIR)/openwrt-$(BOARD)-$(1).trx -f $(KDIR)/loader.gz -f $(KDIR)/vmlinux.lzma $(call trxalign/$(1)) -f $(KDIR)/root.$(1)
        dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/openwrt-$(BOARD)-root.$(1) bs=128k conv=sync
        # Various routers
-       $(call Image/Build/CFE,$(1),96345GW2,6345,bccfe,,bccfe)
-       $(call Image/Build/CFE,$(1),96345GW2,6345,bc300,,bc300)
-       $(call Image/Build/CFE,$(1),96345GW2,6345,bc310,OpenWRT-$(SVN_REVISION),bc310)
-       $(call Image/Build/CFE,$(1),96348GW,6348,bccfe,,bcfe)
-       # BT Voyager V2500V
-       $(call Image/Build/CFE,$(1),V2500V_BB,6348,bc308,,btvgr)
+       $(call Image/Build/CFE,$(1),96345GW2,6345,bccfe,,bccfe,)
+       $(call Image/Build/CFE,$(1),96345GW2,6345,bc221,,bc221,-y 5)
+       $(call Image/Build/CFE,$(1),96345GW2,6345,bc300,,bc300,)
+       $(call Image/Build/CFE,$(1),96345GW2,6345,bc310,OpenWRT-$(SVN_REVISION),bc310,)
+       $(call Image/Build/CFE,$(1),96348GW,6348,bccfe,,bcfe,)
+       $(call Image/Build/CFE,$(1),96348GW,6348,bc221,,bc221,-y 5)
+       # BT Voyager V210_BTR
+       $(call Image/Build/CFE,$(1),V210_BB,6348,bc221,,btvgr,-y 5)
+       # BT Voyager V210_ROI, V210_WB
+       $(call Image/Build/CFE,$(1),V210,6348,bc221,,btvgr,-y 5)
+       # BT Voyager V2091_BTR
+       $(call Image/Build/CFE,$(1),V2091_BB,6348,bc221,,btvgr,-y 5)
+       # BT Voyager V2091_ROI, V2091_WB
+       $(call Image/Build/CFE,$(1),V2091,6348,bc221,,btvgr,-y 5)
+       # BT Voyager V220V, V220V_MGCP_BTR
+       $(call Image/Build/CFE,$(1),RTA1052V,6348,bc221,,btvgr,-y 5)
+       # BT Voyager V2110, V2110_AA, V2110_ROI
+       $(call Image/Build/CFE,$(1),V2110,6348,bc221,,btvgr,-y 5)
+       # BT Voyager V2500V, V2500V_SIP_CLUB, V2500V_AA
+       $(call Image/Build/CFE,$(1),V2500V_BB,6348,bc221,,btvgr,-y 5)
        # Tecom GW6000
        # Tecom GW6000
-       $(call Image/Build/CFE,$(1),96348GW,6348,bc300,,bc300)
+       $(call Image/Build/CFE,$(1),96348GW,6348,bc300,,bc300,)
        # Tecom GW6200
        $(call Image/Build/CFE,$(1),96348GW,6348,bc310,$(shell printf '\x99'),gw6200)
        # Neufbox4
        # Tecom GW6200
        $(call Image/Build/CFE,$(1),96348GW,6348,bc310,$(shell printf '\x99'),gw6200)
        # Neufbox4
@@ -115,15 +129,23 @@ define Image/Build
        # Comtrend 536, 5621
        $(call Image/Build/CFE,$(1),96348GW-11,6348,bccfe,,bccfe)
        $(call Image/Build/CFE,$(1),96348GW-11,6348,bc300,,bc300)
        # Comtrend 536, 5621
        $(call Image/Build/CFE,$(1),96348GW-11,6348,bccfe,,bccfe)
        $(call Image/Build/CFE,$(1),96348GW-11,6348,bc300,,bc300)
+       # TP-Link 8900GB
+       $(call Image/Build/CFE,$(1),96348GW-11,6348,bc310,$(shell printf 'PRID\x89\x10\x00\x02'),td8900GB)
        # Davolink DV201AMR
        $(call Image/Build/CFEOLD,$(1),DV201AMR,6348)
        # USR 9108
        $(call Image/Build/CFE,$(1),96348GW-A,6348,bccfe,,bccfe)
        $(call Image/Build/CFE,$(1),96348GW-A,6348,bc300,,bc300)
        # Davolink DV201AMR
        $(call Image/Build/CFEOLD,$(1),DV201AMR,6348)
        # USR 9108
        $(call Image/Build/CFE,$(1),96348GW-A,6348,bccfe,,bccfe)
        $(call Image/Build/CFE,$(1),96348GW-A,6348,bc300,,bc300)
-       $(call Image/Build/CFE,$(1),96348GW-A,6348,bc310,OpenWRT-$(SVN_REVISION),bc310)
-       # NetGear DG834GT
+       # NetGear DG834GT, DG834PN
        $(call Image/Build/CFE,$(1),96348GW-10,6348,bccfe,,bccfe)
        $(call Image/Build/CFE,$(1),96348GW-10,6348,bc300,,bc300)
        $(call Image/Build/CFE,$(1),96348GW-10,6348,bccfe,,bccfe)
        $(call Image/Build/CFE,$(1),96348GW-10,6348,bc300,,bc300)
+       # Belkin f5d7633
+       $(call Image/Build/CFE,$(1),96348GW-10,6348,bc310,,bc310)
+       # D-Link DSL-2640B
+       $(call Image/Build/CFE,$(1),D-4P-W,6348,bc310,,bc310)
+
+       # TP-Link TD-8810A, TD-8810B, TD-8811A, TD-8811B
+       $(call Image/Build/CFE,$(1),8L-2M-8M,6338,bc300,,bc300)
 
        # Sagem F@ST2404
        $(call Image/Build/CFE,$(1),F@ST2404,6348,bccfe,,bccfe)
 
        # Sagem F@ST2404
        $(call Image/Build/CFE,$(1),F@ST2404,6348,bccfe,,bccfe)
@@ -131,6 +153,8 @@ define Image/Build
        $(call Image/Build/CFE,$(1),F@ST2404,6348,bc310,OpenWRT-$(SVN_REVISION),bc310)
        # Inventel Livebox
        $(call Image/Build/RedBoot,livebox)
        $(call Image/Build/CFE,$(1),F@ST2404,6348,bc310,OpenWRT-$(SVN_REVISION),bc310)
        # Inventel Livebox
        $(call Image/Build/RedBoot,livebox)
+       # D-Link DSL-2740B
+       $(call Image/Build/CFE,$(1),96358GW,6358,bc310,,dsl2740b)
        # Pirelli Alice Gate VoIP 2 Plus Wi-Fi AGPF-S0
        $(call Image/Build/CFEAGPF,$(1),AGPF-S0,6358,0x20000,bccfe,,bccfe)
        $(call Image/Build/CFEAGPF,$(1),AGPF-S0,6358,0x20000,ag306,,agv2+w)
        # Pirelli Alice Gate VoIP 2 Plus Wi-Fi AGPF-S0
        $(call Image/Build/CFEAGPF,$(1),AGPF-S0,6358,0x20000,bccfe,,bccfe)
        $(call Image/Build/CFEAGPF,$(1),AGPF-S0,6358,0x20000,ag306,,agv2+w)
index 574d1bd..9cf0574 100644 (file)
@@ -44,25 +44,43 @@ Some boards share the same tag format, but require vendor-specific fields in
 the board.  In that case the tagid is shared, but the filename of the generated
 image reflects the router for which the image was created.
 
 the board.  In that case the tagid is shared, but the filename of the generated
 image reflects the router for which the image was created.
 
-router     |method| codever |tagid |filename
-+----------+------+---------+------+-------------------------------------------
-|any       |cfe   |   any   |bccfe |openwrt-<board>-<filesystem>-bccfe-cfe.bin
-|any       |t/ftp |   any   |bc300 |openwrt-<board>-<filesystem>-bc300-cfe.bin
-|          |web   |3.00-3.06|bc300 |openwrt-<board>-<filesystem>-bc300-cfe.bin
-|          |web   |3.08     |bc308 |openwrt-<board>-<filesystem>-bc308-cfe.bin
-|          |web   |3.10-3.12|bc310 |openwrt-<board>-<filesystem>-bc310-cfe.bin
-|CT536     |web   |3.02     |bc300 |openwrt-<board>-<filesystem>-bc300-cfe.bin
-|CT5621    |web   |3.02     |bc300 |openwrt-<board>-<filesystem>-bc300-cfe.bin
-|GW6000    |web   |3.00     |bc300 |openwrt-<board>-<filesystem>-bc300-cfe.bin
-|USR9108?  |web   |?        |bc300 |openwrt-<board>-<filesystem>-bc300-cfe.bin
-|USR9108?  |web   |?        |bc310 |openwrt-<board>-<filesystem>-bc310-cfe.bin
-|DG834GT   |web   |3.02     |bc300 |openwrt-<board>-<filesystem>-bc300-cfe.bin
-|V2500V    |web   |3.08     |bc308 |openwrt-<board>-<filesystem>-btvgr-cfe.bin
-|GW6200    |web   |3.10     |bc310 |openwrt-<board>-<filesystem>-gw6200-cfe.bin
-|Neufbox4  |web   |3.12     |bc310 |openwrt-<board>-<filesystem>-nb4-cfe.bin
-|F@ST2404  |web   |?        |bc300 |openwrt-<board>-<filesystem>-bc300-cfe.bin
-|F@ST2404  |web   |?        |bc310 |openwrt-<board>-<filesystem>-bc310-cfe.bin
-|AGVoIP2+Wi|web   |alice3.06|ag306 |openwrt-<board>-<filesystem>-agv2+w-cfe.bin
+router        |method| codever |tagid |filename
++-------------+------+---------+------+----------------------------------------
+|any          |cfe   |   any   |bccfe |openwrt-<board>-<fs>-bccfe-cfe.bin
+|any          |t/ftp |   any   |bc300 |openwrt-<board>-<fs>-bc300-cfe.bin
+|             |web   |3.00-3.06|bc300 |openwrt-<board>-<fs>-bc300-cfe.bin
+|             |web   |3.10-3.12|bc310 |openwrt-<board>-<fs>-bc310-cfe.bin
+|AGVoIP2+WiFi |web   |alice3.06|ag306 |openwrt-AGPF-S0-<fs>-agv2+w-cfe.bin
+|CT536        |web   |3.02     |bc300 |openwrt-96348GW-11-<fs>-bc300-cfe.bin
+|CT5621       |web   |3.02     |bc300 |openwrt-96348GW-11-<fs>-bc300-cfe.bin
+|DG834GT      |web   |3.02     |bc300 |openwrt-96348GW-10-<fs>-bc300-cfe.bin
+|DG834PN      |web   |3.02     |bc300 |openwrt-96348GW-10-<fs>-bc300-cfe.bin
+|DSL-2640B    |web   |3.10     |bc310 |openwrt-D-4P-W-<fs>-bc310-cfe.bin
+|DSL-2740B    |web   |3.10     |bc310 |openwrt-96358GW-<fs>-dsl2740b-cfe.bin
+|F5D7633      |web   |3.10     |bc310 |openwrt-96348GW-10-<fs>-bc310-cfe.bin
+|F@ST2404     |web   |?        |bc300 |openwrt-F@ST2404-<fs>-bc300-cfe.bin
+|F@ST2404     |web   |?        |bc310 |openwrt-F@ST2404-<fs>-bc310-cfe.bin
+|GW6000       |web   |3.00     |bc300 |openwrt-96348GW-<fs>-bc300-cfe.bin
+|GW6200       |web   |3.10     |bc310 |openwrt-96348GW-<fs>-gw6200-cfe.bin
+|Neufbox4     |web   |3.12     |bc310 |openwrt-96358VW-<fs>-nb4-cfe.bin
+|TD8810A      |web   |3.06     |bc300 |openwrt-8L-2M-8M-<fs>-bc306-cfe.bin
+|TD8810B      |web   |3.06     |bc300 |openwrt-8L-2M-8M-<fs>-bc306-cfe.bin
+|TD8811A      |web   |3.06     |bc300 |openwrt-8L-2M-8M-<fs>-bc306-cfe.bin
+|TD8811B      |web   |3.06     |bc300 |openwrt-8L-2M-8M-<fs>-bc306-cfe.bin
+|TD8900GB     |web   |3.06     |bc300 |openwrt-96348GW-11-<fs>-td8900gb-cfe.bin
+|USR9108      |web   |?        |bc300 |openwrt-96348GW-A-<fs>-bc300-cfe.bin
+|V2091_BTR    |web   |2.21     |bc221 |openwrt-V2091_BB-<fs>-btvgr-cfe.bin
+|V2091_ROI    |web   |2.21     |bc221 |openwrt-V2091-<fs>-btvgr-cfe.bin
+|V2091_WB     |web   |2.21     |bc221 |openwrt-V2091-<fs>-btvgr-cfe.bin
+|V210_BTR     |web   |2.21     |bc221 |openwrt-V210_BB-<fs>-btvgr-cfe.bin
+|V210_ROI     |web   |2.21     |bc221 |openwrt-V210-<fs>-btvgr-cfe.bin
+|V210_WB      |web   |2.21     |bc221 |openwrt-V210-<fs>-btvgr-cfe.bin
+|V2110        |web   |2.21     |bc221 |openwrt-V2110-<fs>-btvgr-cfe.bin
+|V2110_AA     |web   |2.21     |bc221 |openwrt-V2110-<fs>-btvgr-cfe.bin
+|V2110_ROI    |web   |2.21     |bc221 |openwrt-V2110-<fs>-btvgr-cfe.bin
+|V2500V       |web   |2.21     |bc221 |openwrt-V2500V_BB-<fs>-btvgr-cfe.bin
+|V2500V_AA    |web   |2.21     |bc221 |openwrt-V2500V_BB-<fs>-btvgr-cfe.bin
+|V2500V_SIP_CLUB |web|2.21     |bc221 |openwrt-V2500V_BB-<fs>-btvgr-cfe.bin
 
 Old imagetag routers
 --------------------
 
 Old imagetag routers
 --------------------
@@ -77,15 +95,34 @@ Known router->code versions
 
 Vendor                     |Model                                     |Code Ver
 ---------------------------+------------------------------------------+--------
 
 Vendor                     |Model                                     |Code Ver
 ---------------------------+------------------------------------------+--------
+Belkin                     |F5D7633                                   |3.10
+British Telecom (BT)       |Voyager V2091_BTR                         |2.21
+British Telecom (BT)       |Voyager V2091_ROI                         |2.21
+British Telecom (BT)       |Voyager V2091_WB                          |2.21
+British Telecom (BT)       |Voyager V210_BTR                          |2.21
+British Telecom (BT)       |Voyager V210_ROI                          |2.21
+British Telecom (BT)       |Voyager V210_WB                           |2.21
+British Telecom (BT)       |Voyager V2110                             |2.21
+British Telecom (BT)       |Voyager V2110_AA                          |2.21
+British Telecom (BT)       |Voyager V2110_ROI                         |2.21
+British Telecom (BT)       |Voyager V220V                             |2.21
+British Telecom (BT)       |Voyager V2500V                            |2.21
+British Telecom (BT)       |Voyager V2500V_AA                         |2.21
+British Telecom (BT)       |Voyager V2500V_SIP_CLUB                   |2.21
 Comtrend                   |CT-5261                                   |3.02
 Comtrend                   |CT-536                                    |3.02
 Comtrend                   |CT-5261                                   |3.02
 Comtrend                   |CT-536                                    |3.02
-Tecom                      |GW6000                                    |3.00
-Tecom                      |GW6200                                    |3.10
-Pirelli                    |Alice Gate Wi-Fi (+VoIP models?)          |ag 3.06
-?                          |TD-88xx                                   |3.06
-BT                         |Voyager V2500V                            |3.08 (?)
-Belkin                     |F5D7633                                   |3.10
-Neuf ?                     |Neufbox 4                                 |3.12
+D-Link                     |DSL-2640B                                 |3.10
+D-Link                     |DSL-2670B                                 |3.10
 NetGear                           |DG834GT                                   |3.02
 NetGear                           |DG834GT                                   |3.02
+NetGear                           |DG834PN                                   |3.02
+Neuf Cegetel               |Neufbox 4                                 |3.12
+Pirelli                    |Alice Gate Wi-Fi (+VoIP models?)          |ag 3.06
 Sagem                     |F@ST2404                                  |?
 Sagem                     |F@ST2404                                  |?
+TP-Link                    |TD-8810A                                  |3.06
+TP-Link                           |TD-8810B                                  |3.06
+TP-Link                           |TD-8811A                                  |3.06
+TP-Link                           |TD-8811B                                  |3.06
+TP-Link                           |TD-W8900GB                                |3.06
+Tecom                      |GW6000                                    |3.00
+Tecom                      |GW6200                                    |3.10
 USR                       |9108                                      |?
 USR                       |9108                                      |?
index 52b628a..4d5bb7d 100644 (file)
@@ -130,7 +130,7 @@ int tagfile(const char *kernel, const char *rootfs, const char *bin,
            const char *boardid, const char *chipid, const uint32_t fwaddr,
            const uint32_t loadaddr, const uint32_t entry,
            const char *ver, const char *magic2, const uint32_t flash_bs,
            const char *boardid, const char *chipid, const uint32_t fwaddr,
            const uint32_t loadaddr, const uint32_t entry,
            const char *ver, const char *magic2, const uint32_t flash_bs,
-           const char *tagid, const char *information)
+           const char *tagid, const char *information, const char *layoutver)
 {
        union bcm_tag tag;
        struct kernelhdr khdr;
 {
        union bcm_tag tag;
        struct kernelhdr khdr;
@@ -226,7 +226,7 @@ int tagfile(const char *kernel, const char *rootfs, const char *bin,
        } else if ( tagid && (strncmp(tagid, "ag306", TAGID_LEN) == 0)) {
                /* Compute the crc32 of the kernel and padding between kernel and rootfs) */
                kernelcrc = compute_crc32(kernelcrc, binfile, kerneloff - fwaddr, kernellen + rootfsoffpadlen);
        } else if ( tagid && (strncmp(tagid, "ag306", TAGID_LEN) == 0)) {
                /* Compute the crc32 of the kernel and padding between kernel and rootfs) */
                kernelcrc = compute_crc32(kernelcrc, binfile, kerneloff - fwaddr, kernellen + rootfsoffpadlen);
-       } else if ( tagid && ( (strncmp(tagid, "bc308", TAGID_LEN) == 0))) {
+       } else if ( tagid && ( (strncmp(tagid, "bc221", TAGID_LEN) == 0))) {
                /* Compute the crc32 of the entire image (deadC0de included) */
                imagecrc = compute_crc32(imagecrc, binfile, kerneloff - fwaddr, imagelen);
                /* Compute the crc32 of the kernel and padding between kernel and rootfs) */
                /* Compute the crc32 of the entire image (deadC0de included) */
                imagecrc = compute_crc32(imagecrc, binfile, kerneloff - fwaddr, imagelen);
                /* Compute the crc32 of the kernel and padding between kernel and rootfs) */
@@ -343,39 +343,41 @@ int tagfile(const char *kernel, const char *rootfs, const char *bin,
          int2tag(tag.ag306.tagIdCRC, crc32(IMAGETAG_CRC_START, (uint8_t*)&(tag.ag306.tagId[0]), TAGID_LEN));
          int2tag(tag.ag306.kernelCRC, kernelcrc);
          int2tag(tag.ag306.headerCRC, crc32(IMAGETAG_CRC_START, (uint8_t*)&tag, sizeof(tag) - 20));
          int2tag(tag.ag306.tagIdCRC, crc32(IMAGETAG_CRC_START, (uint8_t*)&(tag.ag306.tagId[0]), TAGID_LEN));
          int2tag(tag.ag306.kernelCRC, kernelcrc);
          int2tag(tag.ag306.headerCRC, crc32(IMAGETAG_CRC_START, (uint8_t*)&tag, sizeof(tag) - 20));
-       } else if ( tagid && (strcmp(tagid, "bc308") == 0)) {
+       } else if ( tagid && (strcmp(tagid, "bc221") == 0)) {
          /* Build the tag */
          /* Build the tag */
-         strncpy(tag.bc308.tagVersion, ver, TAGVER_LEN);
-         strncpy(tag.bc308.sig_1, IMAGETAG_MAGIC1, sizeof(tag.bc308.sig_1) - 1);
-         strncpy(tag.bc308.sig_2, magic2, sizeof(tag.bc308.sig_2) - 1);
-         strcpy(tag.bc308.chipid, chipid);
-         strcpy(tag.bc308.boardid, boardid);
-         strcpy(tag.bc308.big_endian, "1");
-         sprintf(tag.bc308.totalLength, "%lu", imagelen);
+         strncpy(tag.bc221.tagVersion, ver, TAGVER_LEN);
+         strncpy(tag.bc221.sig_1, IMAGETAG_MAGIC1, sizeof(tag.bc221.sig_1) - 1);
+         strncpy(tag.bc221.sig_2, magic2, sizeof(tag.bc221.sig_2) - 1);
+         strcpy(tag.bc221.chipid, chipid);
+         strcpy(tag.bc221.boardid, boardid);
+         strcpy(tag.bc221.big_endian, "1");
+         sprintf(tag.bc221.totalLength, "%lu", imagelen);
 
          /* We don't include CFE */
 
          /* We don't include CFE */
-         strcpy(tag.bc308.cfeAddress, "0");
-         strcpy(tag.bc308.cfeLength, "0");
+         strcpy(tag.bc221.cfeAddress, "0");
+         strcpy(tag.bc221.cfeLength, "0");
 
          if (kernelfile) {
 
          if (kernelfile) {
-           sprintf(tag.bc308.kernelAddress, "%lu", kerneloff);
-           sprintf(tag.bc308.kernelLength, "%lu", kernellen + rootfsoffpadlen);
+           sprintf(tag.bc221.kernelAddress, "%lu", kerneloff);
+           sprintf(tag.bc221.kernelLength, "%lu", kernellen + rootfsoffpadlen);
          }
 
          if (rootfsfile) {
          }
 
          if (rootfsfile) {
-           sprintf(tag.bc308.flashImageStart, "%lu", kerneloff);
-           sprintf(tag.bc308.flashRootLength, "%lu", rootfslen + sizeof(deadcode));
-           sprintf(tag.bc308.rootAddress, "%lu", rootfsoff);
-           sprintf(tag.bc308.rootLength, "%lu", rootfslen);
+           sprintf(tag.bc221.flashImageStart, "%lu", kerneloff);
+           sprintf(tag.bc221.flashRootLength, "%lu", rootfslen + sizeof(deadcode));
+           sprintf(tag.bc221.rootAddress, "%lu", rootfsoff);
+           sprintf(tag.bc221.rootLength, "%lu", rootfslen);
          }
 
          }
 
-         strncpy(tag.bc308.tagId, "bc308", TAGID_LEN);
-         strcpy(tag.bc308.flashLayoutVer, "5"); // This is needed at least for BT Voyager
+         strncpy(tag.bc221.tagId, "bc221", TAGID_LEN);
+         if (layoutver) {
+           strncpy(tag.bc221.flashLayoutVer, layoutver, TAGLAYOUT_LEN);
+         }
 
 
-         int2tag(tag.bc308.tagIdCRC, crc32(IMAGETAG_CRC_START, (uint8_t*)&(tag.bc308.tagId[0]), TAGID_LEN));
-         int2tag(tag.bc308.imageCRC, imagecrc);
-         int2tag(tag.bc308.kernelCRC, kernelcrc);
-         int2tag(tag.bc308.headerCRC, crc32(IMAGETAG_CRC_START, (uint8_t*)&tag, sizeof(tag) - 20));
+         int2tag(tag.bc221.tagIdCRC, crc32(IMAGETAG_CRC_START, (uint8_t*)&(tag.bc221.tagId[0]), TAGID_LEN));
+         int2tag(tag.bc221.imageCRC, imagecrc);
+         int2tag(tag.bc221.kernelCRC, kernelcrc);
+         int2tag(tag.bc221.headerCRC, crc32(IMAGETAG_CRC_START, (uint8_t*)&tag, sizeof(tag) - 20));
        } else if ( tagid && (strcmp(tagid, "bc310") == 0)) {
          /* Build the tag */
          strncpy(tag.bc310.tagVersion, ver, TAGVER_LEN);
        } else if ( tagid && (strcmp(tagid, "bc310") == 0)) {
          /* Build the tag */
          strncpy(tag.bc310.tagVersion, ver, TAGVER_LEN);
@@ -425,12 +427,12 @@ int tagfile(const char *kernel, const char *rootfs, const char *bin,
 int main(int argc, char **argv)
 {
         int c, i;
 int main(int argc, char **argv)
 {
         int c, i;
-       char *kernel, *rootfs, *bin, *boardid, *chipid, *magic2, *ver, *tagid, *information;
+       char *kernel, *rootfs, *bin, *boardid, *chipid, *magic2, *ver, *tagid, *information, *layoutver;
        uint32_t flashstart, fwoffset, loadaddr, entry;
        uint32_t fwaddr, flash_bs;
        int tagidfound = 0;
        
        uint32_t flashstart, fwoffset, loadaddr, entry;
        uint32_t fwaddr, flash_bs;
        int tagidfound = 0;
        
-       kernel = rootfs = bin = boardid = chipid = magic2 = ver = tagid = information = NULL;
+       kernel = rootfs = bin = boardid = chipid = magic2 = ver = tagid = information = layoutver = NULL;
        entry = 0;
 
        flashstart = DEFAULT_FLASH_START;
        entry = 0;
 
        flashstart = DEFAULT_FLASH_START;
@@ -442,7 +444,7 @@ int main(int argc, char **argv)
        printf("Copyright (C) 2008 Axel Gembe\n");
        printf("Copyright (C) 2009 Daniel Dickinson\n");
 
        printf("Copyright (C) 2008 Axel Gembe\n");
        printf("Copyright (C) 2009 Daniel Dickinson\n");
 
-       while ((c = getopt(argc, argv, "i:f:o:b:c:s:n:v:m:k:l:e:h:t:d:")) != -1) {
+       while ((c = getopt(argc, argv, "i:f:o:b:c:s:n:v:m:k:l:e:h:t:d:y:")) != -1) {
                switch (c) {
                        case 'i':
                                kernel = optarg;
                switch (c) {
                        case 'i':
                                kernel = optarg;
@@ -486,6 +488,9 @@ int main(int argc, char **argv)
                        case 'd':
                                information = optarg;
                                break;
                        case 'd':
                                information = optarg;
                                break;
+                       case 'y':
+                               layoutver = optarg;
+                               break;
                        case 'h':
                        default:
                                fprintf(stderr, "Usage: imagetag <parameters>\n\n");
                        case 'h':
                        default:
                                fprintf(stderr, "Usage: imagetag <parameters>\n\n");
@@ -503,6 +508,7 @@ int main(int argc, char **argv)
                                fprintf(stderr, "       -e <entry>              - Address where the kernel entry point will end up\n");
                                fprintf(stderr, "       -t <tagid> - type if imagetag to create, use 'list' to see available choices");
                                fprintf(stderr, "       -d <information> - vendor specific information, for those that need it");
                                fprintf(stderr, "       -e <entry>              - Address where the kernel entry point will end up\n");
                                fprintf(stderr, "       -t <tagid> - type if imagetag to create, use 'list' to see available choices");
                                fprintf(stderr, "       -d <information> - vendor specific information, for those that need it");
+                               fprintf(stderr, "       -y <layoutver> - Flash Layout Version (2.2x code versions need this)");
                                fprintf(stderr, "       -h                      - Displays this text\n\n");
                                return 1;
                }
                                fprintf(stderr, "       -h                      - Displays this text\n\n");
                                return 1;
                }
@@ -573,5 +579,5 @@ int main(int argc, char **argv)
        }
                
 
        }
                
 
-       return tagfile(kernel, rootfs, bin, boardid, chipid, fwaddr, loadaddr, entry, ver, magic2, flash_bs, tagid, information);
+       return tagfile(kernel, rootfs, bin, boardid, chipid, fwaddr, loadaddr, entry, ver, magic2, flash_bs, tagid, information, layoutver);
 }
 }
This page took 0.06202 seconds and 4 git commands to generate.