OSDN Git Service

[media] xc4000: check firmware version
authoristvan_v@mailbox.hu <istvan_v@mailbox.hu>
Mon, 6 Jun 2011 16:00:17 +0000 (13:00 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 27 Jul 2011 20:52:40 +0000 (17:52 -0300)
Enabled code to check if the version of the firmware reported by the hardware
is correct after uploading it.

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 ebc8426..a053dec 100644 (file)
@@ -919,7 +919,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 = 0, hwmodel;
+       u16                        hwmodel;
        v4l2_std_id                std0;
        u8                         hw_major, hw_minor, fw_major, fw_minor;
 
@@ -1032,23 +1032,23 @@ check_device:
                hwmodel, hw_major, hw_minor, fw_major, fw_minor);
 
        /* Check firmware version against what we downloaded. */
-#ifdef DJH_DEBUG
-       if (priv->firm_version != ((version & 0xf0) << 4 | (version & 0x0f))) {
-               printk("Incorrect readback of firmware version %x.\n",
-                      (version & 0xff));
+       if (priv->firm_version != ((fw_major << 8) | fw_minor)) {
+               printk(KERN_WARNING
+                      "Incorrect readback of firmware version %d.%d.\n",
+                      fw_major, fw_minor);
                goto fail;
        }
-#endif
 
        /* Check that the tuner hardware model remains consistent over time. */
        if (priv->hwmodel == 0 &&
            (hwmodel == XC_PRODUCT_ID_XC4000 ||
             hwmodel == XC_PRODUCT_ID_XC4100)) {
                priv->hwmodel = hwmodel;
-               priv->hwvers  = version & 0xff00;
+               priv->hwvers = (hw_major << 8) | hw_minor;
        } else if (priv->hwmodel == 0 || priv->hwmodel != hwmodel ||
-                  priv->hwvers != (version & 0xff00)) {
-               printk("Read invalid device hardware information - tuner "
+                  priv->hwvers != ((hw_major << 8) | hw_minor)) {
+               printk(KERN_WARNING
+                      "Read invalid device hardware information - tuner "
                       "hung?\n");
                goto fail;
        }