|
@@ -53,6 +53,8 @@ MODULE_FIRMWARE("rtlwifi/rtl8192cufw.bin");
|
|
|
static int rtl92cu_init_sw_vars(struct ieee80211_hw *hw)
|
|
|
{
|
|
|
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
|
|
+ const struct firmware *firmware;
|
|
|
+ int err;
|
|
|
|
|
|
rtlpriv->dm.dm_initialgain_enable = 1;
|
|
|
rtlpriv->dm.dm_flag = 0;
|
|
@@ -64,6 +66,24 @@ static int rtl92cu_init_sw_vars(struct ieee80211_hw *hw)
|
|
|
("Can't alloc buffer for fw.\n"));
|
|
|
return 1;
|
|
|
}
|
|
|
+ /* request fw */
|
|
|
+ err = request_firmware(&firmware, rtlpriv->cfg->fw_name,
|
|
|
+ rtlpriv->io.dev);
|
|
|
+ if (err) {
|
|
|
+ RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
|
|
|
+ ("Failed to request firmware!\n"));
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ if (firmware->size > 0x4000) {
|
|
|
+ RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
|
|
|
+ ("Firmware is too big!\n"));
|
|
|
+ release_firmware(firmware);
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ memcpy(rtlpriv->rtlhal.pfirmware, firmware->data, firmware->size);
|
|
|
+ rtlpriv->rtlhal.fwsize = firmware->size;
|
|
|
+ release_firmware(firmware);
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|