[media] af9015: small RC change
authorAntti Palosaari <crope@iki.fi>
Fri, 18 Mar 2011 22:36:42 +0000 (19:36 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 22 Mar 2011 07:54:53 +0000 (04:54 -0300)
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/dvb-usb/af9015.c

index 6457d042b1a0861060d8fc9cc7d98f16b273e7b8..da2f87efe0712fe583d040b438711e6bc3e00b00 100644 (file)
@@ -479,9 +479,7 @@ static int af9015_init_endpoint(struct dvb_usb_device *d)
                ret = af9015_set_reg_bit(d, 0xd50b, 0);
        else
                ret = af9015_clear_reg_bit(d, 0xd50b, 0);
-       if (ret)
-               goto error;
-       ret = af9015_write_reg(d, 0x98e9, 0xff);
+
 error:
        if (ret)
                err("endpoint init failed:%d", ret);
@@ -614,6 +612,11 @@ static int af9015_init(struct dvb_usb_device *d)
        int ret;
        deb_info("%s:\n", __func__);
 
+       /* init RC canary */
+       ret = af9015_write_reg(d, 0x98e9, 0xff);
+       if (ret)
+               goto error;
+
        ret = af9015_init_endpoint(d);
        if (ret)
                goto error;
@@ -1041,11 +1044,14 @@ static int af9015_rc_query(struct dvb_usb_device *d)
 
        /* Only process key if canary killed */
        if (buf[16] != 0xff && buf[0] != 0x01) {
-               /* Reset the canary */
-               af9015_write_reg(d, 0x98e9, 0xff);
                deb_rc("%s: key pressed %02x %02x %02x %02x\n", __func__,
                        buf[12], buf[13], buf[14], buf[15]);
 
+               /* Reset the canary */
+               ret = af9015_write_reg(d, 0x98e9, 0xff);
+               if (ret)
+                       goto error;
+
                /* Remember this key */
                memcpy(priv->rc_last, &buf[12], 4);
                if (buf[14] == (u8) ~buf[15]) {
@@ -1058,6 +1064,7 @@ static int af9015_rc_query(struct dvb_usb_device *d)
                                        buf[13] << 8 | buf[14];
                        }
                } else {
+                       /* 32 bit NEC */
                        priv->rc_keycode = buf[12] << 24 | buf[13] << 16 |
                                        buf[14] << 8 | buf[15];
                }