Update to 3.14-rc5
Drop/refresh patches as necessary - 'DocBook: Make mandocs parallel-safe' finally went upstream - Firmware loading in cs46xx has been implemented upstream, including the 'new DSP' case svn path=/dists/trunk/linux/; revision=21123
This commit is contained in:
parent
67f1f011f3
commit
07e9b9f710
|
@ -1,3 +1,9 @@
|
|||
linux (3.14~rc5-1~exp1) UNRELEASED; urgency=medium
|
||||
|
||||
* New upstream release candidate
|
||||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Thu, 06 Mar 2014 01:04:33 +0000
|
||||
|
||||
linux (3.13.5-1) unstable; urgency=medium
|
||||
|
||||
* New upstream stable update:
|
||||
|
|
|
@ -14,16 +14,16 @@ correctness.
|
|||
|
||||
--- a/drivers/net/phy/marvell.c
|
||||
+++ b/drivers/net/phy/marvell.c
|
||||
@@ -963,6 +963,7 @@
|
||||
.set_wol = &m88e1318_set_wol,
|
||||
@@ -975,6 +975,7 @@ static struct phy_driver marvell_drivers
|
||||
.suspend = &genphy_suspend,
|
||||
.driver = { .owner = THIS_MODULE },
|
||||
},
|
||||
+#if 0
|
||||
{
|
||||
.phy_id = MARVELL_PHY_ID_88E1145,
|
||||
.phy_id_mask = MARVELL_PHY_ID_MASK,
|
||||
@@ -976,6 +977,8 @@
|
||||
.config_intr = &marvell_config_intr,
|
||||
@@ -990,6 +991,8 @@ static struct phy_driver marvell_drivers
|
||||
.suspend = &genphy_suspend,
|
||||
.driver = { .owner = THIS_MODULE },
|
||||
},
|
||||
+#endif
|
||||
|
@ -31,8 +31,8 @@ correctness.
|
|||
{
|
||||
.phy_id = MARVELL_PHY_ID_88E1149R,
|
||||
.phy_id_mask = MARVELL_PHY_ID_MASK,
|
||||
@@ -989,6 +992,8 @@
|
||||
.config_intr = &marvell_config_intr,
|
||||
@@ -1005,6 +1008,8 @@ static struct phy_driver marvell_drivers
|
||||
.suspend = &genphy_suspend,
|
||||
.driver = { .owner = THIS_MODULE },
|
||||
},
|
||||
+#endif
|
||||
|
@ -40,15 +40,15 @@ correctness.
|
|||
{
|
||||
.phy_id = MARVELL_PHY_ID_88E1240,
|
||||
.phy_id_mask = MARVELL_PHY_ID_MASK,
|
||||
@@ -1002,6 +1007,7 @@
|
||||
.config_intr = &marvell_config_intr,
|
||||
@@ -1020,6 +1025,7 @@ static struct phy_driver marvell_drivers
|
||||
.suspend = &genphy_suspend,
|
||||
.driver = { .owner = THIS_MODULE },
|
||||
},
|
||||
+#endif
|
||||
{
|
||||
.phy_id = MARVELL_PHY_ID_88E1116R,
|
||||
.phy_id_mask = MARVELL_PHY_ID_MASK,
|
||||
@@ -1051,9 +1057,9 @@
|
||||
@@ -1073,9 +1079,9 @@ static struct mdio_device_id __maybe_unu
|
||||
{ MARVELL_PHY_ID_88E1111, MARVELL_PHY_ID_MASK },
|
||||
{ MARVELL_PHY_ID_88E1118, MARVELL_PHY_ID_MASK },
|
||||
{ MARVELL_PHY_ID_88E1121R, MARVELL_PHY_ID_MASK },
|
||||
|
|
|
@ -51,15 +51,15 @@ upstream submission.
|
|||
data = (u32 *) fw_entry->data;
|
||||
|
||||
/* disable MPU */
|
||||
--- a/arch/x86/kernel/microcode_amd.c
|
||||
+++ b/arch/x86/kernel/microcode_amd.c
|
||||
@@ -430,10 +430,8 @@ static enum ucode_state request_microcod
|
||||
--- a/arch/x86/kernel/cpu/microcode/amd.c
|
||||
+++ b/arch/x86/kernel/cpu/microcode/amd.c
|
||||
@@ -433,10 +433,8 @@ static enum ucode_state request_microcod
|
||||
if (c->x86 >= 0x15)
|
||||
snprintf(fw_name, sizeof(fw_name), "amd-ucode/microcode_amd_fam%.2xh.bin", c->x86);
|
||||
|
||||
- if (request_firmware(&fw, (const char *)fw_name, device)) {
|
||||
- if (request_firmware_direct(&fw, (const char *)fw_name, device)) {
|
||||
- pr_debug("failed to load file %s\n", fw_name);
|
||||
+ if (request_firmware(&fw, (const char *)fw_name, device))
|
||||
+ if (request_firmware_direct(&fw, (const char *)fw_name, device))
|
||||
goto out;
|
||||
- }
|
||||
|
||||
|
@ -96,7 +96,7 @@ upstream submission.
|
|||
fw_size = firmware->size / sizeof(u32);
|
||||
--- a/drivers/bluetooth/ath3k.c
|
||||
+++ b/drivers/bluetooth/ath3k.c
|
||||
@@ -359,10 +359,8 @@ static int ath3k_load_patch(struct usb_d
|
||||
@@ -363,10 +363,8 @@ static int ath3k_load_patch(struct usb_d
|
||||
fw_version.rom_version);
|
||||
|
||||
ret = request_firmware(&firmware, filename, &udev->dev);
|
||||
|
@ -108,7 +108,7 @@ upstream submission.
|
|||
|
||||
pt_version.rom_version = *(int *)(firmware->data + firmware->size - 8);
|
||||
pt_version.build_version = *(int *)
|
||||
@@ -421,10 +419,8 @@ static int ath3k_load_syscfg(struct usb_
|
||||
@@ -425,10 +423,8 @@ static int ath3k_load_syscfg(struct usb_
|
||||
fw_version.rom_version, clk_value, ".dfu");
|
||||
|
||||
ret = request_firmware(&firmware, filename, &udev->dev);
|
||||
|
@ -168,7 +168,7 @@ upstream submission.
|
|||
|
||||
--- a/drivers/bluetooth/btmrvl_sdio.c
|
||||
+++ b/drivers/bluetooth/btmrvl_sdio.c
|
||||
@@ -291,8 +291,6 @@ static int btmrvl_sdio_download_helper(s
|
||||
@@ -288,8 +288,6 @@ static int btmrvl_sdio_download_helper(s
|
||||
ret = request_firmware(&fw_helper, card->helper,
|
||||
&card->func->dev);
|
||||
if ((ret < 0) || !fw_helper) {
|
||||
|
@ -177,7 +177,7 @@ upstream submission.
|
|||
ret = -ENOENT;
|
||||
goto done;
|
||||
}
|
||||
@@ -391,8 +389,6 @@ static int btmrvl_sdio_download_fw_w_hel
|
||||
@@ -388,8 +386,6 @@ static int btmrvl_sdio_download_fw_w_hel
|
||||
ret = request_firmware(&fw_firmware, card->firmware,
|
||||
&card->func->dev);
|
||||
if ((ret < 0) || !fw_firmware) {
|
||||
|
@ -203,7 +203,7 @@ upstream submission.
|
|||
fw->size, fw_name);
|
||||
--- a/drivers/dma/imx-sdma.c
|
||||
+++ b/drivers/dma/imx-sdma.c
|
||||
@@ -1258,10 +1258,8 @@ static void sdma_load_firmware(const str
|
||||
@@ -1269,10 +1269,8 @@ static void sdma_load_firmware(const str
|
||||
const struct sdma_script_start_addrs *addr;
|
||||
unsigned short *ram_code;
|
||||
|
||||
|
@ -232,7 +232,7 @@ upstream submission.
|
|||
where = 0;
|
||||
--- a/drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
|
||||
+++ b/drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
|
||||
@@ -1092,10 +1092,8 @@ nvc0_graph_ctor_fw(struct nvc0_graph_pri
|
||||
@@ -1095,10 +1095,8 @@ nvc0_graph_ctor_fw(struct nvc0_graph_pri
|
||||
if (ret) {
|
||||
snprintf(f, sizeof(f), "nouveau/%s", fwname);
|
||||
ret = request_firmware(&fw, f, &device->pdev->dev);
|
||||
|
@ -261,7 +261,7 @@ upstream submission.
|
|||
printk(KERN_ERR
|
||||
--- a/drivers/gpu/drm/radeon/ni.c
|
||||
+++ b/drivers/gpu/drm/radeon/ni.c
|
||||
@@ -810,10 +810,6 @@ int ni_init_microcode(struct radeon_devi
|
||||
@@ -811,10 +811,6 @@ int ni_init_microcode(struct radeon_devi
|
||||
|
||||
out:
|
||||
if (err) {
|
||||
|
@ -288,7 +288,7 @@ upstream submission.
|
|||
rdev->me_fw->size, fw_name);
|
||||
--- a/drivers/gpu/drm/radeon/r600.c
|
||||
+++ b/drivers/gpu/drm/radeon/r600.c
|
||||
@@ -2366,10 +2366,6 @@ int r600_init_microcode(struct radeon_de
|
||||
@@ -2436,10 +2436,6 @@ int r600_init_microcode(struct radeon_de
|
||||
|
||||
out:
|
||||
if (err) {
|
||||
|
@ -342,7 +342,7 @@ upstream submission.
|
|||
ret = qib_ibsd_ucode_loaded(dd->pport, fw);
|
||||
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
|
||||
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
|
||||
@@ -986,10 +986,8 @@ static int mxt_load_fw(struct device *de
|
||||
@@ -985,10 +985,8 @@ static int mxt_load_fw(struct device *de
|
||||
int ret;
|
||||
|
||||
ret = request_firmware(&fw, fn, dev);
|
||||
|
@ -371,7 +371,7 @@ upstream submission.
|
|||
card->name, firmware->size);
|
||||
--- a/drivers/media/tuners/tuner-xc2028.c
|
||||
+++ b/drivers/media/tuners/tuner-xc2028.c
|
||||
@@ -1355,7 +1355,6 @@ static void load_firmware_cb(const struc
|
||||
@@ -1369,7 +1369,6 @@ static void load_firmware_cb(const struc
|
||||
|
||||
tuner_dbg("request_firmware_nowait(): %s\n", fw ? "OK" : "error");
|
||||
if (!fw) {
|
||||
|
@ -1147,7 +1147,7 @@ upstream submission.
|
|||
/* bts_header to remove out magic number and
|
||||
--- a/drivers/net/can/softing/softing_fw.c
|
||||
+++ b/drivers/net/can/softing/softing_fw.c
|
||||
@@ -238,11 +238,8 @@ int softing_load_app_fw(const char *file
|
||||
@@ -237,11 +237,8 @@ int softing_load_app_fw(const char *file
|
||||
int8_t type_end = 0, type_entrypoint = 0;
|
||||
|
||||
ret = request_firmware(&fw, file, &card->pdev->dev);
|
||||
|
@ -1205,7 +1205,7 @@ upstream submission.
|
|||
fw_tx->size, FIRMWARE_TX);
|
||||
--- a/drivers/net/ethernet/alteon/acenic.c
|
||||
+++ b/drivers/net/ethernet/alteon/acenic.c
|
||||
@@ -2889,11 +2889,8 @@ static int ace_load_firmware(struct net_
|
||||
@@ -2888,11 +2888,8 @@ static int ace_load_firmware(struct net_
|
||||
fw_name = "acenic/tg1.bin";
|
||||
|
||||
ret = request_firmware(&fw, fw_name, &ap->pdev->dev);
|
||||
|
@ -1220,7 +1220,7 @@ upstream submission.
|
|||
|
||||
--- a/drivers/net/ethernet/broadcom/bnx2.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bnx2.c
|
||||
@@ -3678,16 +3678,13 @@ static int bnx2_request_uncached_firmwar
|
||||
@@ -3696,16 +3696,13 @@ static int bnx2_request_uncached_firmwar
|
||||
}
|
||||
|
||||
rc = request_firmware(&bp->mips_firmware, mips_fw_file, &bp->pdev->dev);
|
||||
|
@ -1242,7 +1242,7 @@ upstream submission.
|
|||
if (bp->mips_firmware->size < sizeof(*mips_fw) ||
|
||||
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
|
||||
@@ -12497,11 +12497,8 @@ static int bnx2x_init_firmware(struct bn
|
||||
@@ -12637,11 +12637,8 @@ static int bnx2x_init_firmware(struct bn
|
||||
BNX2X_DEV_INFO("Loading %s\n", fw_file_name);
|
||||
|
||||
rc = request_firmware(&bp->firmware, fw_file_name, &bp->pdev->dev);
|
||||
|
@ -1257,7 +1257,7 @@ upstream submission.
|
|||
if (rc) {
|
||||
--- a/drivers/net/ethernet/broadcom/tg3.c
|
||||
+++ b/drivers/net/ethernet/broadcom/tg3.c
|
||||
@@ -11205,11 +11205,8 @@ static int tg3_request_firmware(struct t
|
||||
@@ -11293,11 +11293,8 @@ static int tg3_request_firmware(struct t
|
||||
{
|
||||
const struct tg3_firmware_hdr *fw_hdr;
|
||||
|
||||
|
@ -1351,7 +1351,7 @@ upstream submission.
|
|||
}
|
||||
--- a/drivers/net/ethernet/smsc/smc91c92_cs.c
|
||||
+++ b/drivers/net/ethernet/smsc/smc91c92_cs.c
|
||||
@@ -648,10 +648,8 @@ static int osi_load_firmware(struct pcmc
|
||||
@@ -647,10 +647,8 @@ static int osi_load_firmware(struct pcmc
|
||||
int i, err;
|
||||
|
||||
err = request_firmware(&fw, FIRMWARE_NAME, &link->dev);
|
||||
|
@ -1365,7 +1365,7 @@ upstream submission.
|
|||
for (i = 0; i < fw->size; i++) {
|
||||
--- a/drivers/net/ethernet/sun/cassini.c
|
||||
+++ b/drivers/net/ethernet/sun/cassini.c
|
||||
@@ -818,11 +818,8 @@ static void cas_saturn_firmware_init(str
|
||||
@@ -816,11 +816,8 @@ static void cas_saturn_firmware_init(str
|
||||
return;
|
||||
|
||||
err = request_firmware(&fw, fw_name, &cp->pdev->dev);
|
||||
|
@ -1395,7 +1395,7 @@ upstream submission.
|
|||
fw->size, fw_name[predef]);
|
||||
--- a/drivers/net/usb/kaweth.c
|
||||
+++ b/drivers/net/usb/kaweth.c
|
||||
@@ -398,10 +398,8 @@ static int kaweth_download_firmware(stru
|
||||
@@ -396,10 +396,8 @@ static int kaweth_download_firmware(stru
|
||||
int ret;
|
||||
|
||||
ret = request_firmware(&fw, fwname, &kaweth->dev->dev);
|
||||
|
@ -1476,7 +1476,7 @@ upstream submission.
|
|||
|
||||
--- a/drivers/net/wireless/atmel.c
|
||||
+++ b/drivers/net/wireless/atmel.c
|
||||
@@ -3928,12 +3928,8 @@ static int reset_atmel_card(struct net_d
|
||||
@@ -3927,12 +3927,8 @@ static int reset_atmel_card(struct net_d
|
||||
strcpy(priv->firmware_id, "atmel_at76c502.bin");
|
||||
}
|
||||
err = request_firmware(&fw_entry, priv->firmware_id, priv->sys_dev);
|
||||
|
@ -1530,7 +1530,7 @@ upstream submission.
|
|||
hdr = (struct b43legacy_fw_header *)((*fw)->data);
|
||||
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
|
||||
@@ -571,10 +571,8 @@ static const struct firmware *brcmf_sdbr
|
||||
@@ -590,10 +590,8 @@ static const struct firmware *brcmf_sdio
|
||||
|
||||
found:
|
||||
err = request_firmware(&fw, name, &bus->sdiodev->func[2]->dev);
|
||||
|
@ -1568,7 +1568,7 @@ upstream submission.
|
|||
}
|
||||
--- a/drivers/net/wireless/ipw2x00/ipw2100.c
|
||||
+++ b/drivers/net/wireless/ipw2x00/ipw2100.c
|
||||
@@ -8426,12 +8426,8 @@ static int ipw2100_get_firmware(struct i
|
||||
@@ -8425,12 +8425,8 @@ static int ipw2100_get_firmware(struct i
|
||||
|
||||
rc = request_firmware(&fw->fw_entry, fw_name, &priv->pci_dev->dev);
|
||||
|
||||
|
@ -1608,7 +1608,7 @@ upstream submission.
|
|||
else
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-drv.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-drv.c
|
||||
@@ -889,13 +889,8 @@ static void iwl_req_fw_callback(const st
|
||||
@@ -928,13 +928,8 @@ static void iwl_req_fw_callback(const st
|
||||
|
||||
memset(&pieces, 0, sizeof(pieces));
|
||||
|
||||
|
@ -1651,7 +1651,7 @@ upstream submission.
|
|||
adapter->firmware = firmware;
|
||||
--- a/drivers/net/wireless/mwl8k.c
|
||||
+++ b/drivers/net/wireless/mwl8k.c
|
||||
@@ -5531,16 +5531,12 @@ static int mwl8k_firmware_load_success(s
|
||||
@@ -5530,16 +5530,12 @@ static int mwl8k_firmware_load_success(s
|
||||
static void mwl8k_fw_state_machine(const struct firmware *fw, void *context)
|
||||
{
|
||||
struct mwl8k_priv *priv = context;
|
||||
|
@ -1669,7 +1669,7 @@ upstream submission.
|
|||
priv->fw_helper = fw;
|
||||
rc = mwl8k_request_fw(priv, priv->fw_pref, &priv->fw_ucode,
|
||||
true);
|
||||
@@ -5575,11 +5571,8 @@ static void mwl8k_fw_state_machine(const
|
||||
@@ -5574,11 +5570,8 @@ static void mwl8k_fw_state_machine(const
|
||||
break;
|
||||
|
||||
case FW_STATE_LOADING_ALT:
|
||||
|
@ -1682,7 +1682,7 @@ upstream submission.
|
|||
priv->fw_ucode = fw;
|
||||
rc = mwl8k_firmware_load_success(priv);
|
||||
if (rc)
|
||||
@@ -5617,10 +5610,8 @@ retry:
|
||||
@@ -5616,10 +5609,8 @@ retry:
|
||||
|
||||
/* Ask userland hotplug daemon for the device firmware */
|
||||
rc = mwl8k_request_firmware(priv, fw_image, nowait);
|
||||
|
@ -1730,7 +1730,7 @@ upstream submission.
|
|||
|
||||
--- a/drivers/net/wireless/orinoco/orinoco_usb.c
|
||||
+++ b/drivers/net/wireless/orinoco/orinoco_usb.c
|
||||
@@ -1691,7 +1691,6 @@ static int ezusb_probe(struct usb_interf
|
||||
@@ -1690,7 +1690,6 @@ static int ezusb_probe(struct usb_interf
|
||||
if (ezusb_firmware_download(upriv, &firmware))
|
||||
goto error;
|
||||
} else {
|
||||
|
@ -1740,7 +1740,7 @@ upstream submission.
|
|||
|
||||
--- a/drivers/net/wireless/p54/p54pci.c
|
||||
+++ b/drivers/net/wireless/p54/p54pci.c
|
||||
@@ -497,7 +497,6 @@ static void p54p_firmware_step2(const st
|
||||
@@ -496,7 +496,6 @@ static void p54p_firmware_step2(const st
|
||||
int err;
|
||||
|
||||
if (!fw) {
|
||||
|
@ -1764,7 +1764,7 @@ upstream submission.
|
|||
if (ret) {
|
||||
--- a/drivers/net/wireless/p54/p54usb.c
|
||||
+++ b/drivers/net/wireless/p54/p54usb.c
|
||||
@@ -930,7 +930,6 @@ static void p54u_load_firmware_cb(const
|
||||
@@ -929,7 +929,6 @@ static void p54u_load_firmware_cb(const
|
||||
err = p54u_start_ops(priv);
|
||||
} else {
|
||||
err = -ENOENT;
|
||||
|
@ -1774,7 +1774,7 @@ upstream submission.
|
|||
if (err) {
|
||||
--- a/drivers/net/wireless/prism54/islpci_dev.c
|
||||
+++ b/drivers/net/wireless/prism54/islpci_dev.c
|
||||
@@ -93,12 +93,9 @@ isl_upload_firmware(islpci_private *priv
|
||||
@@ -92,12 +92,9 @@ isl_upload_firmware(islpci_private *priv
|
||||
const u32 *fw_ptr;
|
||||
|
||||
rc = request_firmware(&fw_entry, priv->firmware, PRISM_FW_PDEV);
|
||||
|
@ -1791,7 +1791,7 @@ upstream submission.
|
|||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00firmware.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00firmware.c
|
||||
@@ -51,10 +51,8 @@ static int rt2x00lib_request_firmware(st
|
||||
@@ -49,10 +49,8 @@ static int rt2x00lib_request_firmware(st
|
||||
rt2x00_info(rt2x00dev, "Loading firmware file '%s'\n", fw_name);
|
||||
|
||||
retval = request_firmware(&fw, fw_name, device);
|
||||
|
@ -1825,7 +1825,7 @@ upstream submission.
|
|||
}
|
||||
--- a/drivers/net/wireless/ti/wl1251/main.c
|
||||
+++ b/drivers/net/wireless/ti/wl1251/main.c
|
||||
@@ -70,10 +70,8 @@ static int wl1251_fetch_firmware(struct
|
||||
@@ -71,10 +71,8 @@ static int wl1251_fetch_firmware(struct
|
||||
|
||||
ret = request_firmware(&fw, WL1251_FW_NAME, dev);
|
||||
|
||||
|
@ -1837,7 +1837,7 @@ upstream submission.
|
|||
|
||||
if (fw->size % 4) {
|
||||
wl1251_error("firmware size is not multiple of 32 bits: %zu",
|
||||
@@ -109,10 +107,8 @@ static int wl1251_fetch_nvs(struct wl125
|
||||
@@ -110,10 +108,8 @@ static int wl1251_fetch_nvs(struct wl125
|
||||
|
||||
ret = request_firmware(&fw, WL1251_NVS_NAME, dev);
|
||||
|
||||
|
@ -1851,7 +1851,7 @@ upstream submission.
|
|||
wl1251_error("nvs size is not multiple of 32 bits: %zu",
|
||||
--- a/drivers/net/wireless/ti/wlcore/main.c
|
||||
+++ b/drivers/net/wireless/ti/wlcore/main.c
|
||||
@@ -753,10 +753,8 @@ static int wl12xx_fetch_firmware(struct
|
||||
@@ -752,10 +752,8 @@ static int wl12xx_fetch_firmware(struct
|
||||
|
||||
ret = request_firmware(&fw, fw_name, wl->dev);
|
||||
|
||||
|
@ -1876,7 +1876,7 @@ upstream submission.
|
|||
}
|
||||
--- a/drivers/net/wireless/zd1211rw/zd_usb.c
|
||||
+++ b/drivers/net/wireless/zd1211rw/zd_usb.c
|
||||
@@ -121,16 +121,9 @@ static void int_urb_complete(struct urb
|
||||
@@ -120,16 +120,9 @@ static void int_urb_complete(struct urb
|
||||
static int request_fw_file(
|
||||
const struct firmware **fw, const char *name, struct device *device)
|
||||
{
|
||||
|
@ -1960,7 +1960,7 @@ upstream submission.
|
|||
if (err) {
|
||||
--- a/drivers/scsi/bfa/bfad.c
|
||||
+++ b/drivers/scsi/bfa/bfad.c
|
||||
@@ -1781,7 +1781,6 @@ bfad_read_firmware(struct pci_dev *pdev,
|
||||
@@ -1778,7 +1778,6 @@ bfad_read_firmware(struct pci_dev *pdev,
|
||||
const struct firmware *fw;
|
||||
|
||||
if (request_firmware(&fw, fw_name, &pdev->dev)) {
|
||||
|
@ -2007,7 +2007,7 @@ upstream submission.
|
|||
}
|
||||
--- a/drivers/scsi/qla2xxx/qla_init.c
|
||||
+++ b/drivers/scsi/qla2xxx/qla_init.c
|
||||
@@ -5134,8 +5134,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha,
|
||||
@@ -5136,8 +5136,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha,
|
||||
/* Load firmware blob. */
|
||||
blob = qla2x00_request_firmware(vha);
|
||||
if (!blob) {
|
||||
|
@ -2016,7 +2016,7 @@ upstream submission.
|
|||
ql_log(ql_log_info, vha, 0x0084,
|
||||
"Firmware images can be retrieved from: "QLA_FW_URL ".\n");
|
||||
return QLA_FUNCTION_FAILED;
|
||||
@@ -5236,8 +5234,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t *
|
||||
@@ -5238,8 +5236,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t *
|
||||
/* Load firmware blob. */
|
||||
blob = qla2x00_request_firmware(vha);
|
||||
if (!blob) {
|
||||
|
@ -2027,7 +2027,7 @@ upstream submission.
|
|||
QLA_FW_URL ".\n");
|
||||
--- a/drivers/scsi/qla2xxx/qla_nx.c
|
||||
+++ b/drivers/scsi/qla2xxx/qla_nx.c
|
||||
@@ -2435,11 +2435,8 @@ try_blob_fw:
|
||||
@@ -2449,11 +2449,8 @@ try_blob_fw:
|
||||
|
||||
/* Load firmware blob. */
|
||||
blob = ha->hablob = qla2x00_request_firmware(vha);
|
||||
|
@ -2042,7 +2042,7 @@ upstream submission.
|
|||
if (qla82xx_validate_firmware_blob(vha,
|
||||
--- a/drivers/scsi/qla2xxx/qla_os.c
|
||||
+++ b/drivers/scsi/qla2xxx/qla_os.c
|
||||
@@ -5311,8 +5311,6 @@ qla2x00_request_firmware(scsi_qla_host_t
|
||||
@@ -5315,8 +5315,6 @@ qla2x00_request_firmware(scsi_qla_host_t
|
||||
goto out;
|
||||
|
||||
if (request_firmware(&blob->fw, blob->name, &ha->pdev->dev)) {
|
||||
|
@ -2068,7 +2068,7 @@ upstream submission.
|
|||
fw->size, fwname);
|
||||
--- a/drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
|
||||
+++ b/drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
|
||||
@@ -2203,16 +2203,12 @@ struct net_device *init_ft1000_card(stru
|
||||
@@ -2233,16 +2233,12 @@ struct net_device *init_ft1000_card(stru
|
||||
info->AsicID = ft1000_read_reg(dev, FT1000_REG_ASIC_ID);
|
||||
if (info->AsicID == ELECTRABUZZ_ID) {
|
||||
DEBUG(0, "ft1000_hw: ELECTRABUZZ ASIC\n");
|
||||
|
@ -2089,7 +2089,7 @@ upstream submission.
|
|||
ft1000_enable_interrupts(dev);
|
||||
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
|
||||
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
|
||||
@@ -138,10 +138,8 @@ static int ft1000_probe(struct usb_inter
|
||||
@@ -137,10 +137,8 @@ static int ft1000_probe(struct usb_inter
|
||||
ft1000dev->bulk_out_endpointAddr);
|
||||
|
||||
ret = request_firmware(&dsp_fw, "ft3000.img", &dev->dev);
|
||||
|
@ -2103,7 +2103,7 @@ upstream submission.
|
|||
pFileStart = kmalloc(size, GFP_KERNEL);
|
||||
--- a/drivers/staging/media/as102/as102_fw.c
|
||||
+++ b/drivers/staging/media/as102/as102_fw.c
|
||||
@@ -190,11 +190,8 @@ int as102_fw_upload(struct as10x_bus_ada
|
||||
@@ -185,11 +185,8 @@ int as102_fw_upload(struct as10x_bus_ada
|
||||
|
||||
/* request kernel to locate firmware file: part1 */
|
||||
errno = request_firmware(&firmware, fw1, &dev->dev);
|
||||
|
@ -2116,7 +2116,7 @@ upstream submission.
|
|||
|
||||
/* initiate firmware upload */
|
||||
errno = as102_firmware_upload(bus_adap, cmd_buf, firmware);
|
||||
@@ -213,11 +210,8 @@ int as102_fw_upload(struct as10x_bus_ada
|
||||
@@ -208,11 +205,8 @@ int as102_fw_upload(struct as10x_bus_ada
|
||||
|
||||
/* request kernel to locate firmware file: part2 */
|
||||
errno = request_firmware(&firmware, fw2, &dev->dev);
|
||||
|
@ -2131,7 +2131,7 @@ upstream submission.
|
|||
errno = as102_firmware_upload(bus_adap, cmd_buf, firmware);
|
||||
--- a/drivers/staging/media/go7007/go7007-driver.c
|
||||
+++ b/drivers/staging/media/go7007/go7007-driver.c
|
||||
@@ -96,10 +96,8 @@ static int go7007_load_encoder(struct go
|
||||
@@ -95,10 +95,8 @@ static int go7007_load_encoder(struct go
|
||||
u16 intr_val, intr_data;
|
||||
|
||||
if (go->boot_fw == NULL) {
|
||||
|
@ -2161,7 +2161,7 @@ upstream submission.
|
|||
goto fw_failed;
|
||||
--- a/drivers/staging/media/go7007/go7007-loader.c
|
||||
+++ b/drivers/staging/media/go7007/go7007-loader.c
|
||||
@@ -80,11 +80,8 @@ static int go7007_loader_probe(struct us
|
||||
@@ -79,11 +79,8 @@ static int go7007_loader_probe(struct us
|
||||
|
||||
dev_info(&interface->dev, "loading firmware %s\n", fw1);
|
||||
|
||||
|
@ -2174,7 +2174,7 @@ upstream submission.
|
|||
ret = cypress_load_firmware(usbdev, fw, CYPRESS_FX2);
|
||||
release_firmware(fw);
|
||||
if (0 != ret) {
|
||||
@@ -95,11 +92,8 @@ static int go7007_loader_probe(struct us
|
||||
@@ -94,11 +91,8 @@ static int go7007_loader_probe(struct us
|
||||
if (fw2 == NULL)
|
||||
return 0;
|
||||
|
||||
|
@ -2193,8 +2193,8 @@ upstream submission.
|
|||
/* Request codeset data file */
|
||||
ret = request_firmware(&fw_entry, "haup-ir-blaster.bin", tx->ir->l.dev);
|
||||
if (ret != 0) {
|
||||
- zilog_error("firmware haup-ir-blaster.bin not available "
|
||||
- "(%d)\n", ret);
|
||||
- zilog_error("firmware haup-ir-blaster.bin not available (%d)\n",
|
||||
- ret);
|
||||
ret = ret < 0 ? ret : -EFAULT;
|
||||
goto out;
|
||||
}
|
||||
|
@ -2268,7 +2268,7 @@ upstream submission.
|
|||
if (!pBuffer)
|
||||
--- a/drivers/tty/cyclades.c
|
||||
+++ b/drivers/tty/cyclades.c
|
||||
@@ -3520,10 +3520,8 @@ static int cyz_load_fw(struct pci_dev *p
|
||||
@@ -3522,10 +3522,8 @@ static int cyz_load_fw(struct pci_dev *p
|
||||
int retval;
|
||||
|
||||
retval = request_firmware(&fw, "cyzfirm.bin", &pdev->dev);
|
||||
|
@ -2339,7 +2339,7 @@ upstream submission.
|
|||
|
||||
--- a/drivers/usb/atm/cxacru.c
|
||||
+++ b/drivers/usb/atm/cxacru.c
|
||||
@@ -1082,8 +1082,6 @@ static int cxacru_find_firmware(struct c
|
||||
@@ -1081,8 +1081,6 @@ static int cxacru_find_firmware(struct c
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
|
@ -2350,7 +2350,7 @@ upstream submission.
|
|||
|
||||
--- a/drivers/usb/atm/ueagle-atm.c
|
||||
+++ b/drivers/usb/atm/ueagle-atm.c
|
||||
@@ -650,10 +650,8 @@ static void uea_upload_pre_firmware(cons
|
||||
@@ -649,10 +649,8 @@ static void uea_upload_pre_firmware(cons
|
||||
int ret, size;
|
||||
|
||||
uea_enters(usb);
|
||||
|
@ -2362,7 +2362,7 @@ upstream submission.
|
|||
|
||||
pfw = fw_entry->data;
|
||||
size = fw_entry->size;
|
||||
@@ -748,10 +746,6 @@ static int uea_load_firmware(struct usb_
|
||||
@@ -747,10 +745,6 @@ static int uea_load_firmware(struct usb_
|
||||
ret = request_firmware_nowait(THIS_MODULE, 1, fw_name, &usb->dev,
|
||||
GFP_KERNEL, usb,
|
||||
uea_upload_pre_firmware);
|
||||
|
@ -2373,7 +2373,7 @@ upstream submission.
|
|||
|
||||
uea_leaves(usb);
|
||||
return ret;
|
||||
@@ -913,12 +907,8 @@ static int request_dsp(struct uea_softc
|
||||
@@ -912,12 +906,8 @@ static int request_dsp(struct uea_softc
|
||||
}
|
||||
|
||||
ret = request_firmware(&sc->dsp_firm, dsp_name, &sc->usb_dev->dev);
|
||||
|
@ -2387,7 +2387,7 @@ upstream submission.
|
|||
|
||||
if (UEA_CHIP_VERSION(sc) == EAGLE_IV)
|
||||
ret = check_dsp_e4(sc->dsp_firm->data, sc->dsp_firm->size);
|
||||
@@ -1631,12 +1621,8 @@ static int request_cmvs_old(struct uea_s
|
||||
@@ -1630,12 +1620,8 @@ static int request_cmvs_old(struct uea_s
|
||||
|
||||
cmvs_file_name(sc, cmv_name, 1);
|
||||
ret = request_firmware(fw, cmv_name, &sc->usb_dev->dev);
|
||||
|
@ -2401,7 +2401,7 @@ upstream submission.
|
|||
|
||||
data = (u8 *) (*fw)->data;
|
||||
size = (*fw)->size;
|
||||
@@ -1673,9 +1659,6 @@ static int request_cmvs(struct uea_softc
|
||||
@@ -1672,9 +1658,6 @@ static int request_cmvs(struct uea_softc
|
||||
"try to get older cmvs\n", cmv_name);
|
||||
return request_cmvs_old(sc, cmvs, fw);
|
||||
}
|
||||
|
@ -2411,7 +2411,7 @@ upstream submission.
|
|||
return ret;
|
||||
}
|
||||
|
||||
@@ -1958,11 +1941,8 @@ static int load_XILINX_firmware(struct u
|
||||
@@ -1957,11 +1940,8 @@ static int load_XILINX_firmware(struct u
|
||||
uea_enters(INS_TO_USBDEV(sc));
|
||||
|
||||
ret = request_firmware(&fw_entry, fw_name, &sc->usb_dev->dev);
|
||||
|
@ -2426,7 +2426,7 @@ upstream submission.
|
|||
size = fw_entry->size;
|
||||
--- a/drivers/usb/misc/emi26.c
|
||||
+++ b/drivers/usb/misc/emi26.c
|
||||
@@ -89,21 +89,17 @@ static int emi26_load_firmware (struct u
|
||||
@@ -88,21 +88,17 @@ static int emi26_load_firmware (struct u
|
||||
|
||||
err = request_ihex_firmware(&loader_fw, "emi26/loader.fw", &dev->dev);
|
||||
if (err)
|
||||
|
@ -2453,7 +2453,7 @@ upstream submission.
|
|||
err = emi26_set_reset(dev,1);
|
||||
--- a/drivers/usb/misc/ezusb.c
|
||||
+++ b/drivers/usb/misc/ezusb.c
|
||||
@@ -80,12 +80,8 @@ static int ezusb_ihex_firmware_download(
|
||||
@@ -79,12 +79,8 @@ static int ezusb_ihex_firmware_download(
|
||||
const struct ihex_binrec *record;
|
||||
|
||||
if (request_ihex_firmware(&firmware, firmware_path,
|
||||
|
@ -2479,7 +2479,7 @@ upstream submission.
|
|||
}
|
||||
--- a/drivers/usb/serial/io_edgeport.c
|
||||
+++ b/drivers/usb/serial/io_edgeport.c
|
||||
@@ -300,11 +300,8 @@ static void update_edgeport_E2PROM(struc
|
||||
@@ -299,11 +299,8 @@ static void update_edgeport_E2PROM(struc
|
||||
|
||||
response = request_ihex_firmware(&fw, fw_name,
|
||||
&edge_serial->serial->dev->dev);
|
||||
|
@ -2494,7 +2494,7 @@ upstream submission.
|
|||
BootMajorVersion = rec->data[0];
|
||||
--- a/drivers/usb/serial/io_ti.c
|
||||
+++ b/drivers/usb/serial/io_ti.c
|
||||
@@ -779,8 +779,6 @@ static int build_i2c_fw_hdr(__u8 *header
|
||||
@@ -768,8 +768,6 @@ static int build_i2c_fw_hdr(__u8 *header
|
||||
|
||||
err = request_firmware(&fw, fw_name, dev);
|
||||
if (err) {
|
||||
|
@ -2503,7 +2503,7 @@ upstream submission.
|
|||
kfree(buffer);
|
||||
return err;
|
||||
}
|
||||
@@ -1338,8 +1336,6 @@ static int download_fw(struct edgeport_s
|
||||
@@ -1315,8 +1313,6 @@ static int download_fw(struct edgeport_s
|
||||
|
||||
err = request_firmware(&fw, fw_name, dev);
|
||||
if (err) {
|
||||
|
@ -2514,7 +2514,7 @@ upstream submission.
|
|||
}
|
||||
--- a/drivers/usb/serial/ti_usb_3410_5052.c
|
||||
+++ b/drivers/usb/serial/ti_usb_3410_5052.c
|
||||
@@ -1500,10 +1500,8 @@ static int ti_download_firmware(struct t
|
||||
@@ -1490,10 +1490,8 @@ static int ti_download_firmware(struct t
|
||||
}
|
||||
status = request_firmware(&fw_p, buf, &dev->dev);
|
||||
}
|
||||
|
@ -2640,20 +2640,6 @@ upstream submission.
|
|||
goto error1;
|
||||
}
|
||||
if (firmware->size < sizeof(header)) {
|
||||
--- a/sound/pci/cs46xx/cs46xx_lib.c
|
||||
+++ b/sound/pci/cs46xx/cs46xx_lib.c
|
||||
@@ -411,10 +411,8 @@ static int snd_cs46xx_download_image(str
|
||||
|
||||
err = request_firmware(&firmware, "cs46xx/cs46xx-old.fw",
|
||||
&chip->pci->dev);
|
||||
- if (err < 0) {
|
||||
- snd_printk(KERN_ERR "cs46xx: no firmware\n");
|
||||
+ if (err)
|
||||
return err;
|
||||
- }
|
||||
|
||||
err = snd_cs46xx_check_image_size(firmware);
|
||||
if (err < 0)
|
||||
--- a/sound/pci/echoaudio/echoaudio.c
|
||||
+++ b/sound/pci/echoaudio/echoaudio.c
|
||||
@@ -57,10 +57,8 @@ static int get_firmware(const struct fir
|
||||
|
@ -2684,7 +2670,7 @@ upstream submission.
|
|||
}
|
||||
--- a/sound/pci/hda/hda_intel.c
|
||||
+++ b/sound/pci/hda/hda_intel.c
|
||||
@@ -3783,11 +3783,8 @@ static void azx_firmware_cb(const struct
|
||||
@@ -3792,11 +3792,8 @@ static void azx_firmware_cb(const struct
|
||||
struct azx *chip = card->private_data;
|
||||
struct pci_dev *pci = chip->pci;
|
||||
|
||||
|
@ -2753,7 +2739,7 @@ upstream submission.
|
|||
if (err) {
|
||||
--- a/sound/pci/rme9652/hdsp.c
|
||||
+++ b/sound/pci/rme9652/hdsp.c
|
||||
@@ -5151,10 +5151,8 @@ static int hdsp_request_fw_loader(struct
|
||||
@@ -5145,10 +5145,8 @@ static int hdsp_request_fw_loader(struct
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -2799,3 +2785,18 @@ upstream submission.
|
|||
kfree(buffer);
|
||||
return -EIO;
|
||||
}
|
||||
--- a/sound/pci/cs46xx/cs46xx_lib.c
|
||||
+++ b/sound/pci/cs46xx/cs46xx_lib.c
|
||||
@@ -3265,11 +3265,8 @@ int snd_cs46xx_start_dsp(struct snd_cs46
|
||||
#ifdef CONFIG_SND_CS46XX_NEW_DSP
|
||||
for (i = 0; i < CS46XX_DSP_MODULES; i++) {
|
||||
err = load_firmware(chip, &chip->modules[i], module_names[i]);
|
||||
- if (err < 0) {
|
||||
- snd_printk(KERN_ERR "firmware load error [%s]\n",
|
||||
- module_names[i]);
|
||||
+ if (err < 0)
|
||||
return err;
|
||||
- }
|
||||
err = cs46xx_dsp_load_module(chip, chip->modules[i]);
|
||||
if (err < 0) {
|
||||
snd_printk(KERN_ERR "image download error [%s]\n",
|
||||
|
|
|
@ -1,37 +0,0 @@
|
|||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Date: Sat, 14 Dec 2013 17:05:45 +0000
|
||||
Subject: firmware_class: Fix read size check
|
||||
|
||||
We expect to read firmware blobs with a single call to kernel_read(),
|
||||
which returns int. Therefore the size must be within the range of
|
||||
int, not long.
|
||||
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
---
|
||||
--- a/drivers/base/firmware_class.c
|
||||
+++ b/drivers/base/firmware_class.c
|
||||
@@ -270,21 +270,21 @@ module_param_string(path, fw_path_para,
|
||||
MODULE_PARM_DESC(path, "customized firmware image search path with a higher priority than default path");
|
||||
|
||||
/* Don't inline this: 'struct kstat' is biggish */
|
||||
-static noinline_for_stack long fw_file_size(struct file *file)
|
||||
+static noinline_for_stack int fw_file_size(struct file *file)
|
||||
{
|
||||
struct kstat st;
|
||||
if (vfs_getattr(&file->f_path, &st))
|
||||
return -1;
|
||||
if (!S_ISREG(st.mode))
|
||||
return -1;
|
||||
- if (st.size != (long)st.size)
|
||||
+ if (st.size != (int)st.size)
|
||||
return -1;
|
||||
return st.size;
|
||||
}
|
||||
|
||||
static int fw_read_file_contents(struct file *file, struct firmware_buf *fw_buf)
|
||||
{
|
||||
- long size;
|
||||
+ int size;
|
||||
char *buf;
|
||||
int rc;
|
||||
|
|
@ -20,7 +20,7 @@ This does not cover the case where we fall back to a user-mode helper
|
|||
---
|
||||
--- a/drivers/base/firmware_class.c
|
||||
+++ b/drivers/base/firmware_class.c
|
||||
@@ -334,17 +334,20 @@ static int fw_get_filesystem_firmware(st
|
||||
@@ -344,17 +344,20 @@ static int fw_get_filesystem_firmware(st
|
||||
}
|
||||
rc = fw_read_file_contents(file, buf);
|
||||
fput(file);
|
||||
|
@ -46,7 +46,7 @@ This does not cover the case where we fall back to a user-mode helper
|
|||
mutex_lock(&fw_lock);
|
||||
set_bit(FW_STATUS_DONE, &buf->status);
|
||||
complete_all(&buf->completion);
|
||||
@@ -997,7 +1000,8 @@ _request_firmware_prepare(struct firmwar
|
||||
@@ -1007,7 +1010,8 @@ _request_firmware_prepare(struct firmwar
|
||||
}
|
||||
|
||||
if (fw_get_builtin_firmware(firmware, name)) {
|
||||
|
@ -56,8 +56,8 @@ This does not cover the case where we fall back to a user-mode helper
|
|||
return 0; /* assigned */
|
||||
}
|
||||
|
||||
@@ -1079,7 +1083,7 @@ _request_firmware(const struct firmware
|
||||
if (nowait) {
|
||||
@@ -1090,7 +1094,7 @@ _request_firmware(const struct firmware
|
||||
if (opt_flags & FW_OPT_NOWAIT) {
|
||||
timeout = usermodehelper_read_lock_wait(timeout);
|
||||
if (!timeout) {
|
||||
- dev_dbg(device, "firmware: %s loading timed out\n",
|
||||
|
|
|
@ -17,7 +17,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
---
|
||||
--- a/drivers/base/firmware_class.c
|
||||
+++ b/drivers/base/firmware_class.c
|
||||
@@ -273,12 +273,15 @@ MODULE_PARM_DESC(path, "customized firmw
|
||||
@@ -283,12 +283,15 @@ MODULE_PARM_DESC(path, "customized firmw
|
||||
static noinline_for_stack int fw_file_size(struct file *file)
|
||||
{
|
||||
struct kstat st;
|
||||
|
@ -37,7 +37,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
return st.size;
|
||||
}
|
||||
|
||||
@@ -289,14 +292,16 @@ static int fw_read_file_contents(struct
|
||||
@@ -299,14 +302,16 @@ static int fw_read_file_contents(struct
|
||||
int rc;
|
||||
|
||||
size = fw_file_size(file);
|
||||
|
@ -56,7 +56,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
rc = -EIO;
|
||||
vfree(buf);
|
||||
return rc;
|
||||
@@ -323,8 +328,10 @@ static int fw_get_filesystem_firmware(st
|
||||
@@ -333,8 +338,10 @@ static int fw_get_filesystem_firmware(st
|
||||
snprintf(path, PATH_MAX, "%s/%s", fw_path[i], buf->fw_id);
|
||||
|
||||
file = filp_open(path, O_RDONLY, 0);
|
||||
|
@ -68,13 +68,13 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
rc = fw_read_file_contents(file, buf);
|
||||
fput(file);
|
||||
if (rc)
|
||||
@@ -940,13 +947,6 @@ static void kill_requests_without_uevent
|
||||
@@ -950,13 +957,6 @@ static void kill_requests_without_uevent
|
||||
#endif
|
||||
|
||||
#else /* CONFIG_FW_LOADER_USER_HELPER */
|
||||
-static inline int
|
||||
-fw_load_from_user_helper(struct firmware *firmware, const char *name,
|
||||
- struct device *device, bool uevent, bool nowait,
|
||||
- struct device *device, unsigned int opt_flags,
|
||||
- long timeout)
|
||||
-{
|
||||
- return -ENOENT;
|
||||
|
@ -82,19 +82,19 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
|
||||
/* No abort during direct loading */
|
||||
#define is_fw_load_aborted(buf) false
|
||||
@@ -1094,6 +1094,7 @@ _request_firmware(const struct firmware
|
||||
@@ -1105,6 +1105,7 @@ _request_firmware(const struct firmware
|
||||
}
|
||||
|
||||
ret = fw_get_filesystem_firmware(device, fw->priv);
|
||||
+#ifdef CONFIG_FW_LOADER_USER_HELPER
|
||||
if (ret) {
|
||||
dev_warn(device, "Direct firmware load failed with error %d\n",
|
||||
ret);
|
||||
@@ -1101,6 +1102,7 @@ _request_firmware(const struct firmware
|
||||
ret = fw_load_from_user_helper(fw, name, device,
|
||||
uevent, nowait, timeout);
|
||||
if (opt_flags & FW_OPT_FALLBACK) {
|
||||
dev_warn(device,
|
||||
@@ -1115,6 +1116,7 @@ _request_firmware(const struct firmware
|
||||
opt_flags, timeout);
|
||||
}
|
||||
}
|
||||
+#endif
|
||||
|
||||
/* don't cache firmware handled without uevent */
|
||||
if (!ret)
|
||||
ret = assign_firmware_buf(fw, device, opt_flags);
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
From: Baruch Siach <baruch@tkos.co.il>
|
||||
Date: Mon, 30 Dec 2013 10:31:19 +0200
|
||||
Subject: i2c: designware: remove HAVE_CLK build dependecy
|
||||
Origin: https://git.kernel.org/linus/7ae532e9976e41364bbfa7aaf455c9f1fc5f25e7
|
||||
|
||||
Since 93abe8e4 (clk: add non CONFIG_HAVE_CLK routines) code using clk.h
|
||||
like this platform driver need not depend on HAVE_CLK. Also, remove a
|
||||
redundant clk.h include from core driver.
|
||||
|
||||
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
|
||||
---
|
||||
drivers/i2c/busses/Kconfig | 1 -
|
||||
drivers/i2c/busses/i2c-designware-core.c | 1 -
|
||||
2 files changed, 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
|
||||
index 5687b5c..98a3f1f 100644
|
||||
--- a/drivers/i2c/busses/Kconfig
|
||||
+++ b/drivers/i2c/busses/Kconfig
|
||||
@@ -412,7 +412,6 @@ config I2C_DESIGNWARE_CORE
|
||||
|
||||
config I2C_DESIGNWARE_PLATFORM
|
||||
tristate "Synopsys DesignWare Platform"
|
||||
- depends on HAVE_CLK
|
||||
select I2C_DESIGNWARE_CORE
|
||||
help
|
||||
If you say yes to this option, support will be included for the
|
||||
diff --git a/drivers/i2c/busses/i2c-designware-core.c b/drivers/i2c/busses/i2c-designware-core.c
|
||||
index e89e3e2..14c4b30 100644
|
||||
--- a/drivers/i2c/busses/i2c-designware-core.c
|
||||
+++ b/drivers/i2c/busses/i2c-designware-core.c
|
||||
@@ -26,7 +26,6 @@
|
||||
*
|
||||
*/
|
||||
#include <linux/export.h>
|
||||
-#include <linux/clk.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/i2c.h>
|
|
@ -1,82 +0,0 @@
|
|||
From: Stanislaw Gruszka <stf_xl@wp.pl>
|
||||
Date: Mon, 10 Feb 2014 22:38:28 +0100
|
||||
Subject: rtl8187: fix regression on MIPS without coherent DMA
|
||||
Origin: https://git.kernel.org/linus/b6213e413a4e0c66548153516b074df14f9d08e0
|
||||
Bug: https://bugzilla.kernel.org/show_bug.cgi?id=54391
|
||||
Bug-Debian: http://bugs.debian.org/739978
|
||||
|
||||
This patch fixes regression caused by commit a16dad77634 "MIPS: Fix
|
||||
potencial corruption". That commit fixes one corruption scenario in
|
||||
cost of adding another one, which actually start to cause crashes
|
||||
on Yeeloong laptop when rtl8187 driver is used.
|
||||
|
||||
For correct DMA read operation on machines without DMA coherence, kernel
|
||||
have to invalidate cache, such it will refill later with new data that
|
||||
device wrote to memory, when that data is needed to process. We can only
|
||||
invalidate full cache line. Hence when cache line includes both dma
|
||||
buffer and some other data (written in cache, but not yet in main
|
||||
memory), the other data can not hit memory due to invalidation. That
|
||||
happen on rtl8187 where struct rtl8187_priv fields are located just
|
||||
before and after small buffers that are passed to USB layer and DMA
|
||||
is performed on them.
|
||||
|
||||
To fix the problem we align buffers and reserve space after them to make
|
||||
them match cache line.
|
||||
|
||||
This patch does not resolve all possible MIPS problems entirely, for
|
||||
that we have to assure that we always map cache aligned buffers for DMA,
|
||||
what can be complex or even not possible. But patch fixes visible and
|
||||
reproducible regression and seems other possible corruptions do not
|
||||
happen in practice, since Yeeloong laptop works stable without rtl8187
|
||||
driver.
|
||||
|
||||
Bug report:
|
||||
https://bugzilla.kernel.org/show_bug.cgi?id=54391
|
||||
|
||||
Reported-by: Petr Pisar <petr.pisar@atlas.cz>
|
||||
Bisected-by: Tom Li <biergaizi2009@gmail.com>
|
||||
Reported-and-tested-by: Tom Li <biergaizi2009@gmail.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
|
||||
Acked-by: Larry Finger <Larry.Finger@lwfinger.next>
|
||||
Acked-by: Hin-Tak Leung <htl10@users.sourceforge.net>
|
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
||||
---
|
||||
drivers/net/wireless/rtl818x/rtl8187/rtl8187.h | 10 ++++++++--
|
||||
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/rtl818x/rtl8187/rtl8187.h b/drivers/net/wireless/rtl818x/rtl8187/rtl8187.h
|
||||
index 56aee06..a6ad79f 100644
|
||||
--- a/drivers/net/wireless/rtl818x/rtl8187/rtl8187.h
|
||||
+++ b/drivers/net/wireless/rtl818x/rtl8187/rtl8187.h
|
||||
@@ -15,6 +15,8 @@
|
||||
#ifndef RTL8187_H
|
||||
#define RTL8187_H
|
||||
|
||||
+#include <linux/cache.h>
|
||||
+
|
||||
#include "rtl818x.h"
|
||||
#include "leds.h"
|
||||
|
||||
@@ -139,7 +141,10 @@ struct rtl8187_priv {
|
||||
u8 aifsn[4];
|
||||
u8 rfkill_mask;
|
||||
struct {
|
||||
- __le64 buf;
|
||||
+ union {
|
||||
+ __le64 buf;
|
||||
+ u8 dummy1[L1_CACHE_BYTES];
|
||||
+ } ____cacheline_aligned;
|
||||
struct sk_buff_head queue;
|
||||
} b_tx_status; /* This queue is used by both -b and non-b devices */
|
||||
struct mutex io_mutex;
|
||||
@@ -147,7 +152,8 @@ struct rtl8187_priv {
|
||||
u8 bits8;
|
||||
__le16 bits16;
|
||||
__le32 bits32;
|
||||
- } *io_dmabuf;
|
||||
+ u8 dummy2[L1_CACHE_BYTES];
|
||||
+ } *io_dmabuf ____cacheline_aligned;
|
||||
bool rfkill_off;
|
||||
u16 seqno;
|
||||
};
|
|
@ -1,25 +0,0 @@
|
|||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Date: Sun, 29 Dec 2013 23:20:30 +0100
|
||||
Subject: staging: lustre: Make LUSTRE_LLITE_LLOOP tristate
|
||||
Forwarded: http://mid.gmane.org/1388356095.2900.34.camel@deadeye.wl.decadent.org.uk
|
||||
|
||||
There seems to be no reason why it can't be a module; in fact that is
|
||||
currently supposed to be the default.
|
||||
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
---
|
||||
drivers/staging/lustre/lustre/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/lustre/lustre/Kconfig b/drivers/staging/lustre/lustre/Kconfig
|
||||
index 2156a44..faa01fa 100644
|
||||
--- a/drivers/staging/lustre/lustre/Kconfig
|
||||
+++ b/drivers/staging/lustre/lustre/Kconfig
|
||||
@@ -55,6 +55,6 @@ config LUSTRE_TRANSLATE_ERRNOS
|
||||
default y
|
||||
|
||||
config LUSTRE_LLITE_LLOOP
|
||||
- bool "Lustre virtual block device"
|
||||
+ tristate "Lustre virtual block device"
|
||||
depends on LUSTRE_FS && BLOCK
|
||||
default m
|
|
@ -22,9 +22,9 @@ Signed-off-by: Arnaud Patard <arnaud.patard@rtp-net.org>
|
|||
config USB_MUSB_DAVINCI
|
||||
tristate "DaVinci"
|
||||
depends on ARCH_DAVINCI_DMx
|
||||
@@ -93,8 +90,6 @@ config USB_MUSB_BLACKFIN
|
||||
config USB_MUSB_UX500
|
||||
tristate "Ux500 platforms"
|
||||
@@ -99,8 +96,6 @@ config USB_MUSB_JZ4740
|
||||
depends on USB_MUSB_GADGET
|
||||
depends on USB_OTG_BLACKLIST_HUB
|
||||
|
||||
-endchoice
|
||||
-
|
||||
|
|
|
@ -28,6 +28,3 @@ rm drivers/staging/wlags49_h2/sta_*.c
|
|||
# These include apparently obfuscated code
|
||||
rm drivers/video/nvidia/
|
||||
rm drivers/video/riva/
|
||||
|
||||
rm sound/pci/cs46xx/cs46xx_image.h
|
||||
rm sound/pci/cs46xx/imgs
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
From: Bastian Blank <waldi@debian.org>
|
||||
Subject: Drop files from sound/pci
|
||||
Date: Sat, 15 Sep 2007 20:18:32 +0100
|
||||
Forwarded: not-needed
|
||||
|
||||
--- a/sound/pci/Kconfig
|
||||
+++ b/sound/pci/Kconfig
|
||||
@@ -229,4 +229,5 @@ config SND_CS46XX
|
||||
config SND_CS46XX
|
||||
tristate "Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x"
|
||||
+ depends on BROKEN
|
||||
select SND_RAWMIDI
|
||||
select SND_AC97_CODEC
|
|
@ -19,7 +19,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
|
||||
--- a/Documentation/kernel-parameters.txt
|
||||
+++ b/Documentation/kernel-parameters.txt
|
||||
@@ -513,8 +513,8 @@ bytes respectively. Such letter suffixes
|
||||
@@ -532,8 +532,8 @@ bytes respectively. Such letter suffixes
|
||||
ccw_timeout_log [S390]
|
||||
See Documentation/s390/CommonIO for details.
|
||||
|
||||
|
@ -27,12 +27,12 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
- Format: {name of the controller(s) to disable}
|
||||
+ cgroup_disable= [KNL] Disable/enable a particular controller
|
||||
+ cgroup_enable= Format: {name of the controller(s) to disable/enable}
|
||||
{Currently supported controllers - "memory"}
|
||||
|
||||
checkreqprot [SELINUX] Set initial checkreqprot flag value.
|
||||
The effects of cgroup_disable=foo are:
|
||||
- foo isn't auto-mounted if you mount all cgroups in
|
||||
a single hierarchy
|
||||
--- a/init/Kconfig
|
||||
+++ b/init/Kconfig
|
||||
@@ -934,6 +934,14 @@ config MEMCG
|
||||
@@ -940,6 +940,14 @@ config MEMCG
|
||||
This config option also selects MM_OWNER config option, which
|
||||
could in turn add some fork/exit overhead.
|
||||
|
||||
|
@ -49,7 +49,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
depends on MEMCG && SWAP
|
||||
--- a/kernel/cgroup.c
|
||||
+++ b/kernel/cgroup.c
|
||||
@@ -5442,7 +5442,7 @@ static void cgroup_release_agent(struct
|
||||
@@ -5222,7 +5222,7 @@ static void cgroup_release_agent(struct
|
||||
mutex_unlock(&cgroup_mutex);
|
||||
}
|
||||
|
||||
|
@ -58,7 +58,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
{
|
||||
struct cgroup_subsys *ss;
|
||||
char *token;
|
||||
@@ -5458,17 +5458,29 @@ static int __init cgroup_disable(char *s
|
||||
@@ -5238,17 +5238,29 @@ static int __init cgroup_disable(char *s
|
||||
*/
|
||||
for_each_builtin_subsys(ss, i) {
|
||||
if (!strcmp(token, ss->name)) {
|
||||
|
@ -93,7 +93,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
* @dentry: directory dentry of interest
|
||||
--- a/mm/memcontrol.c
|
||||
+++ b/mm/memcontrol.c
|
||||
@@ -7002,6 +7002,9 @@ static void mem_cgroup_bind(struct cgrou
|
||||
@@ -7266,6 +7266,9 @@ static void mem_cgroup_bind(struct cgrou
|
||||
|
||||
struct cgroup_subsys mem_cgroup_subsys = {
|
||||
.name = "memory",
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Date: Mon, 30 Sep 2013 01:51:23 +0100
|
||||
Subject: DocBook: Make mandocs parallel-safe
|
||||
Forwarded: http://mid.gmane.org/1380502603.14493.9.camel@deadeye.wl.decadent.org.uk
|
||||
|
||||
Two concurrent calls to cmd_db2man may attempt to compress manual
|
||||
pages generated by each other. gzip can then fail due to an input
|
||||
file having already been compressed and removed.
|
||||
|
||||
Move the gzip command to the top-level mandocs target.
|
||||
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
Cc: Bastian Blank <waldi@debian.org>
|
||||
---
|
||||
Documentation/DocBook/Makefile | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
|
||||
index bc3d9f8..b07b5f3 100644
|
||||
--- a/Documentation/DocBook/Makefile
|
||||
+++ b/Documentation/DocBook/Makefile
|
||||
@@ -54,6 +54,7 @@ htmldocs: $(HTML)
|
||||
|
||||
MAN := $(patsubst %.xml, %.9, $(BOOKS))
|
||||
mandocs: $(MAN)
|
||||
+ $(if $(wildcard $(obj)/man/*.9),gzip -f $(obj)/man/*.9)
|
||||
|
||||
installmandocs: mandocs
|
||||
mkdir -p /usr/local/man/man9/
|
||||
@@ -159,7 +160,7 @@ quiet_cmd_db2html = HTML $@
|
||||
cp $(PNG-$(basename $(notdir $@))) $(patsubst %.html,%,$@); fi
|
||||
|
||||
quiet_cmd_db2man = MAN $@
|
||||
- cmd_db2man = if grep -q refentry $<; then xmlto man $(XMLTOFLAGS) -o $(obj)/man $< ; gzip -f $(obj)/man/*.9; fi
|
||||
+ cmd_db2man = if grep -q refentry $<; then xmlto man $(XMLTOFLAGS) -o $(obj)/man $< ; fi
|
||||
%.9 : %.xml
|
||||
@(which xmlto > /dev/null 2>&1) || \
|
||||
(echo "*** You need to install xmlto ***"; \
|
|
@ -1,131 +0,0 @@
|
|||
From: Roland Scheidegger <rscheidegger_lists@hispeed.ch>
|
||||
Date: Sat, 2 Nov 2013 16:49:32 -0300
|
||||
Subject: [media] az6007: support Technisat Cablestar Combo HDCI (minus remote)
|
||||
Origin: http://git.linuxtv.org/media_tree.git/commit/431cb350187c6bf1ed083622d633418a298a7216
|
||||
|
||||
This is similar to the Terratec H7. It works with the same az6007 firmware as
|
||||
the former, however the drx-k firmware of the H7 will NOT work. Hence use
|
||||
a different firmware name. The firmware does not need to exist as the one in
|
||||
the eeprom is just fine as long as the h7 one doesn't get loaded, but maybe
|
||||
some day someone wants to load it (the one from the h5 would work too).
|
||||
Also since the config entry is now different anyway disable support for rc.
|
||||
AFAIK the Technisat remote (TS35) is RC5 and the code (which a code comment
|
||||
claims doesn't work anyway) only would handle NEC hence it's pointless creating
|
||||
a device and polling it if we already know it can't work.
|
||||
CI is untested.
|
||||
|
||||
Originally based on idea found on
|
||||
http://www.linuxtv.org/wiki/index.php/TechniSat_CableStar_Combo_HD_CI claiming
|
||||
only id needs to be added (but failed to mention it only worked because the
|
||||
driver couldn't find the h7 drx-k firmware...).
|
||||
|
||||
Signed-off-by: Roland Scheidegger <rscheidegger_lists@hispeed.ch>
|
||||
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
|
||||
---
|
||||
drivers/media/dvb-core/dvb-usb-ids.h | 1 +
|
||||
drivers/media/usb/dvb-usb-v2/az6007.c | 59 +++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 60 insertions(+)
|
||||
|
||||
diff --git a/drivers/media/dvb-core/dvb-usb-ids.h b/drivers/media/dvb-core/dvb-usb-ids.h
|
||||
index 419a2d6..4a53454 100644
|
||||
--- a/drivers/media/dvb-core/dvb-usb-ids.h
|
||||
+++ b/drivers/media/dvb-core/dvb-usb-ids.h
|
||||
@@ -365,6 +365,7 @@
|
||||
#define USB_PID_TERRATEC_DVBS2CI_V2 0x10ac
|
||||
#define USB_PID_TECHNISAT_USB2_HDCI_V1 0x0001
|
||||
#define USB_PID_TECHNISAT_USB2_HDCI_V2 0x0002
|
||||
+#define USB_PID_TECHNISAT_USB2_CABLESTAR_HDCI 0x0003
|
||||
#define USB_PID_TECHNISAT_AIRSTAR_TELESTICK_2 0x0004
|
||||
#define USB_PID_TECHNISAT_USB2_DVB_S2 0x0500
|
||||
#define USB_PID_CPYTO_REDI_PC50A 0xa803
|
||||
diff --git a/drivers/media/usb/dvb-usb-v2/az6007.c b/drivers/media/usb/dvb-usb-v2/az6007.c
|
||||
index 44c64ef3..c1051c3 100644
|
||||
--- a/drivers/media/usb/dvb-usb-v2/az6007.c
|
||||
+++ b/drivers/media/usb/dvb-usb-v2/az6007.c
|
||||
@@ -68,6 +68,19 @@ static struct drxk_config terratec_h7_drxk = {
|
||||
.microcode_name = "dvb-usb-terratec-h7-drxk.fw",
|
||||
};
|
||||
|
||||
+static struct drxk_config cablestar_hdci_drxk = {
|
||||
+ .adr = 0x29,
|
||||
+ .parallel_ts = true,
|
||||
+ .dynamic_clk = true,
|
||||
+ .single_master = true,
|
||||
+ .enable_merr_cfg = true,
|
||||
+ .no_i2c_bridge = false,
|
||||
+ .chunk_size = 64,
|
||||
+ .mpeg_out_clk_strength = 0x02,
|
||||
+ .qam_demod_parameter_count = 2,
|
||||
+ .microcode_name = "dvb-usb-technisat-cablestar-hdci-drxk.fw",
|
||||
+};
|
||||
+
|
||||
static int drxk_gate_ctrl(struct dvb_frontend *fe, int enable)
|
||||
{
|
||||
struct az6007_device_state *st = fe_to_priv(fe);
|
||||
@@ -630,6 +643,27 @@ static int az6007_frontend_attach(struct dvb_usb_adapter *adap)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int az6007_cablestar_hdci_frontend_attach(struct dvb_usb_adapter *adap)
|
||||
+{
|
||||
+ struct az6007_device_state *st = adap_to_priv(adap);
|
||||
+ struct dvb_usb_device *d = adap_to_d(adap);
|
||||
+
|
||||
+ pr_debug("attaching demod drxk\n");
|
||||
+
|
||||
+ adap->fe[0] = dvb_attach(drxk_attach, &cablestar_hdci_drxk,
|
||||
+ &d->i2c_adap);
|
||||
+ if (!adap->fe[0])
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ adap->fe[0]->sec_priv = adap;
|
||||
+ st->gate_ctrl = adap->fe[0]->ops.i2c_gate_ctrl;
|
||||
+ adap->fe[0]->ops.i2c_gate_ctrl = drxk_gate_ctrl;
|
||||
+
|
||||
+ az6007_ci_init(adap);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int az6007_tuner_attach(struct dvb_usb_adapter *adap)
|
||||
{
|
||||
struct dvb_usb_device *d = adap_to_d(adap);
|
||||
@@ -868,6 +902,29 @@ static struct dvb_usb_device_properties az6007_props = {
|
||||
}
|
||||
};
|
||||
|
||||
+static struct dvb_usb_device_properties az6007_cablestar_hdci_props = {
|
||||
+ .driver_name = KBUILD_MODNAME,
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .firmware = AZ6007_FIRMWARE,
|
||||
+
|
||||
+ .adapter_nr = adapter_nr,
|
||||
+ .size_of_priv = sizeof(struct az6007_device_state),
|
||||
+ .i2c_algo = &az6007_i2c_algo,
|
||||
+ .tuner_attach = az6007_tuner_attach,
|
||||
+ .frontend_attach = az6007_cablestar_hdci_frontend_attach,
|
||||
+ .streaming_ctrl = az6007_streaming_ctrl,
|
||||
+/* ditch get_rc_config as it can't work (TS35 remote, I believe it's rc5) */
|
||||
+ .get_rc_config = NULL,
|
||||
+ .read_mac_address = az6007_read_mac_addr,
|
||||
+ .download_firmware = az6007_download_firmware,
|
||||
+ .identify_state = az6007_identify_state,
|
||||
+ .power_ctrl = az6007_power_ctrl,
|
||||
+ .num_adapters = 1,
|
||||
+ .adapter = {
|
||||
+ { .stream = DVB_USB_STREAM_BULK(0x02, 10, 4096), }
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
static struct usb_device_id az6007_usb_table[] = {
|
||||
{DVB_USB_DEVICE(USB_VID_AZUREWAVE, USB_PID_AZUREWAVE_6007,
|
||||
&az6007_props, "Azurewave 6007", RC_MAP_EMPTY)},
|
||||
@@ -875,6 +932,8 @@ static struct usb_device_id az6007_usb_table[] = {
|
||||
&az6007_props, "Terratec H7", RC_MAP_NEC_TERRATEC_CINERGY_XS)},
|
||||
{DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_H7_2,
|
||||
&az6007_props, "Terratec H7", RC_MAP_NEC_TERRATEC_CINERGY_XS)},
|
||||
+ {DVB_USB_DEVICE(USB_VID_TECHNISAT, USB_PID_TECHNISAT_USB2_CABLESTAR_HDCI,
|
||||
+ &az6007_cablestar_hdci_props, "Technisat CableStar Combo HD CI", RC_MAP_EMPTY)},
|
||||
{0},
|
||||
};
|
||||
|
|
@ -1,174 +0,0 @@
|
|||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Subject: cs46xx: Use request_firmware() for old DSP code
|
||||
Forwarded: no
|
||||
|
||||
Based on work by Kalle Olavi Niemitalo <kon@iki.fi>.
|
||||
|
||||
Tested by Antonio Ospite <ospite@studenti.unina.it>.
|
||||
Unfortunately we cannot currently distribute the firmware.
|
||||
|
||||
diff --git a/sound/pci/Kconfig b/sound/pci/Kconfig
|
||||
index 17e03b9..124b3a0 100644
|
||||
--- a/sound/pci/Kconfig
|
||||
+++ b/sound/pci/Kconfig
|
||||
@@ -229,7 +229,7 @@ config SND_CS4281
|
||||
|
||||
config SND_CS46XX
|
||||
tristate "Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x"
|
||||
- depends on BROKEN
|
||||
+ select FW_LOADER
|
||||
select SND_RAWMIDI
|
||||
select SND_AC97_CODEC
|
||||
help
|
||||
@@ -241,6 +241,7 @@ config SND_CS46XX
|
||||
|
||||
config SND_CS46XX_NEW_DSP
|
||||
bool "Cirrus Logic (Sound Fusion) New DSP support"
|
||||
+ depends on BROKEN
|
||||
depends on SND_CS46XX
|
||||
default y
|
||||
help
|
||||
diff --git a/sound/pci/cs46xx/cs46xx_lib.c b/sound/pci/cs46xx/cs46xx_lib.c
|
||||
index 1be96ea..b12b930 100644
|
||||
--- a/sound/pci/cs46xx/cs46xx_lib.c
|
||||
+++ b/sound/pci/cs46xx/cs46xx_lib.c
|
||||
@@ -54,6 +54,8 @@
|
||||
#include <linux/gameport.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/export.h>
|
||||
+#include <linux/firmware.h>
|
||||
+#include <linux/module.h>
|
||||
|
||||
|
||||
#include <sound/core.h>
|
||||
@@ -308,7 +309,7 @@ static void snd_cs46xx_ac97_write(struct snd_ac97 *ac97,
|
||||
*/
|
||||
|
||||
int snd_cs46xx_download(struct snd_cs46xx *chip,
|
||||
- u32 *src,
|
||||
+ const __le32 *src,
|
||||
unsigned long offset,
|
||||
unsigned long len)
|
||||
{
|
||||
@@ -321,9 +322,9 @@ int snd_cs46xx_download(struct snd_cs46xx *chip,
|
||||
dst = chip->region.idx[bank+1].remap_addr + offset;
|
||||
len /= sizeof(u32);
|
||||
|
||||
- /* writel already converts 32-bit value to right endianess */
|
||||
while (len-- > 0) {
|
||||
- writel(*src++, dst);
|
||||
+ __raw_writel((__force u32)*src++, dst);
|
||||
+ mmiowb();
|
||||
dst += sizeof(u32);
|
||||
}
|
||||
return 0;
|
||||
@@ -360,23 +361,77 @@ int snd_cs46xx_clear_BA1(struct snd_cs46xx *chip,
|
||||
|
||||
#else /* old DSP image */
|
||||
|
||||
-#include "cs46xx_image.h"
|
||||
+struct cs46xx_old_image {
|
||||
+ __le32 size[BA1_MEMORY_COUNT];
|
||||
+ __le32 data[0];
|
||||
+};
|
||||
|
||||
-int snd_cs46xx_download_image(struct snd_cs46xx *chip)
|
||||
+static int snd_cs46xx_check_image_size(const struct firmware *firmware)
|
||||
{
|
||||
- int idx, err;
|
||||
- unsigned long offset = 0;
|
||||
+ const struct cs46xx_old_image *image =
|
||||
+ (const struct cs46xx_old_image *)firmware->data;
|
||||
+ size_t offset = sizeof(*image);
|
||||
+ int idx;
|
||||
+
|
||||
+ if (firmware->size < offset) {
|
||||
+ snd_printk(KERN_ERR "cs46xx: firmware too small\n");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
|
||||
for (idx = 0; idx < BA1_MEMORY_COUNT; idx++) {
|
||||
- if ((err = snd_cs46xx_download(chip,
|
||||
- &BA1Struct.map[offset],
|
||||
- BA1Struct.memory[idx].offset,
|
||||
- BA1Struct.memory[idx].size)) < 0)
|
||||
- return err;
|
||||
- offset += BA1Struct.memory[idx].size >> 2;
|
||||
- }
|
||||
+ size_t size = le32_to_cpu(image->size[idx]);
|
||||
+
|
||||
+ if (size % sizeof(u32)) {
|
||||
+ snd_printk(KERN_ERR "cs46xx: firmware hunk misaligned\n");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ if (size > BA1_DWORD_SIZE * sizeof(u32)) {
|
||||
+ snd_printk(KERN_ERR "cs46xx: firmware hunk out of range\n");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ offset += size;
|
||||
+ }
|
||||
+
|
||||
+ if (firmware->size != offset) {
|
||||
+ snd_printk(KERN_ERR "cs46xx: firmware size mismatch\n");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
+
|
||||
+static int snd_cs46xx_download_image(struct snd_cs46xx *chip)
|
||||
+{
|
||||
+ int idx, err;
|
||||
+ const struct firmware *firmware = NULL;
|
||||
+ const struct cs46xx_old_image *image;
|
||||
+ const __le32 *data;
|
||||
+
|
||||
+ err = request_firmware(&firmware, "cs46xx/cs46xx-old.fw",
|
||||
+ &chip->pci->dev);
|
||||
+ if (err < 0) {
|
||||
+ snd_printk(KERN_ERR "cs46xx: no firmware\n");
|
||||
+ return err;
|
||||
+ }
|
||||
+
|
||||
+ err = snd_cs46xx_check_image_size(firmware);
|
||||
+ if (err < 0)
|
||||
+ goto end;
|
||||
+ image = (const struct cs46xx_old_image *)firmware->data;
|
||||
+ data = image->data;
|
||||
+
|
||||
+ for (idx = 0; idx < BA1_MEMORY_COUNT; idx++) {
|
||||
+ size_t size = le32_to_cpu(image->size[idx]);
|
||||
+
|
||||
+ err = snd_cs46xx_download(chip, data, idx << 16, size);
|
||||
+ if (err < 0)
|
||||
+ goto end;
|
||||
+ data += size / sizeof(u32);
|
||||
+ }
|
||||
+end:
|
||||
+ release_firmware(firmware);
|
||||
+ return err;
|
||||
+}
|
||||
#endif /* CONFIG_SND_CS46XX_NEW_DSP */
|
||||
|
||||
/*
|
||||
@@ -3874,3 +3929,5 @@ int __devinit snd_cs46xx_create(struct snd_card *card,
|
||||
*rchip = chip;
|
||||
return 0;
|
||||
}
|
||||
+
|
||||
+MODULE_FIRMWARE("cs46xx/cs46xx-old.fw");
|
||||
diff --git a/sound/pci/cs46xx/cs46xx_lib.h b/sound/pci/cs46xx/cs46xx_lib.h
|
||||
index 4eb55aa..85babb5 100644
|
||||
--- a/sound/pci/cs46xx/cs46xx_lib.h
|
||||
+++ b/sound/pci/cs46xx/cs46xx_lib.h
|
||||
@@ -103,8 +103,8 @@ int cs46xx_dsp_proc_done (struct snd_cs46xx *chip);
|
||||
#define cs46xx_dsp_proc_done(chip)
|
||||
#endif
|
||||
int cs46xx_dsp_scb_and_task_init (struct snd_cs46xx *chip);
|
||||
-int snd_cs46xx_download (struct snd_cs46xx *chip, u32 *src, unsigned long offset,
|
||||
- unsigned long len);
|
||||
+int snd_cs46xx_download(struct snd_cs46xx *chip, const __le32 *src, unsigned long offset,
|
||||
+ unsigned long len);
|
||||
int snd_cs46xx_clear_BA1(struct snd_cs46xx *chip, unsigned long offset, unsigned long len);
|
||||
int cs46xx_dsp_enable_spdif_out (struct snd_cs46xx *chip);
|
||||
int cs46xx_dsp_enable_spdif_hw (struct snd_cs46xx *chip);
|
|
@ -5,14 +5,15 @@ Origin: https://git.kernel.org/cgit/linux/kernel/git/konrad/xen.git/commit?id=db
|
|||
|
||||
Signed-off-by: Ian Campbell <ijc@hellion.org.uk>
|
||||
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||
[bwh: Forward-port to 3.14: adjust filename]
|
||||
---
|
||||
arch/x86/kernel/microcode_xen.c | 8 ++++++--
|
||||
arch/x86/kernel/cpu/microcode/xen.c | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/kernel/microcode_xen.c b/arch/x86/kernel/microcode_xen.c
|
||||
diff --git a/arch/x86/kernel/cpu/microcode/xen.c b/arch/x86/kernel/cpu/microcode/xen.c
|
||||
index 6a73957..9e50566 100644
|
||||
--- a/arch/x86/kernel/microcode_xen.c
|
||||
+++ b/arch/x86/kernel/microcode_xen.c
|
||||
--- a/arch/x86/kernel/cpu/microcode/xen.c
|
||||
+++ b/arch/x86/kernel/cpu/microcode/xen.c
|
||||
@@ -58,7 +58,7 @@ static int xen_microcode_update(int cpu)
|
||||
|
||||
static enum ucode_state xen_request_microcode_fw(int cpu, struct device *device)
|
||||
|
|
|
@ -4,14 +4,15 @@ Subject: microcode_xen: update for changed core API
|
|||
Forwarded: no
|
||||
|
||||
Signed-off-by: Ian Campbell <ijc@hellion.org.uk>
|
||||
[bwh: Forward-port to 3.14: adjust filename]
|
||||
---
|
||||
arch/x86/kernel/microcode_xen.c | 3 ++-
|
||||
arch/x86/kernel/cpu/microcode/xen.c | 3 ++-
|
||||
1 files changed, 2 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/kernel/microcode_xen.c b/arch/x86/kernel/microcode_xen.c
|
||||
diff --git a/arch/x86/kernel/cpu/microcode/xen.c b/arch/x86/kernel/cpu/microcode/xen.c
|
||||
index 9e50566..6b7aa48 100644
|
||||
--- a/arch/x86/kernel/microcode_xen.c
|
||||
+++ b/arch/x86/kernel/microcode_xen.c
|
||||
--- a/arch/x86/kernel/cpu/microcode/xen.c
|
||||
+++ b/arch/x86/kernel/cpu/microcode/xen.c
|
||||
@@ -56,7 +56,8 @@ static int xen_microcode_update(int cpu)
|
||||
return err;
|
||||
}
|
||||
|
|
|
@ -7,15 +7,14 @@ After pulling in this change from your tree, I found the following bug,
|
|||
when checking an enum value, which should be considered before inclusion:
|
||||
|
||||
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||
[bwh: Forward-port to 3.14: adjust filename]
|
||||
---
|
||||
arch/x86/kernel/microcode_xen.c | 2 +-
|
||||
arch/x86/kernel/cpu/microcode/xen.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/x86/kernel/microcode_xen.c b/arch/x86/kernel/microcode_xen.c
|
||||
index 9d2a06b..6a73957 100644
|
||||
--- a/arch/x86/kernel/microcode_xen.c
|
||||
+++ b/arch/x86/kernel/microcode_xen.c
|
||||
@@ -157,7 +157,7 @@ static enum ucode_state xen_request_microcode_user(int cpu,
|
||||
--- a/arch/x86/kernel/cpu/microcode/xen.c
|
||||
+++ b/arch/x86/kernel/cpu/microcode/xen.c
|
||||
@@ -161,7 +161,7 @@ static enum ucode_state xen_request_micr
|
||||
ret = UCODE_OK;
|
||||
|
||||
out:
|
||||
|
|
|
@ -13,19 +13,11 @@ doing anything for cpu "0".
|
|||
|
||||
[ Impact: allow CPU microcode update in Xen dom0 ]
|
||||
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
|
||||
[bwh: Forward-port to 3.14: adjust filenames, context]
|
||||
---
|
||||
|
||||
arch/x86/include/asm/microcode.h | 9 ++
|
||||
arch/x86/kernel/Makefile | 1 +
|
||||
arch/x86/kernel/microcode_core.c | 5 +-
|
||||
arch/x86/kernel/microcode_xen.c | 198 ++++++++++++++++++++++++++++++++++++++
|
||||
arch/x86/xen/Kconfig | 4 +
|
||||
5 files changed, 216 insertions(+), 1 deletion(-)
|
||||
create mode 100644 arch/x86/kernel/microcode_xen.c
|
||||
|
||||
--- a/arch/x86/include/asm/microcode.h
|
||||
+++ b/arch/x86/include/asm/microcode.h
|
||||
@@ -71,4 +71,13 @@ static inline int __init save_microcode_
|
||||
@@ -86,4 +86,13 @@ static inline int __init save_microcode_
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -39,18 +31,18 @@ Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
|
|||
+#endif
|
||||
+
|
||||
#endif /* _ASM_X86_MICROCODE_H */
|
||||
--- a/arch/x86/kernel/Makefile
|
||||
+++ b/arch/x86/kernel/Makefile
|
||||
@@ -95,6 +95,7 @@ obj-$(CONFIG_MICROCODE_INTEL_LIB) += mic
|
||||
microcode-y := microcode_core.o
|
||||
microcode-$(CONFIG_MICROCODE_INTEL) += microcode_intel.o
|
||||
microcode-$(CONFIG_MICROCODE_AMD) += microcode_amd.o
|
||||
+microcode-$(CONFIG_MICROCODE_XEN) += microcode_xen.o
|
||||
obj-$(CONFIG_MICROCODE_AMD_EARLY) += microcode_amd_early.o
|
||||
--- a/arch/x86/kernel/cpu/microcode/Makefile
|
||||
+++ b/arch/x86/kernel/cpu/microcode/Makefile
|
||||
@@ -2,6 +2,7 @@ microcode-y := core.o
|
||||
obj-$(CONFIG_MICROCODE) += microcode.o
|
||||
|
||||
--- a/arch/x86/kernel/microcode_core.c
|
||||
+++ b/arch/x86/kernel/microcode_core.c
|
||||
microcode-$(CONFIG_MICROCODE_INTEL) += intel.o intel_lib.o
|
||||
microcode-$(CONFIG_MICROCODE_AMD) += amd.o
|
||||
+microcode-$(CONFIG_MICROCODE_XEN) += xen.o
|
||||
obj-$(CONFIG_MICROCODE_EARLY) += core_early.o
|
||||
obj-$(CONFIG_MICROCODE_INTEL_EARLY) += intel_early.o
|
||||
obj-$(CONFIG_MICROCODE_AMD_EARLY) += amd_early.o
|
||||
--- a/arch/x86/kernel/cpu/microcode/core.c
|
||||
+++ b/arch/x86/kernel/cpu/microcode/core.c
|
||||
@@ -84,6 +84,7 @@
|
||||
#include <linux/mm.h>
|
||||
#include <linux/syscore_ops.h>
|
||||
|
@ -71,7 +63,7 @@ Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
|
|||
else if (c->x86_vendor == X86_VENDOR_AMD)
|
||||
microcode_ops = init_amd_microcode();
|
||||
--- /dev/null
|
||||
+++ b/arch/x86/kernel/microcode_xen.c
|
||||
+++ b/arch/x86/kernel/cpu/microcode/xen.c
|
||||
@@ -0,0 +1,198 @@
|
||||
+/*
|
||||
+ * Xen microcode update driver
|
||||
|
@ -273,10 +265,11 @@ Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
|
|||
+}
|
||||
--- a/arch/x86/xen/Kconfig
|
||||
+++ b/arch/x86/xen/Kconfig
|
||||
@@ -51,3 +51,6 @@ config XEN_DEBUG_FS
|
||||
Enable statistics output and various tuning options in debugfs.
|
||||
Enabling this option may incur a significant performance overhead.
|
||||
|
||||
@@ -55,3 +55,7 @@ config XEN_PVH
|
||||
bool "Support for running as a PVH guest"
|
||||
depends on X86_64 && XEN && XEN_PVHVM
|
||||
def_bool n
|
||||
+
|
||||
+config MICROCODE_XEN
|
||||
+ def_bool y
|
||||
+ depends on XEN_DOM0 && MICROCODE
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
# Changes to support package build system
|
||||
debian/version.patch
|
||||
debian/kernelvariables.patch
|
||||
features/all/doc-build-parallel.patch
|
||||
debian/gitignore.patch
|
||||
debian/ia64-hardcode-arch-script-output.patch
|
||||
debian/mips-disable-werror.patch
|
||||
|
@ -11,9 +10,7 @@ features/all/Kbuild-kconfig-Verbose-version-of-listnewconfig.patch
|
|||
|
||||
# Fixes/improvements to firmware loading
|
||||
features/all/drivers-media-dvb-usb-af9005-request_firmware.patch
|
||||
features/all/sound-pci-cs46xx-request_firmware.patch
|
||||
debian/iwlwifi-do-not-request-unreleased-firmware.patch
|
||||
bugfix/all/firmware_class-fix-read-size-check.patch
|
||||
bugfix/all/firmware_class-return-specific-errors-from-file-read.patch
|
||||
bugfix/all/firmware_class-log-every-success-and-failure.patch
|
||||
bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch
|
||||
|
@ -74,9 +71,5 @@ features/all/mvsas-Recognise-device-subsystem-9485-9485-as-88SE94.patch
|
|||
bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch
|
||||
debian/add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by-default.patch
|
||||
bugfix/all/disable-some-marvell-phys.patch
|
||||
features/all/media-az6007-support-Technisat-Cablestar-Combo-HDCI-.patch
|
||||
bugfix/all/staging-lustre-Make-LUSTRE_LLITE_LLOOP-tristate.patch
|
||||
bugfix/all/i2c-designware-remove-HAVE_CLK-build-dependecy.patch
|
||||
debian/snd-pcsp-disable-autoload.patch
|
||||
bugfix/all/bluetooth-allocate-static-minor-for-vhci.patch
|
||||
bugfix/all/rtl8187-fix-regression-on-MIPS-without-coherent-DMA.patch
|
||||
|
|
|
@ -7,5 +7,4 @@
|
|||
+ debian/dfsg/video-remove-nvidiafb-and-rivafb.patch
|
||||
+ debian/dfsg/r8192e-remove-firmware-again.patch
|
||||
+ debian/dfsg/firmware-cleanup.patch
|
||||
+ debian/dfsg/sound-pci.patch
|
||||
X debian/dfsg/files-1
|
||||
|
|
Loading…
Reference in New Issue