Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 267494
b: refs/heads/master
c: d745a84
h: refs/heads/master
v: v3
  • Loading branch information
Henry Ptasinski authored and Greg Kroah-Hartman committed Aug 23, 2011
1 parent c1bb9da commit 6031faa
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 18 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ba1fff7f705ed15e9d5a5922614aa4a259e9f8bc
refs/heads/master: d745a845045f31a8250cd856b79e84c8374a3adb
24 changes: 14 additions & 10 deletions trunk/drivers/staging/brcm80211/brcmsmac/mac80211_if.c
Original file line number Diff line number Diff line change
Expand Up @@ -1722,15 +1722,17 @@ int brcms_ucode_init_buf(struct brcms_info *wl, void **pbuf, u32 idx)
hdr = (struct firmware_hdr *)wl->fw.fw_hdr[i]->data;
for (entry = 0; entry < wl->fw.hdr_num_entries[i];
entry++, hdr++) {
if (hdr->idx == idx) {
pdata = wl->fw.fw_bin[i]->data + hdr->offset;
*pbuf = kmalloc(hdr->len, GFP_ATOMIC);
u32 len = le32_to_cpu(hdr->len);
if (le32_to_cpu(hdr->idx) == idx) {
pdata = wl->fw.fw_bin[i]->data +
le32_to_cpu(hdr->offset);
*pbuf = kmalloc(len, GFP_ATOMIC);
if (*pbuf == NULL) {
wiphy_err(wl->wiphy, "fail to alloc %d"
" bytes\n", hdr->len);
" bytes\n", len);
goto fail;
}
memcpy(*pbuf, pdata, hdr->len);
memcpy(*pbuf, pdata, len);
return 0;
}
}
Expand All @@ -1755,14 +1757,15 @@ int brcms_ucode_init_uint(struct brcms_info *wl, u32 *data, u32 idx)
hdr = (struct firmware_hdr *)wl->fw.fw_hdr[i]->data;
for (entry = 0; entry < wl->fw.hdr_num_entries[i];
entry++, hdr++) {
if (hdr->idx == idx) {
pdata = wl->fw.fw_bin[i]->data + hdr->offset;
if (hdr->len != 4) {
if (le32_to_cpu(hdr->idx) == idx) {
pdata = wl->fw.fw_bin[i]->data +
le32_to_cpu(hdr->offset);
if (le32_to_cpu(hdr->len) != 4) {
wiphy_err(wl->wiphy,
"ERROR: fw hdr len\n");
return -ENOMSG;
}
*data = *((u32 *) pdata);
*data = le32_to_cpu(*((u32 *) pdata));
return 0;
}
}
Expand Down Expand Up @@ -1868,7 +1871,8 @@ int brcms_check_firmwares(struct brcms_info *wl)
ucode_hdr = (struct firmware_hdr *)fw_hdr->data;
for (entry = 0; entry < wl->fw.hdr_num_entries[i] &&
!rc; entry++, ucode_hdr++) {
if (ucode_hdr->offset + ucode_hdr->len >
if (le32_to_cpu(ucode_hdr->offset) +
le32_to_cpu(ucode_hdr->len) >
fw->size) {
wiphy_err(wl->wiphy,
"%s: conflicting bin/hdr\n",
Expand Down
21 changes: 14 additions & 7 deletions trunk/drivers/staging/brcm80211/brcmsmac/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2033,26 +2033,33 @@ static void brcms_ucode_write(struct brcms_hardware *wlc_hw, const u32 ucode[],
W_REG(&regs->objaddr, (OBJADDR_AUTO_INC | OBJADDR_UCM_SEL));
(void)R_REG(&regs->objaddr);
for (i = 0; i < count; i++)
W_REG(&regs->objdata, ucode[i]);
W_REG(&regs->objdata, le32_to_cpu(ucode[i]));

}

static void brcms_c_write_inits(struct brcms_hardware *wlc_hw,
const struct d11init *inits)
{
int i;
u8 *base;
u8 *addr;
u16 size;
u32 value;

BCMMSG(wlc_hw->wlc->wiphy, "wl%d\n", wlc_hw->unit);

base = (u8 *)wlc_hw->regs;

for (i = 0; inits[i].addr != 0xffff; i++) {
if (inits[i].size == 2)
W_REG((u16 *)(base + inits[i].addr),
inits[i].value);
else if (inits[i].size == 4)
W_REG((u32 *)(base + inits[i].addr),
inits[i].value);
size = le16_to_cpu(inits[i].size);
addr = base + le16_to_cpu(inits[i].addr);
value = le32_to_cpu(inits[i].value);
if (size == 2)
W_REG((u16 *)addr, value);
else if (size == 4)
W_REG((u32 *)addr, value);
else
break;
}
}

Expand Down

0 comments on commit 6031faa

Please sign in to comment.