From 4edd0d432b7f3a5879e2d45b6b9bc9ec5fec8c5b Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sun, 27 Apr 2014 02:21:57 +0000 Subject: [PATCH] Replace rtl8192e firmware removal patch with version submitted upstream svn path=/dists/trunk/linux/; revision=21271 --- .../dfsg/r8192e-remove-firmware-again.patch | 61 ------ ...192e-remove-built-in-firmware-images.patch | 203 ++++++++++++++++++ debian/patches/series-orig | 2 +- 3 files changed, 204 insertions(+), 62 deletions(-) delete mode 100644 debian/patches/debian/dfsg/r8192e-remove-firmware-again.patch create mode 100644 debian/patches/debian/dfsg/staging-rtl8192e-remove-built-in-firmware-images.patch diff --git a/debian/patches/debian/dfsg/r8192e-remove-firmware-again.patch b/debian/patches/debian/dfsg/r8192e-remove-firmware-again.patch deleted file mode 100644 index f3020867e..000000000 --- a/debian/patches/debian/dfsg/r8192e-remove-firmware-again.patch +++ /dev/null @@ -1,61 +0,0 @@ -From: Ben Hutchings -Date: Thu, 01 Dec 2011 15:13:37 +0000 -Subject: rtl8192e: Remove firmware again -Forwarded: no - -Larry Finger imported a new version of this driver into staging. -Damn the regressions, let's have new crap! - -diff --git a/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c b/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c -index 3771985..b073208 100644 ---- a/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c -+++ b/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c -@@ -228,13 +228,6 @@ bool init_firmware(struct net_device *dev) - struct r8192_priv *priv = rtllib_priv(dev); - bool rt_status = true; - -- u8 *firmware_img_buf[3] = { &Rtl8192PciEFwBootArray[0], -- &Rtl8192PciEFwMainArray[0], -- &Rtl8192PciEFwDataArray[0]}; -- -- u32 firmware_img_len[3] = { sizeof(Rtl8192PciEFwBootArray), -- sizeof(Rtl8192PciEFwMainArray), -- sizeof(Rtl8192PciEFwDataArray)}; - u32 file_length = 0; - u8 *mapped_file = NULL; - u8 init_step = 0; -@@ -308,14 +301,6 @@ bool init_firmware(struct net_device *dev) - file_length = pfirmware->firmware_buf_size[init_step]; - break; - } -- case FW_SOURCE_HEADER_FILE: -- mapped_file = firmware_img_buf[init_step]; -- file_length = firmware_img_len[init_step]; -- if (init_step == FW_INIT_STEP2_DATA) { -- memcpy(pfirmware->firmware_buf[init_step], mapped_file, file_length); -- pfirmware->firmware_buf_size[init_step] = file_length; -- } -- break; - - default: - break; -diff --git a/drivers/staging/rtl8192e/rtl8192e/r8192E_hwimg.c b/drivers/staging/rtl8192e/rtl8192e/r8192E_hwimg.c -index 08e7dbb..e760397 100644 ---- a/drivers/staging/rtl8192e/rtl8192e/r8192E_hwimg.c -+++ b/drivers/staging/rtl8192e/rtl8192e/r8192E_hwimg.c -@@ -20,6 +20,7 @@ - - #include "r8192E_hwimg.h" - -+#ifdef REMOVE_DFSG - u8 Rtl8192PciEFwBootArray[BootArrayLengthPciE] = { - 0x10,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x3c,0x08,0xbf,0xc0,0x25,0x08,0x00,0x08, - 0x3c,0x09,0xb0,0x03,0xad,0x28,0x00,0x20,0x40,0x80,0x68,0x00,0x00,0x00,0x00,0x00, -@@ -2790,6 +2791,7 @@ u8 Rtl8192PciEFwDataArray[DataArrayLengthPciE] = { - 0x80,0x00,0x8f,0xa8,0x80,0x00,0x8f,0xa8,0x80,0x00,0x8f,0xa8,0x80,0x00,0x8f,0xa8, - 0x80,0x00,0x8f,0xd8,0x80,0x00,0x8f,0xec,0x80,0x00,0x90,0x00,0x80,0x00,0x8b,0x88, - }; -+#endif - - u32 Rtl8192PciEPHY_REGArray[PHY_REGArrayLengthPciE] = {0x0,}; - diff --git a/debian/patches/debian/dfsg/staging-rtl8192e-remove-built-in-firmware-images.patch b/debian/patches/debian/dfsg/staging-rtl8192e-remove-built-in-firmware-images.patch new file mode 100644 index 000000000..67dcabbe4 --- /dev/null +++ b/debian/patches/debian/dfsg/staging-rtl8192e-remove-built-in-firmware-images.patch @@ -0,0 +1,203 @@ +From: Ben Hutchings +Date: Thu, 24 Apr 2014 03:16:05 +0100 +Subject: Staging: rtl8192e: Remove built-in firmware images +Origin: https://git.kernel.org/cgit/linux/kernel/git/gregkh/staging.git/commit?id=84fcb4b3a3716662ee2f7e0c8270241c71baeb97 + +The driver can already use request_firmware() to load firmware, and +always does so. There is code in init_firmware() to use the static +firmware images, but it's unreachable! Remove the data and simplify +init_firmware() accordingly. + +Signed-off-by: Ben Hutchings +Signed-off-by: Greg Kroah-Hartman +[bwh: For Debian, insert markers for unifdef rather than quoting the firmware + to be removed] +--- +diff --git a/drivers/staging/rtl8192e/rtl8192e/Kconfig b/drivers/staging/rtl8192e/rtl8192e/Kconfig +index ad82bc3..282e293 100644 +--- a/drivers/staging/rtl8192e/rtl8192e/Kconfig ++++ b/drivers/staging/rtl8192e/rtl8192e/Kconfig +@@ -5,5 +5,6 @@ config RTL8192E + select WIRELESS_EXT + select WEXT_PRIV + select CRYPTO ++ select FW_LOADER + default N + ---help--- +diff --git a/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c b/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c +index abcd22f..1a95d1f 100644 +--- a/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c ++++ b/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c +@@ -228,13 +228,6 @@ bool init_firmware(struct net_device *dev) + struct r8192_priv *priv = rtllib_priv(dev); + bool rt_status = true; + +- u8 *firmware_img_buf[3] = { &Rtl8192PciEFwBootArray[0], +- &Rtl8192PciEFwMainArray[0], +- &Rtl8192PciEFwDataArray[0]}; +- +- u32 firmware_img_len[3] = { sizeof(Rtl8192PciEFwBootArray), +- sizeof(Rtl8192PciEFwMainArray), +- sizeof(Rtl8192PciEFwDataArray)}; + u32 file_length = 0; + u8 *mapped_file = NULL; + u8 init_step = 0; +@@ -257,77 +250,55 @@ bool init_firmware(struct net_device *dev) + " firmware state\n"); + } + +- priv->firmware_source = FW_SOURCE_IMG_FILE; + for (init_step = starting_state; init_step <= FW_INIT_STEP2_DATA; + init_step++) { + if (rst_opt == OPT_SYSTEM_RESET) { +- switch (priv->firmware_source) { +- case FW_SOURCE_IMG_FILE: +- { +- if (pfirmware->firmware_buf_size[init_step] == 0) { +- const char *fw_name[3] = { +- RTL8192E_BOOT_IMG_FW, +- RTL8192E_MAIN_IMG_FW, +- RTL8192E_DATA_IMG_FW +- }; +- const struct firmware *fw_entry; +- int rc; +- rc = request_firmware(&fw_entry, +- fw_name[init_step], &priv->pdev->dev); +- if (rc < 0) { +- RT_TRACE(COMP_FIRMWARE, "request firm" +- "ware fail!\n"); +- goto download_firmware_fail; +- } +- if (fw_entry->size > ++ if (pfirmware->firmware_buf_size[init_step] == 0) { ++ const char *fw_name[3] = { ++ RTL8192E_BOOT_IMG_FW, ++ RTL8192E_MAIN_IMG_FW, ++ RTL8192E_DATA_IMG_FW ++ }; ++ const struct firmware *fw_entry; ++ int rc; ++ rc = request_firmware(&fw_entry, ++ fw_name[init_step], ++ &priv->pdev->dev); ++ if (rc < 0) { ++ RT_TRACE(COMP_FIRMWARE, "request firmware fail!\n"); ++ goto download_firmware_fail; ++ } ++ if (fw_entry->size > + sizeof(pfirmware->firmware_buf[init_step])) { +- RT_TRACE(COMP_FIRMWARE, "img file size " ++ RT_TRACE(COMP_FIRMWARE, "img file size " + "exceed the container struct " + "buffer fail!\n"); +- goto download_firmware_fail; +- } ++ goto download_firmware_fail; ++ } + +- if (init_step != FW_INIT_STEP1_MAIN) { +- memcpy(pfirmware->firmware_buf[init_step], ++ if (init_step != FW_INIT_STEP1_MAIN) { ++ memcpy(pfirmware->firmware_buf[init_step], + fw_entry->data, fw_entry->size); +- pfirmware->firmware_buf_size[init_step] = +- fw_entry->size; ++ pfirmware->firmware_buf_size[init_step] = ++ fw_entry->size; + +- } else { +- memset(pfirmware->firmware_buf[init_step], ++ } else { ++ memset(pfirmware->firmware_buf[init_step], + 0, 128); +- memcpy(&pfirmware->firmware_buf[init_step][128], ++ memcpy(&pfirmware->firmware_buf[init_step][128], + fw_entry->data, fw_entry->size); +- pfirmware->firmware_buf_size[init_step] = +- fw_entry->size + 128; +- } +- +- if (rst_opt == OPT_SYSTEM_RESET) +- release_firmware(fw_entry); ++ pfirmware->firmware_buf_size[init_step] = ++ fw_entry->size + 128; + } +- mapped_file = pfirmware->firmware_buf[init_step]; +- file_length = pfirmware->firmware_buf_size[init_step]; +- break; +- } +- case FW_SOURCE_HEADER_FILE: +- mapped_file = firmware_img_buf[init_step]; +- file_length = firmware_img_len[init_step]; +- if (init_step == FW_INIT_STEP2_DATA) { +- memcpy(pfirmware->firmware_buf[init_step], mapped_file, file_length); +- pfirmware->firmware_buf_size[init_step] = file_length; +- } +- break; + +- default: +- break; ++ if (rst_opt == OPT_SYSTEM_RESET) ++ release_firmware(fw_entry); + } +- +- +- } else if (rst_opt == OPT_FIRMWARE_RESET) { +- mapped_file = pfirmware->firmware_buf[init_step]; +- file_length = pfirmware->firmware_buf_size[init_step]; + } + ++ mapped_file = pfirmware->firmware_buf[init_step]; ++ file_length = pfirmware->firmware_buf_size[init_step]; ++ + rt_status = fw_download_code(dev, mapped_file, file_length); + if (!rt_status) { + goto download_firmware_fail; +diff --git a/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.h b/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.h +index 06d6abc..94fa16b 100644 +--- a/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.h ++++ b/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.h +@@ -43,11 +43,6 @@ enum desc_packet_type { + DESC_PACKET_TYPE_NORMAL = 1, + }; + +-enum firmware_source { +- FW_SOURCE_IMG_FILE = 0, +- FW_SOURCE_HEADER_FILE = 1, +-}; +- + enum firmware_status { + FW_STATUS_0_INIT = 0, + FW_STATUS_1_MOVE_BOOT_CODE = 1, +diff --git a/drivers/staging/rtl8192e/rtl8192e/r8192E_hwimg.c b/drivers/staging/rtl8192e/rtl8192e/r8192E_hwimg.c +index 08e7dbb..6767b59 100644 +--- a/drivers/staging/rtl8192e/rtl8192e/r8192E_hwimg.c ++++ b/drivers/staging/rtl8192e/rtl8192e/r8192E_hwimg.c +@@ -20,6 +20,7 @@ + + #include "r8192E_hwimg.h" + ++#ifdef REMOVE_DFSG + u8 Rtl8192PciEFwBootArray[BootArrayLengthPciE] = { + 0x10,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x3c,0x08,0xbf,0xc0,0x25,0x08,0x00,0x08, + 0x3c,0x09,0xb0,0x03,0xad,0x28,0x00,0x20,0x40,0x80,0x68,0x00,0x00,0x00,0x00,0x00, +@@ -2791,6 +2792,7 @@ u8 Rtl8192PciEFwDataArray[DataArrayLengthPciE] = { + 0x80,0x00,0x8f,0xd8,0x80,0x00,0x8f,0xec,0x80,0x00,0x90,0x00,0x80,0x00,0x8b,0x88, + }; + ++#endif + u32 Rtl8192PciEPHY_REGArray[PHY_REGArrayLengthPciE] = {0x0,}; + + u32 Rtl8192PciEPHY_REG_1T2RArray[PHY_REG_1T2RArrayLengthPciE] = { +diff --git a/drivers/staging/rtl8192e/rtl8192e/rtl_core.h b/drivers/staging/rtl8192e/rtl8192e/rtl_core.h +index 35fc116..d1438c2 100644 +--- a/drivers/staging/rtl8192e/rtl8192e/rtl_core.h ++++ b/drivers/staging/rtl8192e/rtl8192e/rtl_core.h +@@ -582,7 +582,6 @@ struct r8192_priv { + + struct rt_firmware *pFirmware; + enum rtl819x_loopback LoopbackMode; +- enum firmware_source firmware_source; + + struct timer_list watch_dog_timer; + struct timer_list fsync_timer; diff --git a/debian/patches/series-orig b/debian/patches/series-orig index a3556c7a5..c06db41ac 100644 --- a/debian/patches/series-orig +++ b/debian/patches/series-orig @@ -5,6 +5,6 @@ + debian/dfsg/drivers-staging-wlags49_h2-disable.patch + debian/dfsg/drivers-staging-wlags49_h25-disable.patch + debian/dfsg/video-remove-nvidiafb-and-rivafb.patch -+ debian/dfsg/r8192e-remove-firmware-again.patch ++ debian/dfsg/staging-rtl8192e-remove-built-in-firmware-images.patch + debian/dfsg/firmware-cleanup.patch X debian/dfsg/files-1