]> git.karo-electronics.de Git - linux-beck.git/commitdiff
V4L/DVB (11723): Link firmware to physical device
authorJean Delvare <khali@linux-fr.org>
Sun, 26 Apr 2009 08:43:59 +0000 (05:43 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 16 Jun 2009 21:20:56 +0000 (18:20 -0300)
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>
drivers/media/common/tuners/tuner-xc2028.c
drivers/media/common/tuners/xc5000.c
drivers/media/dvb/frontends/af9013.c
drivers/media/dvb/frontends/cx24116.c
drivers/media/dvb/frontends/drx397xD.c
drivers/media/dvb/frontends/nxt200x.c
drivers/media/dvb/frontends/or51132.c
drivers/media/dvb/frontends/tda10048.c

index 1adce9ff52ce0fea7daee80fa46f94e15f85d1b4..fd83cc0c134ce2ee39d30023d898db2a3ef52521 100644 (file)
@@ -272,7 +272,7 @@ static int load_all_firmwares(struct dvb_frontend *fe)
                fname = firmware_name;
 
        tuner_dbg("Reading firmware %s\n", fname);
-       rc = request_firmware(&fw, fname, &priv->i2c_props.adap->dev);
+       rc = request_firmware(&fw, fname, priv->i2c_props.adap->dev.parent);
        if (rc < 0) {
                if (rc == -ENOENT)
                        tuner_err("Error: firmware %s not found.\n",
index b54598550dc43da789cc7b6fdbc6acf3792aa5c8..f3880f8977e05b16625a2d4b5c31db4c489c52af 100644 (file)
@@ -575,7 +575,7 @@ static int xc5000_fwupload(struct dvb_frontend *fe)
                XC5000_DEFAULT_FIRMWARE);
 
        ret = request_firmware(&fw, XC5000_DEFAULT_FIRMWARE,
-               &priv->i2c_props.adap->dev);
+               priv->i2c_props.adap->dev.parent);
        if (ret) {
                printk(KERN_ERR "xc5000: Upload failed. (file not found?)\n");
                ret = XC_RESULT_RESET_FAILURE;
index b2b50fb4cfd338002102b868e87b0cac1032954a..136c5863d81b5859d38fefd33b496932e8f6cca5 100644 (file)
@@ -1455,7 +1455,7 @@ static int af9013_download_firmware(struct af9013_state *state)
                af9013_ops.info.name);
 
        /* request the firmware, this will block and timeout */
-       ret = request_firmware(&fw, fw_file,  &state->i2c->dev);
+       ret = request_firmware(&fw, fw_file, state->i2c->dev.parent);
        if (ret) {
                err("did not find the firmware file. (%s) "
                        "Please see linux/Documentation/dvb/ for more details" \
index 9b9f57264ceff0bd76c7685477ae22486d2a4b5a..2410d8b59b6b428aa7621ed8b71839bef23282a8 100644 (file)
@@ -492,7 +492,7 @@ static int cx24116_firmware_ondemand(struct dvb_frontend *fe)
                printk(KERN_INFO "%s: Waiting for firmware upload (%s)...\n",
                        __func__, CX24116_DEFAULT_FIRMWARE);
                ret = request_firmware(&fw, CX24116_DEFAULT_FIRMWARE,
-                       &state->i2c->dev);
+                       state->i2c->dev.parent);
                printk(KERN_INFO "%s: Waiting for firmware upload(2)...\n",
                        __func__);
                if (ret) {
index 172f1f928f0271f8e64bc7daa12ea999033ee2d6..0100755352216ef3d180a270009a2bcde20b76bc 100644 (file)
@@ -123,10 +123,10 @@ static int drx_load_fw(struct drx397xD_state *s, enum fw_ix ix)
        }
        memset(&fw[ix].data[0], 0, sizeof(fw[0].data));
 
-       if (request_firmware(&fw[ix].file, fw[ix].name, &s->i2c->dev) != 0) {
+       rc = request_firmware(&fw[ix].file, fw[ix].name, s->i2c->dev.parent);
+       if (rc != 0) {
                printk(KERN_ERR "%s: Firmware \"%s\" not available\n",
                       mod_name, fw[ix].name);
-               rc = -ENOENT;
                goto exit_err;
        }
 
index a8429ebfa8a2e6da67208e926d5644f74e583a02..eac20650499fb510217a1ccf4bba9598083f60c7 100644 (file)
@@ -879,7 +879,8 @@ static int nxt2002_init(struct dvb_frontend* fe)
 
        /* request the firmware, this will block until someone uploads it */
        printk("nxt2002: Waiting for firmware upload (%s)...\n", NXT2002_DEFAULT_FIRMWARE);
-       ret = request_firmware(&fw, NXT2002_DEFAULT_FIRMWARE, &state->i2c->dev);
+       ret = request_firmware(&fw, NXT2002_DEFAULT_FIRMWARE,
+                              state->i2c->dev.parent);
        printk("nxt2002: Waiting for firmware upload(2)...\n");
        if (ret) {
                printk("nxt2002: No firmware uploaded (timeout or file not found?)\n");
@@ -943,7 +944,8 @@ static int nxt2004_init(struct dvb_frontend* fe)
 
        /* request the firmware, this will block until someone uploads it */
        printk("nxt2004: Waiting for firmware upload (%s)...\n", NXT2004_DEFAULT_FIRMWARE);
-       ret = request_firmware(&fw, NXT2004_DEFAULT_FIRMWARE, &state->i2c->dev);
+       ret = request_firmware(&fw, NXT2004_DEFAULT_FIRMWARE,
+                              state->i2c->dev.parent);
        printk("nxt2004: Waiting for firmware upload(2)...\n");
        if (ret) {
                printk("nxt2004: No firmware uploaded (timeout or file not found?)\n");
index 5ed32544de3964798a38f6683109acd92b693971..8133ea3cddd783023ff581c47c904b412ac47c0f 100644 (file)
@@ -340,7 +340,7 @@ static int or51132_set_parameters(struct dvb_frontend* fe,
                }
                printk("or51132: Waiting for firmware upload(%s)...\n",
                       fwname);
-               ret = request_firmware(&fw, fwname, &state->i2c->dev);
+               ret = request_firmware(&fw, fwname, state->i2c->dev.parent);
                if (ret) {
                        printk(KERN_WARNING "or51132: No firmware up"
                               "loaded(timeout or file not found?)\n");
index 28f580f858c61b38ef37d3ceb8acb0ea932d49fb..dfa3e2ccc741f36b3f98a2ac39a913ee1cb4add7 100644 (file)
@@ -492,7 +492,7 @@ static int tda10048_firmware_upload(struct dvb_frontend *fe)
                TDA10048_DEFAULT_FIRMWARE);
 
        ret = request_firmware(&fw, TDA10048_DEFAULT_FIRMWARE,
-               &state->i2c->dev);
+               state->i2c->dev.parent);
        if (ret) {
                printk(KERN_ERR "%s: Upload failed. (file not found?)\n",
                        __func__);