diff options
Diffstat (limited to 'drivers/staging/rtl8192e/r819xE_firmware.c')
-rw-r--r-- | drivers/staging/rtl8192e/r819xE_firmware.c | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/drivers/staging/rtl8192e/r819xE_firmware.c b/drivers/staging/rtl8192e/r819xE_firmware.c index 5c3da46..d9e8b5a 100644 --- a/drivers/staging/rtl8192e/r819xE_firmware.c +++ b/drivers/staging/rtl8192e/r819xE_firmware.c @@ -25,9 +25,8 @@ enum opt_rst_type { OPT_FIRMWARE_RESET = 1, }; -void firmware_init_param(struct net_device *dev) +void firmware_init_param(struct r8192_priv *priv) { - struct r8192_priv *priv = ieee80211_priv(dev); rt_firmware *pfirmware = priv->pFirmware; pfirmware->cmdpacket_frag_thresold = @@ -37,10 +36,9 @@ void firmware_init_param(struct net_device *dev) /* * segment the img and use the ptr and length to remember info on each segment */ -static bool fw_download_code(struct net_device *dev, u8 *code_virtual_address, +static bool fw_download_code(struct r8192_priv *priv, u8 *code_virtual_address, u32 buffer_len) { - struct r8192_priv *priv = ieee80211_priv(dev); bool rt_status = true; u16 frag_threshold; u16 frag_length, frag_offset = 0; @@ -52,7 +50,7 @@ static bool fw_download_code(struct net_device *dev, u8 *code_virtual_address, cb_desc *tcb_desc; u8 bLastIniPkt; - firmware_init_param(dev); + firmware_init_param(priv); /* Fragmentation might be required */ frag_threshold = pfirmware->cmdpacket_frag_thresold; @@ -70,7 +68,6 @@ static bool fw_download_code(struct net_device *dev, u8 *code_virtual_address, * descriptor info add 4 to avoid packet appending overflow. */ skb = dev_alloc_skb(frag_length + 4); - memcpy((unsigned char *)(skb->cb), &dev, sizeof(dev)); tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); tcb_desc->queue_index = TXCMD_QUEUE; tcb_desc->bCmdOrInit = DESC_PACKET_TYPE_INIT; @@ -96,7 +93,7 @@ static bool fw_download_code(struct net_device *dev, u8 *code_virtual_address, } tcb_desc->txbuf_size = (u16)i; skb_put(skb, i); - priv->ieee80211->softmac_hard_start_xmit(skb, dev); + priv->ieee80211->softmac_hard_start_xmit(skb, priv->ieee80211); code_virtual_address += frag_length; frag_offset += frag_length; @@ -113,7 +110,7 @@ static bool fw_download_code(struct net_device *dev, u8 *code_virtual_address, * register. Switch to CPU register in the begin and switch * back before return */ -static bool CPUcheck_maincodeok_turnonCPU(struct net_device *dev) +static bool CPUcheck_maincodeok_turnonCPU(struct r8192_priv *priv) { unsigned long timeout; bool rt_status = true; @@ -122,7 +119,7 @@ static bool CPUcheck_maincodeok_turnonCPU(struct net_device *dev) /* Check whether put code OK */ timeout = jiffies + msecs_to_jiffies(20); while (time_before(jiffies, timeout)) { - CPU_status = read_nic_dword(dev, CPU_GEN); + CPU_status = read_nic_dword(priv, CPU_GEN); if (CPU_status & CPU_GEN_PUT_CODE_OK) break; @@ -137,15 +134,15 @@ static bool CPUcheck_maincodeok_turnonCPU(struct net_device *dev) } /* Turn On CPU */ - CPU_status = read_nic_dword(dev, CPU_GEN); - write_nic_byte(dev, CPU_GEN, + CPU_status = read_nic_dword(priv, CPU_GEN); + write_nic_byte(priv, CPU_GEN, (u8)((CPU_status | CPU_GEN_PWR_STB_CPU) & 0xff)); mdelay(1); /* Check whether CPU boot OK */ timeout = jiffies + msecs_to_jiffies(20); while (time_before(jiffies, timeout)) { - CPU_status = read_nic_dword(dev, CPU_GEN); + CPU_status = read_nic_dword(priv, CPU_GEN); if (CPU_status & CPU_GEN_BOOT_RDY) break; @@ -165,7 +162,7 @@ CPUCheckMainCodeOKAndTurnOnCPU_Fail: return rt_status; } -static bool CPUcheck_firmware_ready(struct net_device *dev) +static bool CPUcheck_firmware_ready(struct r8192_priv *priv) { unsigned long timeout; bool rt_status = true; @@ -174,7 +171,7 @@ static bool CPUcheck_firmware_ready(struct net_device *dev) /* Check Firmware Ready */ timeout = jiffies + msecs_to_jiffies(20); while (time_before(jiffies, timeout)) { - CPU_status = read_nic_dword(dev, CPU_GEN); + CPU_status = read_nic_dword(priv, CPU_GEN); if (CPU_status & CPU_GEN_FIRM_RDY) break; @@ -195,9 +192,8 @@ CPUCheckFirmwareReady_Fail: } -bool init_firmware(struct net_device *dev) +bool init_firmware(struct r8192_priv *priv) { - struct r8192_priv *priv = ieee80211_priv(dev); bool rt_status = true; u32 file_length = 0; u8 *mapped_file = NULL; @@ -287,7 +283,7 @@ bool init_firmware(struct net_device *dev) * 3. each skb_buff packet data content will already include * the firmware info and Tx descriptor info */ - rt_status = fw_download_code(dev, mapped_file, file_length); + rt_status = fw_download_code(priv, mapped_file, file_length); if (rt_status != TRUE) goto download_firmware_fail; @@ -312,7 +308,7 @@ bool init_firmware(struct net_device *dev) pfirmware->firmware_status = FW_STATUS_2_MOVE_MAIN_CODE; /* Check Put Code OK and Turn On CPU */ - rt_status = CPUcheck_maincodeok_turnonCPU(dev); + rt_status = CPUcheck_maincodeok_turnonCPU(priv); if (rt_status != TRUE) { RT_TRACE(COMP_FIRMWARE, "CPUcheck_maincodeok_turnonCPU fail!\n"); @@ -327,7 +323,7 @@ bool init_firmware(struct net_device *dev) pfirmware->firmware_status = FW_STATUS_4_MOVE_DATA_CODE; mdelay(1); - rt_status = CPUcheck_firmware_ready(dev); + rt_status = CPUcheck_firmware_ready(priv); if (rt_status != TRUE) { RT_TRACE(COMP_FIRMWARE, "CPUcheck_firmware_ready fail(%d)!\n", @@ -345,7 +341,7 @@ bool init_firmware(struct net_device *dev) return rt_status; download_firmware_fail: - RT_TRACE(COMP_ERR, "ERR in %s()\n", __func__); + RT_TRACE(COMP_ERR, "ERR in %s() step %d\n", __func__, init_step); rt_status = false; return rt_status; } |