diff options
author | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-11-20 11:23:04 -0200 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-11-20 11:23:04 -0200 |
commit | 1eab1d48fccb589c82e5f4ed660a2002fff802d2 (patch) | |
tree | 886070c7835355adfd7edb504da339ac7bc664ad /linux/drivers/media/dvb/ttusb-dec | |
parent | 15f5fcbdd1131d103477ffcd53eebcdb30401eee (diff) | |
download | mediapointer-dvb-s2-1eab1d48fccb589c82e5f4ed660a2002fff802d2.tar.gz mediapointer-dvb-s2-1eab1d48fccb589c82e5f4ed660a2002fff802d2.tar.bz2 |
Handle errors from input_register_device()
From: Dmitry Torokhov <dtor@insightbb.com>
Also sprinkled some input_sync() throughout the code.
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Acked-by: Ricardo Cerqueira <v4l@cerqueira.org>
Acked-by: Oliver Endriss <o.endriss@gmx.de>
Acked-by: Andrew de Quincey <adq_dvb@lidskialf.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'linux/drivers/media/dvb/ttusb-dec')
-rw-r--r-- | linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c b/linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c index f2d18a5fb..aab71ee63 100644 --- a/linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c +++ b/linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c @@ -253,6 +253,7 @@ static void ttusb_dec_handle_irq( struct urb *urb) * for now lets report each signal as a key down and up*/ dprintk("%s:rc signal:%d\n", __FUNCTION__, buffer[4]); input_report_key(dec->rc_input_dev, rc_keys[buffer[4] - 1], 1); + input_sync(dec->rc_input_dev); input_report_key(dec->rc_input_dev, rc_keys[buffer[4] - 1], 0); input_sync(dec->rc_input_dev); } @@ -1207,11 +1208,12 @@ static int ttusb_init_rc( struct ttusb_dec *dec) struct input_dev *input_dev; u8 b[] = { 0x00, 0x01 }; int i; + int err; usb_make_path(dec->udev, dec->rc_phys, sizeof(dec->rc_phys)); strlcpy(dec->rc_phys, "/input0", sizeof(dec->rc_phys)); - dec->rc_input_dev = input_dev = input_allocate_device(); + input_dev = input_allocate_device(); if (!input_dev) return -ENOMEM; @@ -1225,8 +1227,13 @@ static int ttusb_init_rc( struct ttusb_dec *dec) for (i = 0; i < ARRAY_SIZE(rc_keys); i++) set_bit(rc_keys[i], input_dev->keybit); - input_register_device(input_dev); + err = input_register_device(input_dev); + if (err) { + input_free_device(input_dev); + return err; + } + dec->rc_input_dev = input_dev; if (usb_submit_urb(dec->irq_urb, GFP_KERNEL)) printk("%s: usb_submit_urb failed\n",__FUNCTION__); /* enable irq pipe */ |