V4L/DVB (11981): Remote control debugging for dw2102 driver based USB cards
authorIgor M. Liplianin <liplianin@me.by>
Sat, 13 Jun 2009 11:10:24 +0000 (08:10 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 16 Jun 2009 22:07:46 +0000 (19:07 -0300)
Remote control debugging for dw2102 driver based USB cards
It includes DVBWorld, TeVii, Terratec and others.
Type 'modprobe dvb-usb-dw2102 debug=4', then look at dmesg output.

Signed-off-by: Igor M. Liplianin <liplianin@me.by>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/dvb-usb/dw2102.c
drivers/media/dvb/dvb-usb/dw2102.h

index c65f273..dee9399 100644 (file)
@@ -51,7 +51,9 @@ struct dw210x_rc_keys {
 /* debug */
 static int dvb_usb_dw2102_debug;
 module_param_named(debug, dvb_usb_dw2102_debug, int, 0644);
-MODULE_PARM_DESC(debug, "set debugging level (1=info 2=xfer (or-able))." DVB_USB_DEBUG_STATUS);
+MODULE_PARM_DESC(debug, "set debugging level (1=info 2=xfer 4=rc(or-able))."
+                                               DVB_USB_DEBUG_STATUS);
+
 
 DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
 
@@ -553,26 +555,37 @@ static int dw2102_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
 {
        struct dw210x_state *st = d->priv;
        u8 key[2];
-       struct i2c_msg msg[] = {
-               {.addr = DW2102_RC_QUERY, .flags = I2C_M_RD, .buf = key,
-               .len = 2},
+       struct i2c_msg msg = {
+               .addr = DW2102_RC_QUERY,
+               .flags = I2C_M_RD,
+               .buf = key,
+               .len = 2
        };
        int i;
 
        *state = REMOTE_NO_KEY_PRESSED;
-       if (dw2102_i2c_transfer(&d->i2c_adap, msg, 1) == 1) {
+       if (dw2102_i2c_transfer(&d->i2c_adap, &msg, 1) == 1) {
                for (i = 0; i < ARRAY_SIZE(dw210x_rc_keys); i++) {
-                       if (dw210x_rc_keys[i].data == msg[0].buf[0]) {
+                       if (dw210x_rc_keys[i].data == msg.buf[0]) {
                                *state = REMOTE_KEY_PRESSED;
                                *event = dw210x_rc_keys[i].event;
                                st->last_key_pressed =
                                        dw210x_rc_keys[i].event;
                                break;
                        }
+
                st->last_key_pressed = 0;
                }
+
+               if ((*state) == REMOTE_KEY_PRESSED)
+                       deb_rc("%s: found rc key: %x, %x, event: %x\n",
+                                       __func__, key[0], key[1], (*event));
+               else if (key[0] != 0xff)
+                       deb_rc("%s: unknown rc key: %x, %x\n",
+                                       __func__, key[0], key[1]);
+
        }
-       /* info("key: %x %x\n",key[0],key[1]); */
+
        return 0;
 }
 
index e337073..5cd0b0e 100644 (file)
@@ -5,4 +5,5 @@
 #include "dvb-usb.h"
 
 #define deb_xfer(args...) dprintk(dvb_usb_dw2102_debug, 0x02, args)
+#define deb_rc(args...)   dprintk(dvb_usb_dw2102_debug, 0x04, args)
 #endif