mirror of
https://github.com/lwfinger/rtl8188eu.git
synced 2024-11-22 04:23:39 +00:00
staging: r8188eu: Convert driver to use external firmware
As originally submitted, this driver acquired its firmware from data statements embedded in the source code. This information has been extracted into a binary file that has been accepted into the linux-firmware git repo as commit ffc47f1 entitled "rtlwifi: Add new firmware files for rtl8188eu". This patch switches the driver to use this file, and deletes the firmware data from the source. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
This commit is contained in:
parent
a27737ea39
commit
d53cd09c9d
5 changed files with 35 additions and 1821 deletions
1
Makefile
1
Makefile
|
@ -33,7 +33,6 @@ OUTSRC_FILES := \
|
|||
hal/HalPhyRf.o \
|
||||
hal/HalPhyRf_8188e.o \
|
||||
hal/HalPwrSeqCmd.o \
|
||||
hal/Hal8188EFWImg_CE.o \
|
||||
hal/Hal8188EPwrSeq.o \
|
||||
hal/Hal8188ERateAdaptive.o\
|
||||
hal/hal_intf.o \
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -19,6 +19,7 @@
|
|||
******************************************************************************/
|
||||
#define _HAL_INIT_C_
|
||||
|
||||
#include <linux/firmware.h>
|
||||
#include <drv_types.h>
|
||||
#include <rtw_efuse.h>
|
||||
|
||||
|
@ -588,13 +589,15 @@ s32 rtl8188e_FirmwareDownload(struct adapter *padapter)
|
|||
u8 writeFW_retry = 0;
|
||||
u32 fwdl_start_time;
|
||||
struct hal_data_8188e *pHalData = GET_HAL_DATA(padapter);
|
||||
|
||||
u8 *FwImage;
|
||||
u32 FwImageLen;
|
||||
struct dvobj_priv *dvobj = adapter_to_dvobj(padapter);
|
||||
struct device *device = dvobj_to_dev(dvobj);
|
||||
struct rt_firmware *pFirmware = NULL;
|
||||
const struct firmware *fw;
|
||||
struct rt_firmware_hdr *pFwHdr = NULL;
|
||||
u8 *pFirmwareBuf;
|
||||
u32 FirmwareLen;
|
||||
char fw_name[] = "rtlwifi/rtl8188eufw.bin";
|
||||
static int log_version;
|
||||
|
||||
RT_TRACE(_module_hal_init_c_, _drv_info_, ("+%s\n", __func__));
|
||||
pFirmware = (struct rt_firmware *)rtw_zmalloc(sizeof(struct rt_firmware));
|
||||
|
@ -603,27 +606,32 @@ s32 rtl8188e_FirmwareDownload(struct adapter *padapter)
|
|||
goto Exit;
|
||||
}
|
||||
|
||||
FwImage = (u8 *)Rtl8188E_FwImageArray;
|
||||
FwImageLen = Rtl8188E_FWImgArrayLength;
|
||||
|
||||
pFirmware->eFWSource = FW_SOURCE_HEADER_FILE;
|
||||
|
||||
switch (pFirmware->eFWSource) {
|
||||
case FW_SOURCE_IMG_FILE:
|
||||
break;
|
||||
case FW_SOURCE_HEADER_FILE:
|
||||
if (FwImageLen > FW_8188E_SIZE) {
|
||||
if (request_firmware(&fw, fw_name, device)) {
|
||||
rtStatus = _FAIL;
|
||||
goto Exit;
|
||||
}
|
||||
if (!fw) {
|
||||
pr_err("Firmware %s not available\n", fw_name);
|
||||
rtStatus = _FAIL;
|
||||
goto Exit;
|
||||
}
|
||||
if (fw->size > FW_8188E_SIZE) {
|
||||
rtStatus = _FAIL;
|
||||
RT_TRACE(_module_hal_init_c_, _drv_err_, ("Firmware size exceed 0x%X. Check it.\n", FW_8188E_SIZE));
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
pFirmware->szFwBuffer = FwImage;
|
||||
pFirmware->ulFwLength = FwImageLen;
|
||||
break;
|
||||
pFirmware->szFwBuffer = kzalloc(FW_8188E_SIZE, GFP_KERNEL);
|
||||
if (!pFirmware->szFwBuffer) {
|
||||
rtStatus = _FAIL;
|
||||
goto Exit;
|
||||
}
|
||||
memcpy(pFirmware->szFwBuffer, fw->data, fw->size);
|
||||
pFirmware->ulFwLength = fw->size;
|
||||
pFirmwareBuf = pFirmware->szFwBuffer;
|
||||
FirmwareLen = pFirmware->ulFwLength;
|
||||
release_firmware(fw);
|
||||
|
||||
DBG_88E_LEVEL(_drv_info_, "+%s: !bUsedWoWLANFw, FmrmwareLen:%d+\n", __func__, FirmwareLen);
|
||||
|
||||
/* To Check Fw header. Added by tynli. 2009.12.04. */
|
||||
|
@ -633,6 +641,7 @@ s32 rtl8188e_FirmwareDownload(struct adapter *padapter)
|
|||
pHalData->FirmwareSubVersion = pFwHdr->Subversion;
|
||||
pHalData->FirmwareSignature = le16_to_cpu(pFwHdr->Signature);
|
||||
|
||||
if (!log_version++)
|
||||
pr_info("%sFirmware Version %d, SubVersion %d, Signature 0x%x\n",
|
||||
DRIVER_PREFIX, pHalData->FirmwareVersion,
|
||||
pHalData->FirmwareSubVersion, pHalData->FirmwareSignature);
|
||||
|
@ -678,7 +687,7 @@ s32 rtl8188e_FirmwareDownload(struct adapter *padapter)
|
|||
goto Exit;
|
||||
}
|
||||
RT_TRACE(_module_hal_init_c_, _drv_info_, ("Firmware is ready to run!\n"));
|
||||
|
||||
kfree(pFirmware->szFwBuffer);
|
||||
Exit:
|
||||
|
||||
kfree(pFirmware);
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __INC_HAL8188E_FW_IMG_H
|
||||
#define __INC_HAL8188E_FW_IMG_H
|
||||
|
||||
/* V10(1641) */
|
||||
#define Rtl8188EFWImgArrayLength 13904
|
||||
|
||||
extern const u8 Rtl8188EFwImgArray[Rtl8188EFWImgArrayLength];
|
||||
|
||||
#endif /* __INC_HAL8188E_FW_IMG_H */
|
|
@ -31,11 +31,6 @@
|
|||
#include <drv_types.h>
|
||||
#include <hal_intf.h>
|
||||
|
||||
/* 2 Hardware Parameter Files */
|
||||
|
||||
#include "Hal8188EFWImg_CE.h"
|
||||
|
||||
|
||||
/* 2 OutSrc Header Files */
|
||||
|
||||
#include "odm.h"
|
||||
|
|
Loading…
Reference in a new issue