42
42
#define FWBUFF_ALIGN_SZ 512
43
43
#define MAX_DUMP_FWSZ 49152 /*default = 49152 (48k)*/
45
static u32 rtl871x_open_fw(struct _adapter *padapter, void **pphfwfile_hdl,
46
const u8 **ppmappedfw)
45
static void rtl871x_load_fw_cb(const struct firmware *firmware, void *context)
47
struct _adapter *padapter = context;
49
complete(&padapter->rtl8712_fw_ready);
51
struct usb_device *udev = padapter->dvobjpriv.pusbdev;
52
struct usb_interface *pusb_intf = padapter->pusb_intf;
53
printk(KERN_ERR "r8712u: Firmware request failed\n");
54
padapter->fw_found = false;
56
usb_set_intfdata(pusb_intf, NULL);
59
padapter->fw = firmware;
60
padapter->fw_found = true;
61
/* firmware available - start netdev */
62
register_netdev(padapter->pnetdev);
65
static const char firmware_file[] = "rtlwifi/rtl8712u.bin";
67
int rtl871x_load_fw(struct _adapter *padapter)
69
struct device *dev = &padapter->dvobjpriv.pusbdev->dev;
49
const char firmware_file[] = "rtlwifi/rtl8712u.bin";
50
const struct firmware **praw = (const struct firmware **)
52
struct dvobj_priv *pdvobjpriv = (struct dvobj_priv *)
53
(&padapter->dvobjpriv);
54
struct usb_device *pusbdev = pdvobjpriv->pusbdev;
72
init_completion(&padapter->rtl8712_fw_ready);
56
73
printk(KERN_INFO "r8712u: Loading firmware from \"%s\"\n",
58
rc = request_firmware(praw, firmware_file, &pusbdev->dev);
60
printk(KERN_ERR "r8712u: Unable to load firmware\n");
61
printk(KERN_ERR "r8712u: Install latest linux-firmware\n");
75
rc = request_firmware_nowait(THIS_MODULE, 1, firmware_file, dev,
76
GFP_KERNEL, padapter, rtl871x_load_fw_cb);
78
printk(KERN_ERR "r8712u: Firmware request error %d\n", rc);
81
MODULE_FIRMWARE("rtlwifi/rtl8712u.bin");
83
static u32 rtl871x_open_fw(struct _adapter *padapter, const u8 **ppmappedfw)
85
const struct firmware **praw = &padapter->fw;
87
if (padapter->fw->size > 200000) {
88
printk(KERN_ERR "r8172u: Badfw->size of %d\n",
89
(int)padapter->fw->size);
64
92
*ppmappedfw = (u8 *)((*praw)->data);
65
93
return (*praw)->size;
67
MODULE_FIRMWARE("rtlwifi/rtl8712u.bin");
69
96
static void fill_fwpriv(struct _adapter *padapter, struct fw_priv *pfwpriv)
142
169
uint dump_imem_sz, imem_sz, dump_emem_sz, emem_sz; /* max = 49152; */
143
170
struct fw_hdr fwhdr;
144
171
u32 ulfilelength; /* FW file size */
145
void *phfwfile_hdl = NULL;
146
172
const u8 *pmappedfw = NULL;
147
173
u8 *ptmpchar = NULL, *ppayload, *ptr;
148
174
struct tx_desc *ptx_desc;
149
175
u32 txdscp_sz = sizeof(struct tx_desc);
152
ulfilelength = rtl871x_open_fw(padapter, &phfwfile_hdl, &pmappedfw);
178
ulfilelength = rtl871x_open_fw(padapter, &pmappedfw);
153
179
if (pmappedfw && (ulfilelength > 0)) {
154
180
update_fwhdr(&fwhdr, pmappedfw);
155
181
if (chk_fwhdr(&fwhdr, ulfilelength) == _FAIL)
157
183
fill_fwpriv(padapter, &fwhdr.fwpriv);
158
184
/* firmware check ok */
159
185
maxlen = (fwhdr.img_IMEM_size > fwhdr.img_SRAM_size) ?