bnx2: Use request_firmware()

Based on original patch by Ben Hutchings <ben@decadent.org.uk> and
Bastian Blank <waldi@debian.org>, with the following main changes:

Separated the mips firmware and rv2p firmware into different files
to make it easier to update them separately.

Added some code to fixup the rv2p code with run-time information
such as PAGE_SIZE.

Update version to 2.0.0.

Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Michael Chan 2009-04-04 16:51:14 -07:00 committed by David S. Miller
parent 5d4d9e8ad6
commit 57579f7629
11 changed files with 12825 additions and 9104 deletions

View file

@ -2234,7 +2234,7 @@ config BNX2
tristate "Broadcom NetXtremeII support"
depends on PCI
select CRC32
select ZLIB_INFLATE
select FW_LOADER
help
This driver supports Broadcom NetXtremeII gigabit Ethernet cards.

View file

@ -46,19 +46,20 @@
#include <linux/crc32.h>
#include <linux/prefetch.h>
#include <linux/cache.h>
#include <linux/zlib.h>
#include <linux/firmware.h>
#include <linux/log2.h>
#include "bnx2.h"
#include "bnx2_fw.h"
#include "bnx2_fw2.h"
#define FW_BUF_SIZE 0x10000
#define DRV_MODULE_NAME "bnx2"
#define PFX DRV_MODULE_NAME ": "
#define DRV_MODULE_VERSION "1.9.3"
#define DRV_MODULE_RELDATE "March 17, 2009"
#define DRV_MODULE_VERSION "2.0.0"
#define DRV_MODULE_RELDATE "April 2, 2009"
#define FW_MIPS_FILE_06 "bnx2/bnx2-mips-06-4.6.16.fw"
#define FW_RV2P_FILE_06 "bnx2/bnx2-rv2p-06-4.6.16.fw"
#define FW_MIPS_FILE_09 "bnx2/bnx2-mips-09-4.6.17.fw"
#define FW_RV2P_FILE_09 "bnx2/bnx2-rv2p-09-4.6.15.fw"
#define RUN_AT(x) (jiffies + (x))
@ -72,6 +73,10 @@ MODULE_AUTHOR("Michael Chan <mchan@broadcom.com>");
MODULE_DESCRIPTION("Broadcom NetXtreme II BCM5706/5708/5709/5716 Driver");
MODULE_LICENSE("GPL");
MODULE_VERSION(DRV_MODULE_VERSION);
MODULE_FIRMWARE(FW_MIPS_FILE_06);
MODULE_FIRMWARE(FW_RV2P_FILE_06);
MODULE_FIRMWARE(FW_MIPS_FILE_09);
MODULE_FIRMWARE(FW_RV2P_FILE_09);
static int disable_msi = 0;
@ -3391,33 +3396,143 @@ bnx2_set_rx_mode(struct net_device *dev)
spin_unlock_bh(&bp->phy_lock);
}
static void
load_rv2p_fw(struct bnx2 *bp, __le32 *rv2p_code, u32 rv2p_code_len,
u32 rv2p_proc)
static int __devinit
check_fw_section(const struct firmware *fw,
const struct bnx2_fw_file_section *section,
u32 alignment, bool non_empty)
{
int i;
u32 val;
u32 offset = be32_to_cpu(section->offset);
u32 len = be32_to_cpu(section->len);
if (rv2p_proc == RV2P_PROC2 && CHIP_NUM(bp) == CHIP_NUM_5709) {
val = le32_to_cpu(rv2p_code[XI_RV2P_PROC2_MAX_BD_PAGE_LOC]);
val &= ~XI_RV2P_PROC2_BD_PAGE_SIZE_MSK;
val |= XI_RV2P_PROC2_BD_PAGE_SIZE;
rv2p_code[XI_RV2P_PROC2_MAX_BD_PAGE_LOC] = cpu_to_le32(val);
if ((offset == 0 && len != 0) || offset >= fw->size || offset & 3)
return -EINVAL;
if ((non_empty && len == 0) || len > fw->size - offset ||
len & (alignment - 1))
return -EINVAL;
return 0;
}
static int __devinit
check_mips_fw_entry(const struct firmware *fw,
const struct bnx2_mips_fw_file_entry *entry)
{
if (check_fw_section(fw, &entry->text, 4, true) ||
check_fw_section(fw, &entry->data, 4, false) ||
check_fw_section(fw, &entry->rodata, 4, false))
return -EINVAL;
return 0;
}
static int __devinit
bnx2_request_firmware(struct bnx2 *bp)
{
const char *mips_fw_file, *rv2p_fw_file;
const struct bnx2_mips_fw_file *mips;
const struct bnx2_rv2p_fw_file *rv2p;
int rc;
if (CHIP_NUM(bp) == CHIP_NUM_5709) {
mips_fw_file = FW_MIPS_FILE_09;
rv2p_fw_file = FW_RV2P_FILE_09;
} else {
mips_fw_file = FW_MIPS_FILE_06;
rv2p_fw_file = FW_RV2P_FILE_06;
}
rc = request_firmware(&bp->mips_firmware, mips_fw_file, &bp->pdev->dev);
if (rc) {
printk(KERN_ERR PFX "Can't load firmware file \"%s\"\n",
mips_fw_file);
return rc;
}
rc = request_firmware(&bp->rv2p_firmware, rv2p_fw_file, &bp->pdev->dev);
if (rc) {
printk(KERN_ERR PFX "Can't load firmware file \"%s\"\n",
rv2p_fw_file);
return rc;
}
mips = (const struct bnx2_mips_fw_file *) bp->mips_firmware->data;
rv2p = (const struct bnx2_rv2p_fw_file *) bp->rv2p_firmware->data;
if (bp->mips_firmware->size < sizeof(*mips) ||
check_mips_fw_entry(bp->mips_firmware, &mips->com) ||
check_mips_fw_entry(bp->mips_firmware, &mips->cp) ||
check_mips_fw_entry(bp->mips_firmware, &mips->rxp) ||
check_mips_fw_entry(bp->mips_firmware, &mips->tpat) ||
check_mips_fw_entry(bp->mips_firmware, &mips->txp)) {
printk(KERN_ERR PFX "Firmware file \"%s\" is invalid\n",
mips_fw_file);
return -EINVAL;
}
if (bp->rv2p_firmware->size < sizeof(*rv2p) ||
check_fw_section(bp->rv2p_firmware, &rv2p->proc1.rv2p, 8, true) ||
check_fw_section(bp->rv2p_firmware, &rv2p->proc2.rv2p, 8, true)) {
printk(KERN_ERR PFX "Firmware file \"%s\" is invalid\n",
rv2p_fw_file);
return -EINVAL;
}
return 0;
}
static u32
rv2p_fw_fixup(u32 rv2p_proc, int idx, u32 loc, u32 rv2p_code)
{
switch (idx) {
case RV2P_P1_FIXUP_PAGE_SIZE_IDX:
rv2p_code &= ~RV2P_BD_PAGE_SIZE_MSK;
rv2p_code |= RV2P_BD_PAGE_SIZE;
break;
}
return rv2p_code;
}
static int
load_rv2p_fw(struct bnx2 *bp, u32 rv2p_proc,
const struct bnx2_rv2p_fw_file_entry *fw_entry)
{
u32 rv2p_code_len, file_offset;
__be32 *rv2p_code;
int i;
u32 val, cmd, addr;
rv2p_code_len = be32_to_cpu(fw_entry->rv2p.len);
file_offset = be32_to_cpu(fw_entry->rv2p.offset);
rv2p_code = (__be32 *)(bp->rv2p_firmware->data + file_offset);
if (rv2p_proc == RV2P_PROC1) {
cmd = BNX2_RV2P_PROC1_ADDR_CMD_RDWR;
addr = BNX2_RV2P_PROC1_ADDR_CMD;
} else {
cmd = BNX2_RV2P_PROC2_ADDR_CMD_RDWR;
addr = BNX2_RV2P_PROC2_ADDR_CMD;
}
for (i = 0; i < rv2p_code_len; i += 8) {
REG_WR(bp, BNX2_RV2P_INSTR_HIGH, le32_to_cpu(*rv2p_code));
REG_WR(bp, BNX2_RV2P_INSTR_HIGH, be32_to_cpu(*rv2p_code));
rv2p_code++;
REG_WR(bp, BNX2_RV2P_INSTR_LOW, le32_to_cpu(*rv2p_code));
REG_WR(bp, BNX2_RV2P_INSTR_LOW, be32_to_cpu(*rv2p_code));
rv2p_code++;
if (rv2p_proc == RV2P_PROC1) {
val = (i / 8) | BNX2_RV2P_PROC1_ADDR_CMD_RDWR;
REG_WR(bp, BNX2_RV2P_PROC1_ADDR_CMD, val);
val = (i / 8) | cmd;
REG_WR(bp, addr, val);
}
else {
val = (i / 8) | BNX2_RV2P_PROC2_ADDR_CMD_RDWR;
REG_WR(bp, BNX2_RV2P_PROC2_ADDR_CMD, val);
rv2p_code = (__be32 *)(bp->rv2p_firmware->data + file_offset);
for (i = 0; i < 8; i++) {
u32 loc, code;
loc = be32_to_cpu(fw_entry->fixup[i]);
if (loc && ((loc * 4) < rv2p_code_len)) {
code = be32_to_cpu(*(rv2p_code + loc - 1));
REG_WR(bp, BNX2_RV2P_INSTR_HIGH, code);
code = be32_to_cpu(*(rv2p_code + loc));
code = rv2p_fw_fixup(rv2p_proc, i, loc, code);
REG_WR(bp, BNX2_RV2P_INSTR_LOW, code);
val = (loc / 2) | cmd;
REG_WR(bp, addr, val);
}
}
@ -3428,14 +3543,18 @@ load_rv2p_fw(struct bnx2 *bp, __le32 *rv2p_code, u32 rv2p_code_len,
else {
REG_WR(bp, BNX2_RV2P_COMMAND, BNX2_RV2P_COMMAND_PROC2_RESET);
}
return 0;
}
static int
load_cpu_fw(struct bnx2 *bp, const struct cpu_reg *cpu_reg, struct fw_info *fw)
load_cpu_fw(struct bnx2 *bp, const struct cpu_reg *cpu_reg,
const struct bnx2_mips_fw_file_entry *fw_entry)
{
u32 addr, len, file_offset;
__be32 *data;
u32 offset;
u32 val;
int rc;
/* Halt the CPU. */
val = bnx2_reg_rd_ind(bp, cpu_reg->mode);
@ -3444,64 +3563,52 @@ load_cpu_fw(struct bnx2 *bp, const struct cpu_reg *cpu_reg, struct fw_info *fw)
bnx2_reg_wr_ind(bp, cpu_reg->state, cpu_reg->state_value_clear);
/* Load the Text area. */
offset = cpu_reg->spad_base + (fw->text_addr - cpu_reg->mips_view_base);
if (fw->gz_text) {
addr = be32_to_cpu(fw_entry->text.addr);
len = be32_to_cpu(fw_entry->text.len);
file_offset = be32_to_cpu(fw_entry->text.offset);
data = (__be32 *)(bp->mips_firmware->data + file_offset);
offset = cpu_reg->spad_base + (addr - cpu_reg->mips_view_base);
if (len) {
int j;
rc = zlib_inflate_blob(fw->text, FW_BUF_SIZE, fw->gz_text,
fw->gz_text_len);
if (rc < 0)
return rc;
for (j = 0; j < (fw->text_len / 4); j++, offset += 4) {
bnx2_reg_wr_ind(bp, offset, le32_to_cpu(fw->text[j]));
}
for (j = 0; j < (len / 4); j++, offset += 4)
bnx2_reg_wr_ind(bp, offset, be32_to_cpu(data[j]));
}
/* Load the Data area. */
offset = cpu_reg->spad_base + (fw->data_addr - cpu_reg->mips_view_base);
if (fw->data) {
addr = be32_to_cpu(fw_entry->data.addr);
len = be32_to_cpu(fw_entry->data.len);
file_offset = be32_to_cpu(fw_entry->data.offset);
data = (__be32 *)(bp->mips_firmware->data + file_offset);
offset = cpu_reg->spad_base + (addr - cpu_reg->mips_view_base);
if (len) {
int j;
for (j = 0; j < (fw->data_len / 4); j++, offset += 4) {
bnx2_reg_wr_ind(bp, offset, fw->data[j]);
}
}
/* Load the SBSS area. */
offset = cpu_reg->spad_base + (fw->sbss_addr - cpu_reg->mips_view_base);
if (fw->sbss_len) {
int j;
for (j = 0; j < (fw->sbss_len / 4); j++, offset += 4) {
bnx2_reg_wr_ind(bp, offset, 0);
}
}
/* Load the BSS area. */
offset = cpu_reg->spad_base + (fw->bss_addr - cpu_reg->mips_view_base);
if (fw->bss_len) {
int j;
for (j = 0; j < (fw->bss_len/4); j++, offset += 4) {
bnx2_reg_wr_ind(bp, offset, 0);
}
for (j = 0; j < (len / 4); j++, offset += 4)
bnx2_reg_wr_ind(bp, offset, be32_to_cpu(data[j]));
}
/* Load the Read-Only area. */
offset = cpu_reg->spad_base +
(fw->rodata_addr - cpu_reg->mips_view_base);
if (fw->rodata) {
addr = be32_to_cpu(fw_entry->rodata.addr);
len = be32_to_cpu(fw_entry->rodata.len);
file_offset = be32_to_cpu(fw_entry->rodata.offset);
data = (__be32 *)(bp->mips_firmware->data + file_offset);
offset = cpu_reg->spad_base + (addr - cpu_reg->mips_view_base);
if (len) {
int j;
for (j = 0; j < (fw->rodata_len / 4); j++, offset += 4) {
bnx2_reg_wr_ind(bp, offset, fw->rodata[j]);
}
for (j = 0; j < (len / 4); j++, offset += 4)
bnx2_reg_wr_ind(bp, offset, be32_to_cpu(data[j]));
}
/* Clear the pre-fetch instruction. */
bnx2_reg_wr_ind(bp, cpu_reg->inst, 0);
bnx2_reg_wr_ind(bp, cpu_reg->pc, fw->start_addr);
val = be32_to_cpu(fw_entry->start_addr);
bnx2_reg_wr_ind(bp, cpu_reg->pc, val);
/* Start the CPU. */
val = bnx2_reg_rd_ind(bp, cpu_reg->mode);
@ -3515,95 +3622,40 @@ load_cpu_fw(struct bnx2 *bp, const struct cpu_reg *cpu_reg, struct fw_info *fw)
static int
bnx2_init_cpus(struct bnx2 *bp)
{
struct fw_info *fw;
int rc, rv2p_len;
void *text, *rv2p;
const struct bnx2_mips_fw_file *mips_fw =
(const struct bnx2_mips_fw_file *) bp->mips_firmware->data;
const struct bnx2_rv2p_fw_file *rv2p_fw =
(const struct bnx2_rv2p_fw_file *) bp->rv2p_firmware->data;
int rc;
/* Initialize the RV2P processor. */
text = vmalloc(FW_BUF_SIZE);
if (!text)
return -ENOMEM;
if (CHIP_NUM(bp) == CHIP_NUM_5709) {
rv2p = bnx2_xi_rv2p_proc1;
rv2p_len = sizeof(bnx2_xi_rv2p_proc1);
} else {
rv2p = bnx2_rv2p_proc1;
rv2p_len = sizeof(bnx2_rv2p_proc1);
}
rc = zlib_inflate_blob(text, FW_BUF_SIZE, rv2p, rv2p_len);
if (rc < 0)
goto init_cpu_err;
load_rv2p_fw(bp, text, rc /* == len */, RV2P_PROC1);
if (CHIP_NUM(bp) == CHIP_NUM_5709) {
rv2p = bnx2_xi_rv2p_proc2;
rv2p_len = sizeof(bnx2_xi_rv2p_proc2);
} else {
rv2p = bnx2_rv2p_proc2;
rv2p_len = sizeof(bnx2_rv2p_proc2);
}
rc = zlib_inflate_blob(text, FW_BUF_SIZE, rv2p, rv2p_len);
if (rc < 0)
goto init_cpu_err;
load_rv2p_fw(bp, text, rc /* == len */, RV2P_PROC2);
load_rv2p_fw(bp, RV2P_PROC1, &rv2p_fw->proc1);
load_rv2p_fw(bp, RV2P_PROC2, &rv2p_fw->proc2);
/* Initialize the RX Processor. */
if (CHIP_NUM(bp) == CHIP_NUM_5709)
fw = &bnx2_rxp_fw_09;
else
fw = &bnx2_rxp_fw_06;
fw->text = text;
rc = load_cpu_fw(bp, &cpu_reg_rxp, fw);
rc = load_cpu_fw(bp, &cpu_reg_rxp, &mips_fw->rxp);
if (rc)
goto init_cpu_err;
/* Initialize the TX Processor. */
if (CHIP_NUM(bp) == CHIP_NUM_5709)
fw = &bnx2_txp_fw_09;
else
fw = &bnx2_txp_fw_06;
fw->text = text;
rc = load_cpu_fw(bp, &cpu_reg_txp, fw);
rc = load_cpu_fw(bp, &cpu_reg_txp, &mips_fw->txp);
if (rc)
goto init_cpu_err;
/* Initialize the TX Patch-up Processor. */
if (CHIP_NUM(bp) == CHIP_NUM_5709)
fw = &bnx2_tpat_fw_09;
else
fw = &bnx2_tpat_fw_06;
fw->text = text;
rc = load_cpu_fw(bp, &cpu_reg_tpat, fw);
rc = load_cpu_fw(bp, &cpu_reg_tpat, &mips_fw->tpat);
if (rc)
goto init_cpu_err;
/* Initialize the Completion Processor. */
if (CHIP_NUM(bp) == CHIP_NUM_5709)
fw = &bnx2_com_fw_09;
else
fw = &bnx2_com_fw_06;
fw->text = text;
rc = load_cpu_fw(bp, &cpu_reg_com, fw);
rc = load_cpu_fw(bp, &cpu_reg_com, &mips_fw->com);
if (rc)
goto init_cpu_err;
/* Initialize the Command Processor. */
if (CHIP_NUM(bp) == CHIP_NUM_5709)
fw = &bnx2_cp_fw_09;
else
fw = &bnx2_cp_fw_06;
fw->text = text;
rc = load_cpu_fw(bp, &cpu_reg_cp, fw);
rc = load_cpu_fw(bp, &cpu_reg_cp, &mips_fw->cp);
init_cpu_err:
vfree(text);
return rc;
}
@ -7807,6 +7859,10 @@ bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
pci_set_drvdata(pdev, dev);
rc = bnx2_request_firmware(bp);
if (rc)
goto error;
memcpy(dev->dev_addr, bp->mac_addr, 6);
memcpy(dev->perm_addr, bp->mac_addr, 6);
@ -7823,13 +7879,7 @@ bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
if ((rc = register_netdev(dev))) {
dev_err(&pdev->dev, "Cannot register net device\n");
if (bp->regview)
iounmap(bp->regview);
pci_release_regions(pdev);
pci_disable_device(pdev);
pci_set_drvdata(pdev, NULL);
free_netdev(dev);
return rc;
goto error;
}
printk(KERN_INFO "%s: %s (%c%d) %s found at mem %lx, "
@ -7843,6 +7893,20 @@ bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
bp->pdev->irq, dev->dev_addr);
return 0;
error:
if (bp->mips_firmware)
release_firmware(bp->mips_firmware);
if (bp->rv2p_firmware)
release_firmware(bp->rv2p_firmware);
if (bp->regview)
iounmap(bp->regview);
pci_release_regions(pdev);
pci_disable_device(pdev);
pci_set_drvdata(pdev, NULL);
free_netdev(dev);
return rc;
}
static void __devexit
@ -7855,6 +7919,11 @@ bnx2_remove_one(struct pci_dev *pdev)
unregister_netdev(dev);
if (bp->mips_firmware)
release_firmware(bp->mips_firmware);
if (bp->rv2p_firmware)
release_firmware(bp->rv2p_firmware);
if (bp->regview)
iounmap(bp->regview);

View file

@ -6885,6 +6885,8 @@ struct bnx2 {
u32 idle_chk_status_idx;
const struct firmware *mips_firmware;
const struct firmware *rv2p_firmware;
};
#define REG_RD(bp, offset) \
@ -6915,44 +6917,41 @@ struct cpu_reg {
u32 mips_view_base;
};
struct fw_info {
const u32 ver_major;
const u32 ver_minor;
const u32 ver_fix;
const u32 start_addr;
/* Text section. */
const u32 text_addr;
const u32 text_len;
const u32 text_index;
__le32 *text;
u8 *gz_text;
const u32 gz_text_len;
/* Data section. */
const u32 data_addr;
const u32 data_len;
const u32 data_index;
const u32 *data;
/* SBSS section. */
const u32 sbss_addr;
const u32 sbss_len;
const u32 sbss_index;
/* BSS section. */
const u32 bss_addr;
const u32 bss_len;
const u32 bss_index;
/* Read-only section. */
const u32 rodata_addr;
const u32 rodata_len;
const u32 rodata_index;
const u32 *rodata;
struct bnx2_fw_file_section {
__be32 addr;
__be32 len;
__be32 offset;
};
struct bnx2_mips_fw_file_entry {
__be32 start_addr;
struct bnx2_fw_file_section text;
struct bnx2_fw_file_section data;
struct bnx2_fw_file_section rodata;
};
struct bnx2_rv2p_fw_file_entry {
struct bnx2_fw_file_section rv2p;
__be32 fixup[8];
};
struct bnx2_mips_fw_file {
struct bnx2_mips_fw_file_entry com;
struct bnx2_mips_fw_file_entry cp;
struct bnx2_mips_fw_file_entry rxp;
struct bnx2_mips_fw_file_entry tpat;
struct bnx2_mips_fw_file_entry txp;
};
struct bnx2_rv2p_fw_file {
struct bnx2_rv2p_fw_file_entry proc1;
struct bnx2_rv2p_fw_file_entry proc2;
};
#define RV2P_P1_FIXUP_PAGE_SIZE_IDX 0
#define RV2P_BD_PAGE_SIZE_MSK 0xffff
#define RV2P_BD_PAGE_SIZE ((BCM_PAGE_SIZE / 16) - 1)
#define RV2P_PROC1 0
#define RV2P_PROC2 1

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -32,6 +32,10 @@ fw-shipped-$(CONFIG_ADAPTEC_STARFIRE) += adaptec/starfire_rx.bin \
adaptec/starfire_tx.bin
fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin
fw-shipped-$(CONFIG_ATM_AMBASSADOR) += atmsar11.fw
fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-4.6.17.fw \
bnx2/bnx2-rv2p-09-4.6.15.fw \
bnx2/bnx2-mips-06-4.6.16.fw \
bnx2/bnx2-rv2p-06-4.6.16.fw
fw-shipped-$(CONFIG_CASSINI) += sun/cassini.bin
fw-shipped-$(CONFIG_COMPUTONE) += intelliport2.bin
fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \

View file

@ -553,3 +553,23 @@ Licence: Unknown
Found in hex form in kernel source.
--------------------------------------------------------------------------
Driver: BNX2 - Broadcom NetXtremeII
File: bnx2/bnx2-mips-06-4.6.16.fw
File: bnx2/bnx2-rv2p-06-4.6.16.fw
File: bnx2/bnx2-mips-09-4.6.17.fw
File: bnx2/bnx2-rv2p-09-4.6.15.fw
Licence:
This file contains firmware data derived from proprietary unpublished
source code, Copyright (c) 2004 - 2009 Broadcom Corporation.
Permission is hereby granted for the distribution of this firmware data
in hexadecimal or equivalent format, provided this copyright notice is
accompanying it.
Found in hex form in kernel source.
--------------------------------------------------------------------------

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,441 @@
:100000000000000000000CA00000005800000000EC
:1000100000000000000000000000000000000000E0
:1000200000000000000000000000000000000000D0
:1000300000000DE000000CF80000000500000000CA
:1000400000000000000000000000000000000000B0
:080050000000000000000000A8
:0800580000000010B18000025D
:100060000000001F0103010000000008AC000001B7
:1000700000000000050000000000000C2F800001BF
:10008000000000002B000000000000002B8000009A
:1000900000000010203F006300000010213F00031B
:1000A0000000001020BF0032000000188000FFFD9B
:1000B00000000010B1B8B00D0000000B2FDF0002EF
:1000C0000000000003D80000000000002C380000F1
:1000D0000000001091D400000000000806005555F3
:1000E0000000001880000075000000188000010B5F
:1000F00000000008020000020000000F42E0001CA7
:100100000000001091840A11000000102C62000B06
:10011000000000188000001E00000008020000021D
:100120000000000F42E0001C0000001091840A183B
:10013000000000082C8000B1000000082D0000091C
:100140000000001091D40000000000082D8001077D
:10015000000000188000006F0000001880000015EB
:1001600000000008B1000001000000082C8000B071
:10017000000000082D000008000000082D8000018C
:1001800000000018800000690000000B2FDF000253
:100190000000000C1F800002000000002C0700007F
:1001A0000000001091DE00000000000005000000CB
:1001B000000000188000FFDC0000000B2FDF0002B1
:1001C0000000000C1F800000000000002C07000051
:1001D0000000001091DE000000000000050000009B
:1001E000000000188000FFD60000000C1F800002F5
:1001F0000000000005000000000000188000FFD390
:100200000000000C298000020000000C1F8000028A
:10021000000000002ADF0000000000082A0000059E
:100220000000000805005555000000188000FFCDB3
:10023000000000080224003C000000180004000038
:10024000000000188000001C000000188000001E44
:100250000000001880000052000000188000009E7E
:10026000000000188000009D0000001880000000C1
:10027000000000188000000000000018800000004E
:10028000000000188000000000000018800000003E
:10029000000000188000000000000018800000002E
:1002A000000000188000000000000018800000DF3F
:1002B000000000188000000000000018800000000E
:1002C0000000001880000015000000188000001BCE
:1002D000000000188000000000000018800000B43A
:1002E000000000188000002E00000018800000DFD1
:1002F000000000188000010A00000018800000D5EE
:10030000000000188000012E000000188000003B53
:10031000000000188000000000000018800000713C
:100320000000000C1F80000100000000050000001C
:10033000000000188000FFAC0000001091D4000005
:100340000000000C298000010000000C1F8000014B
:10035000000000082A000002000000000500000064
:10036000000000188000FFA60000001091D40000DB
:100370000000000C298000010000000C1F8000011B
:100380000000000029420000000000082A000002CE
:100390000000000005000000000000188000FF9F22
:1003A000000000188000FF9E00000010B1BCB00AE1
:1003B0000000000B2FDF00020000000003D8000047
:1003C000000000002C3C00000000001091D4000050
:1003D00000000008060055550000001880000016B7
:1003E00000000018800000AC000000102C6201BA70
:1003F0000000001880000005000000082C8000B1FB
:10040000000000082D0000090000001091D4000039
:10041000000000082D8001070000000C298000006A
:100420000000000C1F8000000000001091DE0000A2
:10043000000000002ADF0000000000082A0000067B
:100440000000000805005555000000188000FF89D5
:100450000000001091D400000000000C2980000171
:100460000000000C1F800001000000082A00000BA3
:100470000000000005000000000000188000FF835D
:1004800000000018000200000000000006820000CA
:1004900000000010B18A000600000000860C140065
:1004A00000000010B18C00040000000005000000F6
:1004B000000000082A0000010000001091D4000094
:1004C00000000018000D0000000000000502000000
:1004D0000000001091DE000000000018000A00007B
:1004E00000000010B1A0B0130000000B2FDF0002CD
:1004F000000000002C200000000000082C800000FC
:10050000000000082D0000000000001091D4000041
:100510000000000806005555000000188000FFEE9E
:10052000000000082D80011C00000010001F0000CA
:100530000000001091DE00000000000F476000087E
:100540000000000F060E0001000000000F58000020
:10055000000000000A640000000000000AE500003E
:10056000000000090B66FFFF000000000D610000A5
:1005700000000018800000130000000F4760000812
:100580000000000B2FDF0002000000082C8000009C
:10059000000000082D0000000000001091D40000B1
:1005A000000000082D80011C0000000F060E000155
:1005B00000000010001F0000000000000F580000A5
:1005C0000000001091DE0000000000000A6400003E
:1005D000000000000AE50000000000090B66FFFFB4
:1005E000000000000D610000000000000262000039
:1005F0000000000B2FDF00020000000031040000AB
:1006000000000000309A0000000000000C96180066
:10061000000000090C99FFFF00000004CC99340091
:1006200000000010B1963202000000080F800000A8
:100630000000000C298000010000001000220002D0
:100640000000000C295200010000000C295200009B
:10065000000000080200000E000000080280001ADE
:1006600000000010B1C40A020000000802000003EC
:1006700000000008220000010000000C1F800001A3
:10068000000000002ADF0000000000002A0008002F
:100690000000000805005555000000188000FF3FCD
:1006A0000000000B2FDF00020000001091D40000BA
:1006B000000000082A000001000000002C200000BB
:1006C000000000082C800000000000082D00000041
:1006D000000000082D80011C0000001091D40000D3
:1006E0000000001091DE0000000000082C800006D1
:1006F000000000082D00000600000000308000000F
:100700000000000031000000000000082D800006FD
:100710000000000C298000010000000C1F80000177
:100720000000001091DE0000000000002ADF000041
:10073000000000082A000010000000000500000072
:10074000000000188000FF2A0000001091A0B009EE
:10075000000000082C8000B1000000082D000009F6
:100760000000001091D40000000000082D80010757
:10077000000000188000FFAB00000018800000108F
:1007800000000008AC000001000000188000000B11
:10079000000000000380B0000000000B2FDF00020B
:1007A000000000002C0040000000001091D4000068
:1007B0000000000806005555000000188000FF9A50
:1007C00000000018800000300000001880000006C3
:1007D0000000000B2FDF0002000000002C000E00C4
:1007E000000000082A000007000000080500555519
:1007F000000000188000FF140000000006820000C6
:100800000000000C298000010000000C1F80000186
:10081000000000100CE70007000000090562FFFF60
:1008200000000010BA6C1405000000002ADF000070
:100830000000000021000000000000082A00000560
:100840000000001091D40000000000082C8000B0CF
:10085000000000082D0000080000000C31620018A4
:10086000000000082D800001000000188000FF8CAF
:1008700000000018000D000000000010B1A0B00E34
:100880000000000B2FDF00020000000003D8000072
:10089000000000002C2000000000001091D4000097
:1008A0000000001880000014000000102C620002FC
:1008B000000000188000000B0000000B2FDF00027A
:1008C000000000002C0700000000000C1F80000149
:1008D0000000001091DE0000000000000500000094
:1008E000000000188000FEF6000000082C8000B117
:1008F000000000082D0000090000001091D4000045
:10090000000000082D8001070000000C2980000174
:100910000000000C1F8000010000001091DE0000AC
:10092000000000002ADF0000000000082A00000A82
:100930000000000005000000000000188000FEEB31
:100940000000000005020000000000082C8000B03C
:10095000000000082D000008000000082D80015054
:10096000000000000000000000000010205F0000F8
:10097000000000082C800000000000082D0000008E
:10098000000000082D8001080000000000000000A9
:100990000000001091DE000000000018000A0000B6
:1009A0000000001091D40000000000080600AAAA70
:1009B000000000188000FF5B0000000C298000018F
:1009C0000000000C1F800001000000082A00000940
:1009D000000000080500AAAA000000188000FED749
:1009E0000000001091D400000000000806005555DA
:1009F000000000188000FF530000001091A03C028E
:100A000000000010B1E662070000000B2FDF0002BB
:100A1000000000002C310000000000092CB1007F14
:100A2000000000082CD90000000000082D00000084
:100A3000000000082D80010D00000010B1A8000684
:100A400000000010205F0000000000002C200000CB
:100A5000000000002CA70000000000082D0000107E
:100A6000000000082D800108000000188000FF4CE5
:100A700000000010B1A6001000000010001F0000D0
:100A80000000000F0F300007000000000A600000A7
:100A9000000000000AE100000000000F4B620008A7
:100AA000000000090B1600FF000000000D620000AE
:100AB000000000090D1A00FF0000001007300003BD
:100AC0000000000C0D1A00080000000C0B160008B6
:100AD0000000000F4CE30018000000000C992C00EF
:100AE00000000004CC993400000000080F800000D2
:100AF0000000000C298000010000000033310000DC
:100B00000000000822000016000000002ADF00009C
:100B1000000000082A00000C00000010009F0000E8
:100B2000000000000F2000000000000C1F800001EA
:100B30000000000805005555000000188000FEABBD
:100B40000000001091D40000000000080600AAAACE
:100B5000000000188000FF270000000F4722000857
:100B600000000009070E000F00000008070E000833
:100B700000000008028000010000000702851C0040
:100B800000000008828500010000000002854C0082
:100B90000000000742851C0000000003C3AA5200A9
:100BA0000000000003B10E00000000074B071C000E
:100BB0000000000F0F3000070000000F0A9600032E
:100BC000000000000A955C00000000004A005A0086
:100BD000000000000C960A00000000090C99FFFFBD
:100BE000000000080D00FFFF00000010B196320267
:100BF000000000080F80000500000010B1A80008E8
:100C000000000010205F00000000000B2FDF00023A
:100C1000000000002C200000000000002CA70000B5
:100C2000000000082D000010000000082D800108C1
:100C3000000000188000FF130000000C2980000154
:100C400000000010001F00000000000C1F800001C9
:100C5000000000002ADF0000000000082A00000D4C
:100C6000000000080500AAAA000000188000FE8508
:100C70000000001091D40000000000080600555547
:100C8000000000188000FF010000000C2980000116
:100C90000000000C1F800001000000082A0000076F
:100CA0000000000805005555000000188000FE7D7A
:100CB00000000008030500040000000683040C0087
:100CC00000000008028502000000000086050C00FC
:100CD00000000001860C0E00000000080204000461
:100CE00000000000020418000000000083871800C4
:080CF0000000001800020000E2
:080CF80000000010B1800004AF
:100D00000000001F0103010000000008050000FFB3
:100D10000000001800020000000000002A0000008F
:100D200000000010B1D400000000000C2980000178
:100D30000000000802540008000000180004000031
:100D40000000001880000010000000188000001152
:100D5000000000188000003A000000188000010424
:100D6000000000188000010300000018800001024C
:100D70000000001880000102000000188000000040
:100D8000000000188000011400000018800000FE20
:100D9000000000188000000C0000001880000118FE
:100DA000000000188000016A000000188000006741
:100DB00000000018800000DA00000018800000E742
:100DC000000000002A000000000000188000FFEB77
:100DD000000000002A0000000000000C2980000034
:100DE0000000001020530000000000188000FFE702
:100DF000000000002A000000000000188000FFE54D
:100E000000000018000200000000000005020000C1
:100E1000000000109196342100000010205F0000B7
:100E2000000000002C1E0000000000082C800006BE
:100E3000000000082D000006000000082D800102BF
:100E400000000000000000000000001091DE000023
:100E5000000000000D61000000000018000A000002
:100E600000000000050200000000001091963416FA
:100E700000000010205F00000000000009D8000002
:100E8000000000002C1E0000000000082C8000B2B2
:100E9000000000082D00000A000000082D8001025B
:100EA00000000000000000000000001091DE0000C3
:100EB000000000000D620000000000002C13000084
:100EC00000000018000A00000000000005020000F9
:100ED000000000109196340900000010205F00000F
:100EE000000000002C1E0000000000082C800006FE
:100EF000000000082D00006A000000082D8001029B
:100F000000000000000000000000001091DE000062
:100F1000000000000D7A000000000018000A000028
:100F20000000001091DE000000000010001F000013
:100F3000000000002F80AA00000000002A0000002E
:100F4000000000000D6100000000000003620000CE
:100F5000000000002C4000000000000002638C0034
:100F600000000000264600000000000802040012F5
:100F700000000010B9060827000000000F5800000C
:100F8000000000000A640000000000000AE5000004
:100F9000000000090B66FFFF000000000C000000CD
:100FA000000000000B800000000000080CC60012CA
:100FB000000000188000FFCB000000080F80000335
:100FC000000000000000000000000010009F000072
:100FD00000000008271100120000000066900000C9
:100FE00000000008A31B001200000010B1980003CD
:100FF00000000010001F0000000000080F80000427
:101000000000000822000003000000082C80000CF3
:10101000000000082D00000C00000010009F0000E0
:1010200000000000259600000000000C2980000050
:101030000000000006660000000000008661180045
:10104000000000090260000F0000000F020400020F
:1010500000000010B60C08030000000C1FBF0000C9
:101060000000000C33660010000000003214000085
:1010700000000000329500000000000573662C009F
:101080000000000031E32E00000000082D80001059
:1010900000000010205300000000001091DE00004E
:1010A000000000188000FF900000000023000000F6
:1010B0000000000925E6FFFF000000082200000BE9
:1010C0000000000C695200000000000C29800000A4
:1010D0000000001020530000000000188000FF896D
:1010E0000000001091DE000000000010001F000052
:1010F000000000002F80AA00000000002A0000006D
:10110000000000002C400000000000082C8000407F
:10111000000000082D000020000000082D80011CA8
:1011200000000000000000000000001091DE000040
:101130000000000F42EA001000000010004F000401
:1011400000000010B746920000000008024900129B
:1011500000000010B5840A00000000000D610000CE
:1011600000000010BA66345A00000000036200005C
:1011700000000010B8630C5800000008830500123E
:1011800000000010004F00020000000003490000B2
:101190000000000183068C000000000083C60C00E4
:1011A00000000010B1870010000000000B6E00006E
:1011B000000000188000FF6B0000000106691400A9
:1011C00000000010918C000200000008B4E900014A
:1011D00000000010B1E92C4C0000000086692C00D2
:1011E00000000000020000000000000902EAFFFF0A
:1011F00000000010000C00020000000002040A00C1
:101200000000000F460C00010000000F02850001E5
:1012100000000010918C01FC00000010B7040E4388
:10122000000000002C400000000000000F40000003
:10123000000000000D610000000000000A640000D2
:10124000000000000AE50000000000090B66FFFF37
:10125000000000000C000000000000000B800000F7
:10126000000000080C860012000000080F80000338
:101270000000000C2952000000000010009F000038
:101280000000000827110012000000006690000016
:1012900000000000264600000000000023060000B9
:1012A00000000010B198000500000010001F0000B1
:1012B000000000080F800004000000000000000093
:1012C00000000010001F00000000000032140000A9
:1012D00000000000329500000000000031E32E0005
:1012E0000000000573662C00000000002596000039
:1012F00000000010B18700160000000C29800000DB
:101300000000000F0F6B0007000000000D690000D7
:10131000000000000A6C0000000000000AED000060
:10132000000000000B6E0000000000000B800000B9
:10133000000000000C870000000000080F80000380
:1013400000000010205300000000000C6952000152
:1013500000000010001F00000000000022C58C00EB
:1013600000000000231B0000000000002711000007
:10137000000000002690000000000010B8170E03C7
:101380000000000C29800000000000188000FFF61B
:1013900000000010B1980002000000080F80000457
:1013A000000000082200001A000000082C80000C39
:1013B000000000082D00000C000000082D80001027
:1013C00000000010001F0000000000000D6E000073
:1013D00000000003E7CF34000000000C298000006B
:1013E0000000001091DE000000000010B18700072F
:1013F00000000000361400000000000036950000D8
:101400000000000037160000000000082C8000508B
:10141000000000082D000030000000082D80000CA6
:101420000000001020530000000000188000FF1F83
:10143000000000002646000000000000230000001D
:101440000000000925E6FFFF000000000B6E000011
:1014500000000003E7CF2C00000000082200001B62
:101460000000000C695200000000000C2980000000
:101470000000001020530000000000188000FF153D
:10148000000000002FD50000000000002A0000002E
:1014900000000010003F000B000000000666000086
:1014A000000000008661180000000009026000F0E2
:1014B00000000010B70C08070000000C7366001055
:1014C000000000082C800018000000082D00001803
:1014D000000000082D8000020000000C5FBF00002B
:1014E0000000001091DE0000000000188000FF07DF
:1014F000000000002FD50000000000002A000000BE
:10150000000000002C4000000000000C29800000BA
:101510000000001091DE0000000000082C80001A7E
:10152000000000082D00001A000000003300000039
:10153000000000082D800002000000003180000043
:101540000000001091DE0000000000082C80000C5C
:10155000000000082D00000C000000082D80000491
:1015600000000010205300000000001091DE000079
:10157000000000188000FEF6000000188000FEF554
:10158000000000002A00000000000010001F000002
:10159000000000000F008000000000080F8000071E
:1015A0000000001880000014000000000502000088
:1015B000000000082200000900000000286D000063
:1015C00000000000290000000000000F6568001006
:1015D00000000003F66C940000000010B972A00433
:1015E0000000000C73E700190000000C2142000409
:1015F000000000003BF600000000000C2980000005
:101600000000001020530000000000082200000825
:101610000000000C6142000400000018000A0000F5
:10162000000000002A00000000000010001F000061
:101630000000000F0F470007000000080F8000089F
:101640000000000C29800000000000102053000062
:10165000000000188000FEDA0000001091DE00009B
:10166000000000002FD5000000000010001F000047
:101670000000000033510000000000002A000000BC
:1016800000000010B1C600230000000F0F5000073B
:10169000000000000A600000000000000AE10000F5
:1016A0000000000F4B620008000000090B1600FF4D
:1016B0000000000F4C620010000000000D620000EE
:1016C000000000090D1A00FF000000100750000381
:1016D0000000000C0D1A00080000000C0B1600089A
:1016E000000000000CC60000000000000B8000009D
:1016F0000000000006980000000000080F800003B2
:101700000000001006C200040000000C29000002C6
:1017100000000010264200020000000C29520003C5
:10172000000000082200000100000010009F0000DF
:1017300000000000231B00000000000027111A0019
:1017400000000000669000000000000C295200001C
:1017500000000010B19732090000000C2980000041
:101760000000000006980000000000102053000058
:101770000000000C295200030000000022C58C006C
:1017800000000010001F0000000000080F80000390
:10179000000000188000FFF300000010B1C8001323
:1017A00000000010B1C600030000000C29800000FA
:1017B00000000010205300000000000C295200001F
:1017C0000000000C295200030000001006C20002B5
:1017D0000000000C295200020000000022C58C000D
:1017E00000000000276500000000000026E4000063
:1017F000000000082200001600000010B1C600031F
:10180000000000002348000000000010B180000527
:1018100000000000234800000000000C29800000A8
:101820000000000F0F500007000000188000001299
:1018300000000008220000160000000C29800000B3
:10184000000000003014000000000000309500008F
:101850000000001007500003000000090B1600FFF5
:10186000000000090D1A00FF0000000F31160008EB
:10187000000000003162340000000003F16230001B
:1018800000000010205F0000000000002C5100004C
:10189000000000092CD1007F000000082CD90000B6
:1018A000000000082D000000000000082D80000C42
:1018B00000000000000000000000001091DE0000A9
:1018C0000000001005C2000300000000330000000B
:1018D000000000080F8000070000001020530000E7
:1018E00000000010009F0000000000188000FE872C
:1018F000000000002FD50000000000002A000000BA
:101900000000000F0F50000700000010B1C6002DAE
:101910000000000F4742000800000009070E000FFA
:1019200000000008070E000800000010001F000063
:1019300000000008090000010000000709121C0057
:1019400000000003CBCA9200000000000B97A20029
:101950000000000742171C00000000000B040000FC
:101960000000000F0A840003000000000A959C009C
:10197000000000004A009A000000000882120001E6
:10198000000000010C170800000000000C978C00FC
:101990000000000002180000000000080D00FFFF1A
:1019A000000000080F8000060000000C2900000065
:1019B0000000001006C200040000000C29520002C2
:1019C00000000010264200020000000C2952000313
:1019D000000000082200000100000010009F00002D
:1019E00000000010B197320C00000000231B000023
:1019F00000000000271108000000000066900000B1
:101A00000000000C29800000000000000218000007
:101A100000000010205300000000000C29520003B9
:101A20000000000022C5360000000010001F00006A
:101A3000000000080F800006000000188000FFF47E
:101A400000000000231B0000000000002711080018
:101A5000000000006690000000000010B1C8000BFC
:101A60000000000C2980000000000010205300003E
:101A70000000000C295200000000000C2952000355
:101A80000000001006C200020000000C29520002F3
:101A90000000000022C58C00000000002765000047
:101AA0000000000026E400000000000023480000C1
:101AB00000000008220000170000000C2980000030
:101AC00000000010001F0000000000102053000064
:081AD000000000188000FE4A2E
:00000001FF
/*
* This file contains firmware data derived from proprietary unpublished
* source code, Copyright (c) 2004 - 2009 Broadcom Corporation.
*
* Permission is hereby granted for the distribution of this firmware data
* in hexadecimal or equivalent format, provided this copyright notice is
* accompanying it.
*/

View file

@ -0,0 +1,490 @@
:100000000000000000000D88000000580000000003
:1000100000000000000000000000000000000000E0
:1000200000000000000000000000000000000000D0
:100030000000101800000DE00000000500000000A6
:1000400000000000000000000000000000000000B0
:080050000000000000000000A8
:0800580000000010B18000025D
:100060000000001F0303010000000008AC000001B5
:1000700000000000050000000000000C2F800001BF
:10008000000000002B000000000000002B8000009A
:1000900000000010203F006C00000010213F000312
:1000A0000000001020BF003B000000188000FFFD92
:1000B00000000010B1B8B0150000000B2FDF0002E7
:1000C0000000000003D80000000000002C380000F1
:1000D000000000082C800000000000082D00000037
:1000E0000000001091D400000000000806005555E3
:1000F000000000188000008F000000082D80011C07
:1001000000000008020000010000001091DE000065
:100110000000000F42E0001C0000001091840A174C
:1001200000000010086600160000000C2980000284
:100130000000000C1F800002000000002ADF000009
:10014000000000082A00000F0000000805005555B7
:10015000000000188000FFE8000000080200000115
:100160000000000F42E0001C0000001091840A19FA
:10017000000000082C800006000000082D0000068A
:100180000000001091D40000000000082D8001063E
:1001900000000018800000830000001008660013B3
:1001A000000000188000FFF100000008B10000010D
:1001B000000000082C80010C000000082D00000841
:1001C000000000082D800001000000188000007C65
:1001D0000000000B2FDF00020000000C1F80000257
:1001E000000000002C0700000000001091DE00005D
:1001F0000000000005000000000000188000FFD390
:100200000000000B2FDF00020000000C1F80000028
:10021000000000002C0700000000001091DE00002C
:100220000000000005000000000000188000FFCD65
:100230000000000C1F80000200000000050000000C
:10024000000000188000FFCA0000000C2980000296
:100250000000000C1F800002000000002ADF0000E8
:10026000000000082A0000050000000805005555A0
:10027000000000188000FFC40000000802240045B0
:100280000000001800040000000000188000001C9E
:10029000000000188000001E0000001880000065AB
:1002A00000000018800000AD00000018800000ACC5
:1002B000000000188000000000000018800000000E
:1002C00000000018800000000000001880000000FE
:1002D00000000018800000000000001880000000EE
:1002E00000000018800000000000001880000000DE
:1002F00000000018800000F30000001880000000DB
:1003000000000018800000000000001880000015A8
:10031000000000188000001B000000188000000092
:1003200000000018800000C3000000188000002EAC
:1003300000000018800000F3000000188000011E7B
:1003400000000018800000E9000000188000014251
:10035000000000188000004E00000018800000001F
:1003600000000018800000800000000C1F800001C9
:100370000000000005000000000000188000FFA33E
:100380000000001091D400000000000C2980000142
:100390000000000C1F800001000000082A0000027D
:1003A0000000000005000000000000188000FF9D14
:1003B0000000001091D400000000000C2980000112
:1003C0000000000C1F800001000000002942000016
:1003D000000000082A0000020000000005000000E4
:1003E000000000188000FF96000000188000FF95B4
:1003F00000000010B1BCB00A0000000B2FDF0002AB
:100400000000000003D80000000000002C3C0000A9
:100410000000001091D400000000000806005555AF
:10042000000000188000002900000018800000BBB8
:10043000000000102C6201BA0000001880000005C6
:10044000000000082C80010D000000082D000009AC
:100450000000001091D40000000000082D8001076A
:100460000000000C298000000000000C1F8000002C
:100470000000001091DE0000000000002ADF0000F4
:10048000000000082A00000600000008050055557D
:10049000000000188000FF800000001091D40000D0
:1004A0000000000C298000010000000C1F800001EA
:1004B000000000082A00000B0000000005000000FA
:1004C000000000188000FF7A000000000202000017
:1004D00000000000029A000000000000060C2C0042
:1004E00000000004C60C340000000010001F0000D3
:1004F00000000010B196180C0000000806960004D9
:1005000000000009068DFFFC00000004CD051A0064
:1005100000000004CC9A18000000001020D7000052
:100520000000000C2B56000000000000000000003E
:1005300000000000000000000000001020D70000B4
:10054000000000080F80000100000010B18001F4DD
:1005500000000010001F00000000000C6B5600009F
:1005600000000018000400000000000006820000E7
:1005700000000010B18A000600000000860C140084
:1005800000000010B18C0004000000000500000015
:10059000000000082A0000010000001091D40000B3
:1005A00000000018000D000000000000050200001F
:1005B0000000001091DE000000000018000A00009A
:1005C00000000010B1A0B0130000000B2FDF0002EC
:1005D000000000002C200000000000082C8000001B
:1005E000000000082D0000000000001091D4000061
:1005F0000000000806005555000000188000FFEEBE
:10060000000000082D80011C00000010001F0000E9
:100610000000001091DE00000000000F476000089D
:100620000000000F060E0001000000000F5800003F
:10063000000000000A640000000000000AE500005D
:10064000000000090B66FFFF000000000D610000C4
:1006500000000018800000130000000F4760000831
:100660000000000B2FDF0002000000082C800000BB
:10067000000000082D0000000000001091D40000D0
:10068000000000082D80011C0000000F060E000174
:1006900000000010001F0000000000000F580000C4
:1006A0000000001091DE0000000000000A6400005D
:1006B000000000000AE50000000000090B66FFFFD3
:1006C000000000000D610000000000000262000058
:1006D0000000000B2FDF00020000000031040000CA
:1006E00000000000309A0000000000188000FFBCED
:1006F0000000000C29800001000000100022000210
:100700000000000C295200010000000C29520000DA
:10071000000000080200000E000000080280001A1D
:1007200000000010B1C40A0200000008020000032B
:1007300000000008220000010000000C1F800001E2
:10074000000000002ADF0000000000002A0008006E
:100750000000000805005555000000188000FF2724
:100760000000000B2FDF00020000001091D40000F9
:10077000000000082A000001000000002C200000FA
:10078000000000082C800000000000082D00000080
:10079000000000082D80011C0000001091D4000012
:1007A0000000001091DE0000000000082C80000610
:1007B000000000082D00000600000000308000004E
:1007C0000000000031000000000000082D8000063D
:1007D0000000000C298000010000000C1F800001B7
:1007E0000000001091DE0000000000002ADF000081
:1007F000000000082A0000100000000005000000B2
:10080000000000188000FF120000001091A0B00945
:10081000000000082C80010D000000082D000009D8
:100820000000001091D40000000000082D80010796
:10083000000000188000FFAF0000001880000010CA
:1008400000000008AC000001000000188000000B50
:10085000000000000380B0000000000B2FDF00024A
:10086000000000002C0040000000001091D40000A7
:100870000000000806005555000000188000FF9E8B
:100880000000001880000030000000188000000602
:100890000000000B2FDF0002000000002C000E0003
:1008A000000000082A000007000000080500555558
:1008B000000000188000FEFC00000000068200001E
:1008C0000000000C298000010000000C1F800001C6
:1008D000000000100CE70007000000090562FFFFA0
:1008E00000000010BA6C1405000000002ADF0000B0
:1008F0000000000021000000000000082A000005A0
:100900000000001091D40000000000082C80010CB1
:10091000000000082D0000080000000C31620018E3
:10092000000000082D800001000000188000FF90EA
:1009300000000018000D000000000010B1A0B00E73
:100940000000000B2FDF00020000000003D80000B1
:10095000000000002C2000000000001091D40000D6
:100960000000001880000014000000102C6200023B
:10097000000000188000000B0000000B2FDF0002B9
:10098000000000002C0700000000000C1F80000188
:100990000000001091DE00000000000005000000D3
:1009A000000000188000FEDE000000082C80010D11
:1009B000000000082D0000090000001091D4000084
:1009C000000000082D8001070000000C29800001B4
:1009D0000000000C1F8000010000001091DE0000EC
:1009E000000000002ADF0000000000082A00000AC2
:1009F0000000000005000000000000188000FED389
:100A00000000000005020000000000082C80010C1E
:100A1000000000082D000008000000082D800134AF
:100A2000000000000000000000000010205F000037
:100A3000000000082C800140000000082D00003C50
:100A4000000000082D80011C0000000000000000D4
:100A500000000010205F0000000000082C800080D3
:100A6000000000082D000000000000082D80010893
:100A700000000000000000000000001091DE0000F7
:100A800000000018000A00000000001091D40000CF
:100A9000000000080600AAAA000000188000FF5A03
:100AA0000000000C298000010000000C1F800001E4
:100AB000000000082A000009000000080500AAAA9A
:100AC000000000188000FEBA0000001091D4000061
:100AD0000000000806005555000000188000FF5275
:100AE0000000001091A03C0200000010B1E6620777
:100AF0000000000B2FDF0002000000002C3100007E
:100B0000000000092CB1007F000000082CD9000073
:100B1000000000082D000000000000082D80010DDD
:100B200000000010B1A8000600000010205F0000C7
:100B3000000000002C200000000000002CA7000096
:100B4000000000082D000010000000082D800108A2
:100B5000000000188000FF4B00000010B1A600103C
:100B600000000010001F00000000000F0F30000701
:100B7000000000000A600000000000000AE1000020
:100B80000000000F4B620008000000090B1600FF78
:100B9000000000000D620000000000090D1A00FFB7
:100BA00000000010073000030000000C0D1A0008C0
:100BB0000000000C0B1600080000000F4CE30018AA
:100BC000000000000C992C0000000004CC993400B7
:100BD000000000080F8000000000000C29800001C8
:100BE0000000000033310000000000082200001661
:100BF000000000002ADF0000000000082A00000CAE
:100C000000000010009F0000000000000F20000006
:100C10000000000C1F800001000000080500555571
:100C2000000000188000FE8E0000001091D400002B
:100C3000000000080600AAAA000000188000FF2695
:100C40000000000F4722000800000009070E000FF7
:100C500000000008070E00080000000802800001E4
:100C60000000000702851C000000000882850001CA
:100C70000000000002854C000000000742851C00B7
:100C800000000003C3AA52000000000003B10E00E0
:100C9000000000074B071C000000000F0F3000078A
:100CA0000000000F0A960003000000000A955C0097
:100CB000000000004A005A00000000000C960A00E4
:100CC000000000090C99FFFF000000080D00FFFF65
:100CD00000000010B1963202000000080F800005ED
:100CE00000000010B1A8000800000010205F000004
:100CF0000000000B2FDF0002000000002C2000008D
:100D0000000000002CA70000000000082D000010CB
:100D1000000000082D800108000000188000FF126C
:100D20000000000C2980000100000010001F0000DE
:100D30000000000C1F800001000000002ADF0000FE
:100D4000000000082A00000D000000080500AAAA03
:100D5000000000188000FE680000001091D4000020
:100D60000000000806005555000000188000FF0034
:100D70000000000C298000010000000C1F80000111
:100D8000000000082A000007000000080500555573
:100D9000000000188000FE60000000080305000449
:100DA0000000000683040C00000000080285020019
:100DB0000000000086050C0000000001860C0E00FB
:100DC00000000008020400040000000002041800F3
:100DD00000000000838718000000001800020000D7
:100DE00000000010B18000040000001F0303010098
:100DF00000000008050000FF0000001800020000CD
:100E0000000000002A00000000000010B1D4000023
:100E10000000000C298000010000000802540009B5
:100E2000000000092952003F0000001800040000E3
:100E30000000001880000010000000188000001161
:100E4000000000188000004B000000188000013CEA
:100E5000000000188000013B000000188000013AEB
:100E6000000000188000013A000000188000000017
:100E7000000000188000014D0000001880000136BD
:100E8000000000188000000C0000001880000152D3
:100E900000000018800001AC0000001880000080F5
:100EA00000000018800001070000001880000115F4
:100EB000000000002A000000000000188000FFEA87
:100EC000000000002A0000000000000C2980000043
:100ED0000000001020530000000000188000FFE612
:100EE000000000002A000000000000188000FFE45D
:100EF0000000000003820000000000188000FFDFF7
:100F0000000000010C161400000000008C181400F2
:100F10000000001091980003000000080C960002E9
:100F200000000010B1800003000000080C960001D2
:100F3000000000000C000000000000000D1900007F
:100F400000000010205600000000000C2BD700010C
:100F5000000000080F8000010000000000000000F9
:100F600000000010001F00000000000C6BD7000103
:100F700000000010011301F100000018000700003C
:100F800000000000050200000000001091963421CE
:100F900000000010205F0000000000002C1E000078
:100FA000000000082C800006000000082D0000064C
:100FB000000000082D800102000000000000000079
:100FC0000000001091DE0000000000000D61000034
:100FD00000000018000A00000000000005020000E8
:100FE000000000109196341600000010205F0000F1
:100FF0000000000009D80000000000002C1E0000C6
:10100000000000082C80010E000000082D00000ADE
:10101000000000082D800102000000000000000018
:101020000000001091DE0000000000000D620000D2
:10103000000000002C13000000000018000A00004F
:101040000000000005020000000000109196340925
:1010500000000010205F0000000000002C1E0000B7
:10106000000000082C800006000000082D00006A27
:10107000000000082D8001020000000000000000B8
:101080000000001091DE0000000000000D7A00005A
:1010900000000018000A00000000001091DE0000AF
:1010A00000000010001F00000000000C6BD70001C2
:1010B000000000002F80AA00000000002A000000AD
:1010C000000000000D61000000000000036200004D
:1010D000000000002C4000000000000002638C00B3
:1010E0000000000026460000000000080204001274
:1010F00000000010B906082E000000000F58000084
:10110000000000000A640000000000000AE5000082
:10111000000000090B66FFFF000000000C0000004B
:10112000000000000B800000000000080CC6001248
:10113000000000188000FFCA0000001020560000C8
:101140000000000C2BD70001000000080F800003F6
:10115000000000000000000000000010001F000060
:101160000000000C6BD700010000000827110012DE
:10117000000000006690000000000008A31B0012A1
:1011800000000010B198000600000010001F0000D1
:101190000000000C6BD7000100000010205600007A
:1011A0000000000C2BD70001000000080F80000495
:1011B0000000000822000003000000082C80000C42
:1011C000000000082D00000C00000010001F0000AF
:1011D0000000000C6BD70001000000002596000005
:1011E0000000000C298000000000000006660000DE
:1011F0000000000086611800000000090260000F76
:101200000000000F0204000200000010B60C0803EA
:101210000000000C1FBF00000000000C336600102F
:1012200000000000321400000000000032950000B1
:101230000000000573662C000000000031E32E0062
:10124000000000082D800010000000102053000056
:101250000000001091DE0000000000188000FF7602
:1012600000000000230000000000000925E6FFFF49
:10127000000000082200000B0000000C6952000072
:101280000000000C29800000000000102053000026
:10129000000000188000FF6F0000001091DE0000C9
:1012A00000000010001F00000000000C6BD70001C0
:1012B000000000002F80AA00000000002A000000AB
:1012C000000000002C400000000000082C800040BE
:1012D000000000082D000020000000082D80011CE7
:1012E00000000000000000000000001091DE00007F
:1012F0000000000F42EA001000000010004F000440
:1013000000000010B74692000000000802490012D9
:1013100000000010B5840A00000000000D6100000C
:1013200000000010BA66346D000000000362000087
:1013300000000010B8630C6B000000088305001269
:1013400000000010004F00020000000003490000F0
:101350000000000183068C000000000083C60C0022
:1013600000000010B1870010000000000B6E0000AC
:10137000000000188000FF50000000010669140002
:1013800000000010918C000200000008B4E9000188
:1013900000000010B1E92C5F0000000086692C00FD
:1013A00000000000020000000000000902EAFFFF48
:1013B00000000010000C00020000000002040A00FF
:1013C0000000000F460C00010000000F0285000124
:1013D00000000010918C01FC00000010B7040E56B4
:1013E000000000002C400000000000000F40000042
:1013F000000000000D610000000000000A64000011
:10140000000000000AE50000000000090B66FFFF75
:10141000000000000C000000000000000B80000035
:10142000000000080C86001200000010205600008A
:101430000000000C2BD70001000000080F80000303
:101440000000000C2952000000000010001F0000E6
:101450000000000C6BD700010000000827110012EB
:10146000000000006690000000000000264600001A
:10147000000000002306000000000010B1980009E1
:1014800000000010001F00000000000C6BD70001DE
:1014900000000010205600000000000C2BD70001B7
:1014A000000000080F8000040000000000000000A1
:1014B00000000010001F00000000000C6BD70001AE
:1014C000000000003214000000000000329500000F
:1014D0000000000031E32E000000000573662C00C0
:1014E000000000002596000000000010B1870021D8
:1014F0000000000C298000000000000F0F6B0007A7
:10150000000000000D690000000000000A6C0000EF
:10151000000000000AED0000000000000B6E00005B
:10152000000000000B800000000000000C8700009D
:10153000000000188000FF18000000010C161400C5
:10154000000000008C181400000000080C96000138
:101550000000001091980002000000080C990001A2
:10156000000000000D190000000000000C00000049
:1015700000000010205600000000000C2BD70001D6
:10158000000000080F800001000000102053000040
:101590000000000C6952000100000010001F000054
:1015A0000000000C6BD700010000000022C58C0079
:1015B00000000000231200000000000027110000BE
:1015C000000000002690000000000010B8170E0375
:1015D0000000000C29800000000000188000FFEBD4
:1015E0000000000082970E0000000000A3120A0015
:1015F000000000082200001A000000082C80000CE7
:10160000000000082D00000C000000082D800010D4
:1016100000000010001F00000000000C6BD700014C
:10162000000000000D6E000000000003E7CF340052
:101630000000000C298000000000001091DE000076
:1016400000000010B1870007000000003614000001
:101650000000000036950000000000003716000072
:10166000000000082C800050000000082D00003011
:10167000000000082D80000C000000102053000026
:10168000000000188000FEF1000000002646000067
:1016900000000000230000000000000925E6FFFF15
:1016A000000000000B6E000000000003E7CF2C00DC
:1016B000000000082200001B0000000C695200001E
:1016C0000000000C298000000000001020530000E2
:1016D000000000188000FEE7000000002FD5000089
:1016E000000000002A00000000000010003F000C75
:1016F000000000000666000000000000866118007F
:1017000000000009026000F000000010B70C08089B
:10171000000000002C4000000000000C7366001068
:10172000000000082C800018000000082D000018A0
:10173000000000082D8000020000000C5FBF0000C8
:101740000000001091DE0000000000188000FED8AC
:10175000000000002FD50000000000002A0000005B
:10176000000000002C4000000000000C7366001018
:10177000000000082C800018000000082D00001850
:10178000000000082D8000020000000C5FBF000078
:101790000000001091DE0000000000082C80000313
:1017A000000000082D000003000000093060FFF079
:1017B000000000082D8000010000000C29800000BE
:1017C0000000001091DE0000000000082C80001ACC
:1017D000000000082D00001A000000003300000087
:1017E000000000082D800002000000003180000091
:1017F0000000001091DE0000000000082C80000CAA
:10180000000000082D00000C000000082D800004DE
:1018100000000010205300000000001091DE0000C6
:10182000000000188000FEBD000000188000FEBC13
:10183000000000002A00000000000010001F00004F
:101840000000000C6BD70001000000000F008000BA
:10185000000000080F80000700000018800000153D
:10186000000000000502000000000008220000093E
:1018700000000000286D00000000000029000000AA
:101880000000000F6568001000000003F66C940073
:1018900000000010B972A0040000000C73E70019EA
:1018A0000000000C21420004000000003BF6000094
:1018B0000000000C298000000000001020530000F0
:1018C00000000008220000080000000C6142000433
:1018D00000000018000A0000000000002A000000BC
:1018E00000000010001F00000000000C6BD700017A
:1018F0000000000F0F470007000000080F800008DD
:101900000000000C2980000000000010205300009F
:10191000000000188000FE9F0000001091DE000013
:10192000000000002FD5000000000010001F000084
:101930000000000C6BD700010000000033510000D4
:10194000000000002A00000000000010B1C60029BD
:101950000000000F0F500007000000000A600000A8
:10196000000000000AE100000000000F4B620008C8
:10197000000000090B1600FF0000000F4C62001071
:10198000000000000D620000000000090D1A00FFB9
:1019900000000010075000030000000C0D1A0008A2
:1019A0000000000C0B160008000000000CC6000030
:1019B000000000000B8000000000000006980000FE
:1019C00000000010205600000000000C2BD7000182
:1019D000000000080F8000030000001006C2000491
:1019E0000000000C29000002000000102642000246
:1019F0000000000C29520003000000082200000132
:101A000000000010001F00000000000C6BD7000158
:101A100000000000231B00000000000027111A0036
:101A200000000000669000000000000C2952000039
:101A300000000010B197320C0000000C298000005B
:101A40000000000006980000000000102053000075
:101A50000000000C295200030000000022C58C0089
:101A600000000010001F00000000000C6BD70001F8
:101A700000000010205600000000000C2BD70001D1
:101A8000000000080F800003000000188000FFEF36
:101A900000000010B1C8001300000010B1C6000320
:101AA0000000000C298000000000001020530000FE
:101AB0000000000C295200000000000C2952000315
:101AC0000000001006C200020000000C29520002B3
:101AD0000000000022C58C00000000002765000007
:101AE0000000000026E400000000000822000016AC
:101AF00000000010B1C600030000000023480000F1
:101B000000000010B1800005000000002348000024
:101B10000000000C298000000000000F0F5000079B
:101B200000000018800000120000000822000016CB
:101B30000000000C298000000000000030140000AC
:101B40000000000030950000000000100750000366
:101B5000000000090B1600FF000000090D1A00FF2D
:101B60000000000F31160008000000003162340050
:101B700000000003F162300000000010205F000050
:101B8000000000002C510000000000092CD1007F53
:101B9000000000082CD90000000000082D00000003
:101BA000000000082D80000C000000000000000074
:101BB0000000001091DE00000000001005C20003CC
:101BC0000000000033000000000000080F80000744
:101BD000000000102053000000000010001F000053
:101BE0000000000C6BD70001000000188000FE44CC
:101BF000000000002FD50000000000002A000000B7
:101C00000000000F0F50000700000010B1C60030A8
:101C10000000000F4742000800000009070E000FF7
:101C200000000008070E000800000010001F000060
:101C30000000000C6BD70001000000080900000143
:101C40000000000709121C0000000003CBCA92002C
:101C5000000000000B97A2000000000742171C00C4
:101C6000000000000B0400000000000F0A840003C5
:101C7000000000000A959C00000000004A009A0045
:101C80000000000882120001000000010C1708008B
:101C9000000000000C978C000000000002180000FB
:101CA000000000080D00FFFF000000080F80000684
:101CB0000000000C290000000000001006C2000413
:101CC0000000000C29520002000000102642000211
:101CD0000000000C2952000300000008220000014F
:101CE00000000010001F00000000000C6BD7000176
:101CF00000000010B197320D00000000231B00000F
:101D0000000000002711080000000000669000009D
:101D10000000000C298000000000000002180000F4
:101D200000000010205300000000000C29520003A6
:101D30000000000022C5360000000010001F000057
:101D40000000000C6BD70001000000080F800006A7
:101D5000000000188000FFF200000000231B0000BC
:101D6000000000002711080000000000669000003D
:101D700000000010B1C8000B0000000C298000001A
:101D800000000010205300000000000C2952000049
:101D90000000000C295200030000001006C20002DF
:101DA0000000000C295200020000000022C58C0037
:101DB00000000000276500000000000026E400008D
:101DC0000000000023480000000000082200001767
:101DD0000000000C2980000000000010001F00001F
:101DE0000000000C6BD70001000000102053000021
:081DF000000000188000FE0352
:00000001FF
/*
* This file contains firmware data derived from proprietary unpublished
* source code, Copyright (c) 2004 - 2009 Broadcom Corporation.
*
* Permission is hereby granted for the distribution of this firmware data
* in hexadecimal or equivalent format, provided this copyright notice is
* accompanying it.
*/