[media] xc4000: check_firmware() cleanup
authorIstvan Varga <istvan_v@mailbox.hu>
Sat, 4 Jun 2011 14:59:54 +0000 (11:59 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 27 Jul 2011 20:52:36 +0000 (17:52 -0300)
This patch makes the following fixes in check_firmware():
  - there is only one BASE and INIT1 firmware for XC4000
  - loading SCODE is needed also for FM radio

Signed-off-by: Istvan Varga <istvan_v@mailbox.hu>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/common/tuners/xc4000.c

index d83da50ebb70195f5e5052d3f9d033ba4301e6db..71739dc3343812a1c4e928ff5a68526ce3a9277b 100644 (file)
@@ -903,7 +903,7 @@ static int check_firmware(struct dvb_frontend *fe, unsigned int type,
        struct xc4000_priv         *priv = fe->tuner_priv;
        struct firmware_properties new_fw;
        int                        rc = 0, is_retry = 0;
-       u16                        version, hwmodel;
+       u16                        version = 0, hwmodel;
        v4l2_std_id                std0;
        u8                         hw_major, hw_minor, fw_major, fw_minor;
 
@@ -945,8 +945,7 @@ retry:
        }
 
        /* No need to reload base firmware if it matches */
-       if (((BASE | new_fw.type) & BASE_TYPES) ==
-           (priv->cur_fw.type & BASE_TYPES)) {
+       if (priv->cur_fw.type & BASE) {
                dprintk(1, "BASE firmware not changed.\n");
                goto skip_base;
        }
@@ -961,7 +960,7 @@ retry:
 
        /* BASE firmwares are all std0 */
        std0 = 0;
-       rc = load_firmware(fe, BASE | new_fw.type, &std0);
+       rc = load_firmware(fe, BASE, &std0);
        if (rc < 0) {
                printk("Error %d while loading base firmware\n", rc);
                goto fail;
@@ -970,10 +969,9 @@ retry:
        /* Load INIT1, if needed */
        dprintk(1, "Load init1 firmware, if exists\n");
 
-       rc = load_firmware(fe, BASE | INIT1 | new_fw.type, &std0);
+       rc = load_firmware(fe, BASE | INIT1, &std0);
        if (rc == -ENOENT)
-               rc = load_firmware(fe, (BASE | INIT1 | new_fw.type) & ~F8MHZ,
-                                  &std0);
+               rc = load_firmware(fe, BASE | INIT1, &std0);
        if (rc < 0 && rc != -ENOENT) {
                tuner_err("Error %d while loading init1 firmware\n",
                          rc);
@@ -1007,9 +1005,6 @@ skip_std_specific:
                goto check_device;
        }
 
-       if (new_fw.type & FM)
-               goto check_device;
-
        /* Load SCODE firmware, if exists */
        rc = load_scode(fe, new_fw.type | new_fw.scode_table, &new_fw.id,
                        new_fw.int_freq, new_fw.scode_nr);