Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

V4L/DVB (11723): Link firmware to physical device

Use the physical device rather than the i2c adapter as the reference
device when loading firmwares. This will prevent the sysfs name
collision with i2c-dev that has been reported many times.

I may have missed other drivers which need the same fix.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

authored by

Jean Delvare and committed by
Mauro Carvalho Chehab
e9785250 f8eaaf4f

+12 -10
+1 -1
drivers/media/common/tuners/tuner-xc2028.c
··· 272 272 fname = firmware_name; 273 273 274 274 tuner_dbg("Reading firmware %s\n", fname); 275 - rc = request_firmware(&fw, fname, &priv->i2c_props.adap->dev); 275 + rc = request_firmware(&fw, fname, priv->i2c_props.adap->dev.parent); 276 276 if (rc < 0) { 277 277 if (rc == -ENOENT) 278 278 tuner_err("Error: firmware %s not found.\n",
+1 -1
drivers/media/common/tuners/xc5000.c
··· 575 575 XC5000_DEFAULT_FIRMWARE); 576 576 577 577 ret = request_firmware(&fw, XC5000_DEFAULT_FIRMWARE, 578 - &priv->i2c_props.adap->dev); 578 + priv->i2c_props.adap->dev.parent); 579 579 if (ret) { 580 580 printk(KERN_ERR "xc5000: Upload failed. (file not found?)\n"); 581 581 ret = XC_RESULT_RESET_FAILURE;
+1 -1
drivers/media/dvb/frontends/af9013.c
··· 1455 1455 af9013_ops.info.name); 1456 1456 1457 1457 /* request the firmware, this will block and timeout */ 1458 - ret = request_firmware(&fw, fw_file, &state->i2c->dev); 1458 + ret = request_firmware(&fw, fw_file, state->i2c->dev.parent); 1459 1459 if (ret) { 1460 1460 err("did not find the firmware file. (%s) " 1461 1461 "Please see linux/Documentation/dvb/ for more details" \
+1 -1
drivers/media/dvb/frontends/cx24116.c
··· 492 492 printk(KERN_INFO "%s: Waiting for firmware upload (%s)...\n", 493 493 __func__, CX24116_DEFAULT_FIRMWARE); 494 494 ret = request_firmware(&fw, CX24116_DEFAULT_FIRMWARE, 495 - &state->i2c->dev); 495 + state->i2c->dev.parent); 496 496 printk(KERN_INFO "%s: Waiting for firmware upload(2)...\n", 497 497 __func__); 498 498 if (ret) {
+2 -2
drivers/media/dvb/frontends/drx397xD.c
··· 123 123 } 124 124 memset(&fw[ix].data[0], 0, sizeof(fw[0].data)); 125 125 126 - if (request_firmware(&fw[ix].file, fw[ix].name, &s->i2c->dev) != 0) { 126 + rc = request_firmware(&fw[ix].file, fw[ix].name, s->i2c->dev.parent); 127 + if (rc != 0) { 127 128 printk(KERN_ERR "%s: Firmware \"%s\" not available\n", 128 129 mod_name, fw[ix].name); 129 - rc = -ENOENT; 130 130 goto exit_err; 131 131 } 132 132
+4 -2
drivers/media/dvb/frontends/nxt200x.c
··· 879 879 880 880 /* request the firmware, this will block until someone uploads it */ 881 881 printk("nxt2002: Waiting for firmware upload (%s)...\n", NXT2002_DEFAULT_FIRMWARE); 882 - ret = request_firmware(&fw, NXT2002_DEFAULT_FIRMWARE, &state->i2c->dev); 882 + ret = request_firmware(&fw, NXT2002_DEFAULT_FIRMWARE, 883 + state->i2c->dev.parent); 883 884 printk("nxt2002: Waiting for firmware upload(2)...\n"); 884 885 if (ret) { 885 886 printk("nxt2002: No firmware uploaded (timeout or file not found?)\n"); ··· 944 943 945 944 /* request the firmware, this will block until someone uploads it */ 946 945 printk("nxt2004: Waiting for firmware upload (%s)...\n", NXT2004_DEFAULT_FIRMWARE); 947 - ret = request_firmware(&fw, NXT2004_DEFAULT_FIRMWARE, &state->i2c->dev); 946 + ret = request_firmware(&fw, NXT2004_DEFAULT_FIRMWARE, 947 + state->i2c->dev.parent); 948 948 printk("nxt2004: Waiting for firmware upload(2)...\n"); 949 949 if (ret) { 950 950 printk("nxt2004: No firmware uploaded (timeout or file not found?)\n");
+1 -1
drivers/media/dvb/frontends/or51132.c
··· 340 340 } 341 341 printk("or51132: Waiting for firmware upload(%s)...\n", 342 342 fwname); 343 - ret = request_firmware(&fw, fwname, &state->i2c->dev); 343 + ret = request_firmware(&fw, fwname, state->i2c->dev.parent); 344 344 if (ret) { 345 345 printk(KERN_WARNING "or51132: No firmware up" 346 346 "loaded(timeout or file not found?)\n");
+1 -1
drivers/media/dvb/frontends/tda10048.c
··· 492 492 TDA10048_DEFAULT_FIRMWARE); 493 493 494 494 ret = request_firmware(&fw, TDA10048_DEFAULT_FIRMWARE, 495 - &state->i2c->dev); 495 + state->i2c->dev.parent); 496 496 if (ret) { 497 497 printk(KERN_ERR "%s: Upload failed. (file not found?)\n", 498 498 __func__);