[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