summaryrefslogtreecommitdiff
path: root/debian/patches/debian/dfsg/staging-rtl8192e-remove-built-in-firmware-images.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/debian/dfsg/staging-rtl8192e-remove-built-in-firmware-images.patch')
-rw-r--r--debian/patches/debian/dfsg/staging-rtl8192e-remove-built-in-firmware-images.patch203
1 files changed, 203 insertions, 0 deletions
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 <ben@decadent.org.uk>
+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 <ben@decadent.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+[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;