[kernel] r15377 - in dists/trunk/linux-2.6/debian: . config/kernelarch-x86 patches/debian/dfsg patches/series
Ben Hutchings
benh at alioth.debian.org
Mon Mar 15 13:44:41 UTC 2010
Author: benh
Date: Mon Mar 15 13:44:38 2010
New Revision: 15377
Log:
[x86] Enable rtl8192su driver using external firmware
Added:
dists/trunk/linux-2.6/debian/patches/debian/dfsg/rtl8192su-Remove-Firmware-from-r8192SU_HWImg.patch
Deleted:
dists/trunk/linux-2.6/debian/patches/debian/dfsg/drivers-staging-rtl8192su-disable.patch
Modified:
dists/trunk/linux-2.6/debian/changelog
dists/trunk/linux-2.6/debian/config/kernelarch-x86/config
dists/trunk/linux-2.6/debian/patches/debian/dfsg/files-1
dists/trunk/linux-2.6/debian/patches/series/orig-0
Modified: dists/trunk/linux-2.6/debian/changelog
==============================================================================
--- dists/trunk/linux-2.6/debian/changelog Mon Mar 15 00:34:37 2010 (r15376)
+++ dists/trunk/linux-2.6/debian/changelog Mon Mar 15 13:44:38 2010 (r15377)
@@ -4,6 +4,7 @@
* Include aufs2, marked as staging (Closes: #573189)
* Remove /usr/include/drm from linux-libc-dev; let libdrm-dev provide it
again (Closes: #572067)
+ * [x86] Enable rtl8192su driver using external firmware
-- Ben Hutchings <ben at decadent.org.uk> Sat, 13 Mar 2010 23:06:49 +0000
Modified: dists/trunk/linux-2.6/debian/config/kernelarch-x86/config
==============================================================================
--- dists/trunk/linux-2.6/debian/config/kernelarch-x86/config Mon Mar 15 00:34:37 2010 (r15376)
+++ dists/trunk/linux-2.6/debian/config/kernelarch-x86/config Mon Mar 15 13:44:38 2010 (r15377)
@@ -1123,6 +1123,11 @@
CONFIG_RTL8192E=m
##
+## file: drivers/staging/rtl8192su/Kconfig
+##
+CONFIG_RTL8192SU=m
+
+##
## file: drivers/staging/usbip/Kconfig
##
CONFIG_USB_IP_COMMON=m
Modified: dists/trunk/linux-2.6/debian/patches/debian/dfsg/files-1
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/debian/dfsg/files-1 Mon Mar 15 00:34:37 2010 (r15376)
+++ dists/trunk/linux-2.6/debian/patches/debian/dfsg/files-1 Mon Mar 15 13:44:38 2010 (r15377)
@@ -56,7 +56,7 @@
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
Added: dists/trunk/linux-2.6/debian/patches/debian/dfsg/rtl8192su-Remove-Firmware-from-r8192SU_HWImg.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/trunk/linux-2.6/debian/patches/debian/dfsg/rtl8192su-Remove-Firmware-from-r8192SU_HWImg.patch Mon Mar 15 13:44:38 2010 (r15377)
@@ -0,0 +1,236 @@
+From: Florian Schilhabel <florian.c.schilhabel at 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 at googlemail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at 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;
Modified: dists/trunk/linux-2.6/debian/patches/series/orig-0
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/series/orig-0 Mon Mar 15 00:34:37 2010 (r15376)
+++ dists/trunk/linux-2.6/debian/patches/series/orig-0 Mon Mar 15 13:44:38 2010 (r15377)
@@ -5,7 +5,7 @@
+ debian/dfsg/drivers-staging-otus-disable.patch
+ debian/dfsg/drivers-staging-rt2860-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_h25-disable.patch
+ debian/dfsg/firmware-cleanup.patch
More information about the Kernel-svn-changes
mailing list