[x86] Enable rtl8192su driver using external firmware
svn path=/dists/trunk/linux-2.6/; revision=15377
This commit is contained in:
parent
f92b888553
commit
103df23a00
|
@ -4,6 +4,7 @@ linux-2.6 (2.6.33-1~experimental.4) UNRELEASED; urgency=low
|
||||||
* Include aufs2, marked as staging (Closes: #573189)
|
* Include aufs2, marked as staging (Closes: #573189)
|
||||||
* Remove /usr/include/drm from linux-libc-dev; let libdrm-dev provide it
|
* Remove /usr/include/drm from linux-libc-dev; let libdrm-dev provide it
|
||||||
again (Closes: #572067)
|
again (Closes: #572067)
|
||||||
|
* [x86] Enable rtl8192su driver using external firmware
|
||||||
|
|
||||||
-- Ben Hutchings <ben@decadent.org.uk> Sat, 13 Mar 2010 23:06:49 +0000
|
-- Ben Hutchings <ben@decadent.org.uk> Sat, 13 Mar 2010 23:06:49 +0000
|
||||||
|
|
||||||
|
|
|
@ -1122,6 +1122,11 @@ CONFIG_RTL8187SE=m
|
||||||
##
|
##
|
||||||
CONFIG_RTL8192E=m
|
CONFIG_RTL8192E=m
|
||||||
|
|
||||||
|
##
|
||||||
|
## file: drivers/staging/rtl8192su/Kconfig
|
||||||
|
##
|
||||||
|
CONFIG_RTL8192SU=m
|
||||||
|
|
||||||
##
|
##
|
||||||
## file: drivers/staging/usbip/Kconfig
|
## file: drivers/staging/usbip/Kconfig
|
||||||
##
|
##
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
diff --git a/drivers/staging/rtl8192su/Kconfig b/drivers/staging/rtl8192su/Kconfig
|
|
||||||
index 123fa6d..5e081b1 100644
|
|
||||||
--- a/drivers/staging/rtl8192su/Kconfig
|
|
||||||
+++ b/drivers/staging/rtl8192su/Kconfig
|
|
||||||
@@ -2,5 +2,6 @@ config RTL8192SU
|
|
||||||
tristate "RealTek RTL8192SU Wireless LAN NIC driver"
|
|
||||||
depends on PCI && WLAN && USB
|
|
||||||
depends on WIRELESS_EXT
|
|
||||||
+ depends on BROKEN
|
|
||||||
default N
|
|
||||||
---help---
|
|
|
@ -56,7 +56,7 @@ rm drivers/staging/rt3070/firmware.h
|
||||||
|
|
||||||
rm drivers/staging/rt3090/firmware.h
|
rm drivers/staging/rt3090/firmware.h
|
||||||
|
|
||||||
rm drivers/staging/rtl8192su/r8192SU_HWImg.c
|
unifdef drivers/staging/rtl8192su/r8192SU_HWImg.c -UREMOVE_DFSG
|
||||||
|
|
||||||
rm drivers/staging/rtl8192u/r819xU_firmware_img.c
|
rm drivers/staging/rtl8192u/r819xU_firmware_img.c
|
||||||
|
|
||||||
|
|
236
debian/patches/debian/dfsg/rtl8192su-Remove-Firmware-from-r8192SU_HWImg.patch
vendored
Normal file
236
debian/patches/debian/dfsg/rtl8192su-Remove-Firmware-from-r8192SU_HWImg.patch
vendored
Normal file
|
@ -0,0 +1,236 @@
|
||||||
|
From: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
|
||||||
|
Date: Fri, 19 Feb 2010 20:10:00 +0100
|
||||||
|
Subject: [PATCH] Staging: rtl8192su: Remove Firmware from r8192SU_HWImg.c
|
||||||
|
|
||||||
|
Because the Firmware is loaded from RTL8192SU/rtl8192sfw.bin,
|
||||||
|
it it save, to remove it from r8192SU_HWImg.c
|
||||||
|
|
||||||
|
Signed-off-by: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||||
|
[bwh: Use unifdef to remove the firmware itself]
|
||||||
|
|
||||||
|
diff --git a/drivers/staging/rtl8192su/r8192SU_HWImg.c b/drivers/staging/rtl8192su/r8192SU_HWImg.c
|
||||||
|
index cbb6579..ba8e12c 100644
|
||||||
|
--- a/drivers/staging/rtl8192su/r8192SU_HWImg.c
|
||||||
|
+++ b/drivers/staging/rtl8192su/r8192SU_HWImg.c
|
||||||
|
@@ -2,6 +2,7 @@
|
||||||
|
|
||||||
|
#include "r8192SU_HWImg.h"
|
||||||
|
|
||||||
|
+#ifdef REMOVE_DFSG
|
||||||
|
u8 Rtl8192SUFwImgArray[ImgArrayLength] = {
|
||||||
|
0x92,0x81,0x2b,0x90,0x30,0x00,0x00,0x00,0x08,0x74,0x00,0x00,0x88,0x96,0x00,0x00,
|
||||||
|
0x30,0x00,0x00,0x00,0x00,0x95,0x00,0x00,0x00,0x00,0x2b,0x00,0x03,0x03,0x23,0x00,
|
||||||
|
@@ -4277,6 +4278,7 @@
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xf2,0x30,0xb8,0xff,0xff,0xff,0xff,
|
||||||
|
};
|
||||||
|
|
||||||
|
+#endif
|
||||||
|
u8 Rtl8192SUFwMainArray[MainArrayLength] = {
|
||||||
|
0x0, };
|
||||||
|
|
||||||
|
diff --git a/drivers/staging/rtl8192su/r8192SU_HWImg.h b/drivers/staging/rtl8192su/r8192SU_HWImg.h
|
||||||
|
index 96b1525..36e84af 100644
|
||||||
|
--- a/drivers/staging/rtl8192su/r8192SU_HWImg.h
|
||||||
|
+++ b/drivers/staging/rtl8192su/r8192SU_HWImg.h
|
||||||
|
@@ -5,8 +5,6 @@
|
||||||
|
|
||||||
|
/*Created on 2009/ 3/ 6, 5:29*/
|
||||||
|
|
||||||
|
-#define ImgArrayLength 68368
|
||||||
|
-extern u8 Rtl8192SUFwImgArray[ImgArrayLength];
|
||||||
|
#define MainArrayLength 1
|
||||||
|
extern u8 Rtl8192SUFwMainArray[MainArrayLength];
|
||||||
|
#define DataArrayLength 1
|
||||||
|
diff --git a/drivers/staging/rtl8192su/r8192S_firmware.c b/drivers/staging/rtl8192su/r8192S_firmware.c
|
||||||
|
index ff65bd1..752a3f1 100644
|
||||||
|
--- a/drivers/staging/rtl8192su/r8192S_firmware.c
|
||||||
|
+++ b/drivers/staging/rtl8192su/r8192S_firmware.c
|
||||||
|
@@ -360,117 +360,58 @@ bool FirmwareDownload92S(struct net_device *dev)
|
||||||
|
|
||||||
|
RT_TRACE(COMP_FIRMWARE, " --->FirmwareDownload92S()\n");
|
||||||
|
|
||||||
|
- //3//
|
||||||
|
- //3 //<1> Open Image file, and map file to contineous memory if open file success.
|
||||||
|
- //3 // or read image file from array. Default load from BIN file
|
||||||
|
- //3//
|
||||||
|
- priv->firmware_source = FW_SOURCE_IMG_FILE;// We should decided by Reg.
|
||||||
|
-
|
||||||
|
- switch( priv->firmware_source )
|
||||||
|
+/*
|
||||||
|
+* Load the firmware from RTL8192SU/rtl8192sfw.bin
|
||||||
|
+*/
|
||||||
|
+ if(pFirmware->szFwTmpBufferLen == 0)
|
||||||
|
{
|
||||||
|
- case FW_SOURCE_IMG_FILE:
|
||||||
|
- if(pFirmware->szFwTmpBufferLen == 0)
|
||||||
|
- {
|
||||||
|
-
|
||||||
|
- rc = request_firmware(&fw_entry, pFwImageFileName[ulInitStep],&priv->udev->dev);//===>1
|
||||||
|
- if(rc < 0 ) {
|
||||||
|
- RT_TRACE(COMP_ERR, "request firmware fail!\n");
|
||||||
|
- goto DownloadFirmware_Fail;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if(fw_entry->size > sizeof(pFirmware->szFwTmpBuffer))
|
||||||
|
- {
|
||||||
|
- RT_TRACE(COMP_ERR, "img file size exceed the container buffer fail!\n");
|
||||||
|
- release_firmware(fw_entry);
|
||||||
|
- goto DownloadFirmware_Fail;
|
||||||
|
- }
|
||||||
|
+ rc = request_firmware(&fw_entry, pFwImageFileName[ulInitStep],&priv->udev->dev);
|
||||||
|
+ if(rc < 0 ) {
|
||||||
|
+ RT_TRACE(COMP_ERR, "request firmware fail!\n");
|
||||||
|
+ goto DownloadFirmware_Fail;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- memcpy(pFirmware->szFwTmpBuffer,fw_entry->data,fw_entry->size);
|
||||||
|
- pFirmware->szFwTmpBufferLen = fw_entry->size;
|
||||||
|
+ if(fw_entry->size > sizeof(pFirmware->szFwTmpBuffer)) {
|
||||||
|
+ RT_TRACE(COMP_ERR, "img file size exceed the container buffer fail!\n");
|
||||||
|
release_firmware(fw_entry);
|
||||||
|
-
|
||||||
|
- pucMappedFile = pFirmware->szFwTmpBuffer;
|
||||||
|
- file_length = pFirmware->szFwTmpBufferLen;
|
||||||
|
-
|
||||||
|
- //Retrieve FW header.
|
||||||
|
- pFirmware->pFwHeader = (PRT_8192S_FIRMWARE_HDR) pucMappedFile;
|
||||||
|
- pFwHdr = pFirmware->pFwHeader;
|
||||||
|
- RT_TRACE(COMP_FIRMWARE,"signature:%x, version:%x, size:%x, imemsize:%x, sram size:%x\n", \
|
||||||
|
- pFwHdr->Signature, pFwHdr->Version, pFwHdr->DMEMSize, \
|
||||||
|
- pFwHdr->IMG_IMEM_SIZE, pFwHdr->IMG_SRAM_SIZE);
|
||||||
|
- pFirmware->FirmwareVersion = byte(pFwHdr->Version ,0);
|
||||||
|
- if ((pFwHdr->IMG_IMEM_SIZE==0) || (pFwHdr->IMG_IMEM_SIZE > sizeof(pFirmware->FwIMEM)))
|
||||||
|
- {
|
||||||
|
- RT_TRACE(COMP_ERR, "%s: memory for data image is less than IMEM required\n",\
|
||||||
|
- __FUNCTION__);
|
||||||
|
- goto DownloadFirmware_Fail;
|
||||||
|
- } else {
|
||||||
|
- pucMappedFile+=FwHdrSize;
|
||||||
|
-
|
||||||
|
- //Retrieve IMEM image.
|
||||||
|
- memcpy(pFirmware->FwIMEM, pucMappedFile, pFwHdr->IMG_IMEM_SIZE);
|
||||||
|
- pFirmware->FwIMEMLen = pFwHdr->IMG_IMEM_SIZE;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (pFwHdr->IMG_SRAM_SIZE > sizeof(pFirmware->FwEMEM))
|
||||||
|
- {
|
||||||
|
- RT_TRACE(COMP_ERR, "%s: memory for data image is less than EMEM required\n",\
|
||||||
|
- __FUNCTION__);
|
||||||
|
- goto DownloadFirmware_Fail;
|
||||||
|
- } else {
|
||||||
|
- pucMappedFile += pFirmware->FwIMEMLen;
|
||||||
|
-
|
||||||
|
- /* Retriecve EMEM image */
|
||||||
|
- memcpy(pFirmware->FwEMEM, pucMappedFile, pFwHdr->IMG_SRAM_SIZE);//===>6
|
||||||
|
- pFirmware->FwEMEMLen = pFwHdr->IMG_SRAM_SIZE;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
-
|
||||||
|
+ goto DownloadFirmware_Fail;
|
||||||
|
}
|
||||||
|
- break;
|
||||||
|
|
||||||
|
- case FW_SOURCE_HEADER_FILE:
|
||||||
|
-#if 1
|
||||||
|
-#define Rtl819XFwImageArray Rtl8192SUFwImgArray
|
||||||
|
- //2008.11.10 Add by tynli.
|
||||||
|
- pucMappedFile = Rtl819XFwImageArray;
|
||||||
|
- ulFileLength = ImgArrayLength;
|
||||||
|
+ memcpy(pFirmware->szFwTmpBuffer,fw_entry->data,fw_entry->size);
|
||||||
|
+ pFirmware->szFwTmpBufferLen = fw_entry->size;
|
||||||
|
+ release_firmware(fw_entry);
|
||||||
|
+
|
||||||
|
+ pucMappedFile = pFirmware->szFwTmpBuffer;
|
||||||
|
+ file_length = pFirmware->szFwTmpBufferLen;
|
||||||
|
|
||||||
|
- RT_TRACE(COMP_INIT,"Fw download from header.\n");
|
||||||
|
- /* Retrieve FW header*/
|
||||||
|
+ /* Retrieve FW header. */
|
||||||
|
pFirmware->pFwHeader = (PRT_8192S_FIRMWARE_HDR) pucMappedFile;
|
||||||
|
pFwHdr = pFirmware->pFwHeader;
|
||||||
|
RT_TRACE(COMP_FIRMWARE,"signature:%x, version:%x, size:%x, imemsize:%x, sram size:%x\n", \
|
||||||
|
pFwHdr->Signature, pFwHdr->Version, pFwHdr->DMEMSize, \
|
||||||
|
pFwHdr->IMG_IMEM_SIZE, pFwHdr->IMG_SRAM_SIZE);
|
||||||
|
pFirmware->FirmwareVersion = byte(pFwHdr->Version ,0);
|
||||||
|
-
|
||||||
|
- if ((pFwHdr->IMG_IMEM_SIZE==0) || (pFwHdr->IMG_IMEM_SIZE > sizeof(pFirmware->FwIMEM)))
|
||||||
|
- {
|
||||||
|
- printk("FirmwareDownload92S(): memory for data image is less than IMEM required\n");
|
||||||
|
+ if ((pFwHdr->IMG_IMEM_SIZE==0) || (pFwHdr->IMG_IMEM_SIZE > sizeof(pFirmware->FwIMEM))) {
|
||||||
|
+ RT_TRACE(COMP_ERR, "%s: memory for data image is less than IMEM required\n",\
|
||||||
|
+ __FUNCTION__);
|
||||||
|
goto DownloadFirmware_Fail;
|
||||||
|
} else {
|
||||||
|
pucMappedFile+=FwHdrSize;
|
||||||
|
- //Retrieve IMEM image.
|
||||||
|
+ /* Retrieve IMEM image. */
|
||||||
|
memcpy(pFirmware->FwIMEM, pucMappedFile, pFwHdr->IMG_IMEM_SIZE);
|
||||||
|
pFirmware->FwIMEMLen = pFwHdr->IMG_IMEM_SIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (pFwHdr->IMG_SRAM_SIZE > sizeof(pFirmware->FwEMEM))
|
||||||
|
- {
|
||||||
|
- printk(" FirmwareDownload92S(): memory for data image is less than EMEM required\n");
|
||||||
|
- goto DownloadFirmware_Fail;
|
||||||
|
- } else {
|
||||||
|
- pucMappedFile+= pFirmware->FwIMEMLen;
|
||||||
|
-
|
||||||
|
- //Retriecve EMEM image.
|
||||||
|
- memcpy(pFirmware->FwEMEM, pucMappedFile, pFwHdr->IMG_SRAM_SIZE);
|
||||||
|
- pFirmware->FwEMEMLen = pFwHdr->IMG_SRAM_SIZE;
|
||||||
|
- }
|
||||||
|
-#endif
|
||||||
|
- break;
|
||||||
|
- default:
|
||||||
|
- break;
|
||||||
|
+ if (pFwHdr->IMG_SRAM_SIZE > sizeof(pFirmware->FwEMEM)) {
|
||||||
|
+ RT_TRACE(COMP_ERR, "%s: memory for data image is less than EMEM required\n",\
|
||||||
|
+ __FUNCTION__);
|
||||||
|
+ goto DownloadFirmware_Fail;
|
||||||
|
+ } else {
|
||||||
|
+ pucMappedFile += pFirmware->FwIMEMLen;
|
||||||
|
+ /* Retriecve EMEM image */
|
||||||
|
+ memcpy(pFirmware->FwEMEM, pucMappedFile, pFwHdr->IMG_SRAM_SIZE);//===>6
|
||||||
|
+ pFirmware->FwEMEMLen = pFwHdr->IMG_SRAM_SIZE;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
FwStatus = FirmwareGetNextStatus(pFirmware->FWStatus);
|
||||||
|
diff --git a/drivers/staging/rtl8192su/r8192S_firmware.h b/drivers/staging/rtl8192su/r8192S_firmware.h
|
||||||
|
index c525380..2c2cf80 100644
|
||||||
|
--- a/drivers/staging/rtl8192su/r8192S_firmware.h
|
||||||
|
+++ b/drivers/staging/rtl8192su/r8192S_firmware.h
|
||||||
|
@@ -59,12 +59,6 @@ typedef enum _desc_packet_type_e{
|
||||||
|
DESC_PACKET_TYPE_NORMAL = 1,
|
||||||
|
}desc_packet_type_e;
|
||||||
|
|
||||||
|
-typedef enum _firmware_source{
|
||||||
|
- FW_SOURCE_IMG_FILE = 0,
|
||||||
|
- FW_SOURCE_HEADER_FILE = 1,
|
||||||
|
-}firmware_source_e, *pfirmware_source_e;
|
||||||
|
-
|
||||||
|
-
|
||||||
|
typedef enum _opt_rst_type{
|
||||||
|
OPT_SYSTEM_RESET = 0,
|
||||||
|
OPT_FIRMWARE_RESET = 1,
|
||||||
|
@@ -185,7 +179,6 @@ typedef enum _FIRMWARE_8192S_STATUS{
|
||||||
|
#define RTL8190_MAX_FIRMWARE_CODE_SIZE 64000 //64k
|
||||||
|
|
||||||
|
typedef struct _rt_firmware{
|
||||||
|
- firmware_source_e eFWSource;
|
||||||
|
PRT_8192S_FIRMWARE_HDR pFwHeader;
|
||||||
|
FIRMWARE_8192S_STATUS FWStatus;
|
||||||
|
u16 FirmwareVersion;
|
||||||
|
diff --git a/drivers/staging/rtl8192su/r8192U.h b/drivers/staging/rtl8192su/r8192U.h
|
||||||
|
index 2a11e01..ba87623 100644
|
||||||
|
--- a/drivers/staging/rtl8192su/r8192U.h
|
||||||
|
+++ b/drivers/staging/rtl8192su/r8192U.h
|
||||||
|
@@ -1258,7 +1258,6 @@ typedef struct r8192_priv
|
||||||
|
u8 Rf_Mode; //add for Firmware RF -R/W switch
|
||||||
|
prt_firmware pFirmware;
|
||||||
|
rtl819xUsb_loopback_e LoopbackMode;
|
||||||
|
- firmware_source_e firmware_source;
|
||||||
|
bool usb_error;
|
||||||
|
|
||||||
|
u16 EEPROMTxPowerDiff;
|
|
@ -5,7 +5,7 @@
|
||||||
+ debian/dfsg/drivers-staging-otus-disable.patch
|
+ debian/dfsg/drivers-staging-otus-disable.patch
|
||||||
+ debian/dfsg/drivers-staging-rt2860-disable.patch
|
+ debian/dfsg/drivers-staging-rt2860-disable.patch
|
||||||
+ debian/dfsg/drivers-staging-rt2870-disable.patch
|
+ debian/dfsg/drivers-staging-rt2870-disable.patch
|
||||||
+ debian/dfsg/drivers-staging-rtl8192su-disable.patch
|
+ debian/dfsg/rtl8192su-Remove-Firmware-from-r8192SU_HWImg.patch
|
||||||
+ debian/dfsg/drivers-staging-wlags49_h2-disable.patch
|
+ debian/dfsg/drivers-staging-wlags49_h2-disable.patch
|
||||||
+ debian/dfsg/drivers-staging-wlags49_h25-disable.patch
|
+ debian/dfsg/drivers-staging-wlags49_h25-disable.patch
|
||||||
+ debian/dfsg/firmware-cleanup.patch
|
+ debian/dfsg/firmware-cleanup.patch
|
||||||
|
|
Loading…
Reference in New Issue