diff options
author | Dmitry Torokhov <dtor@insightbb.com> | 2006-11-20 08:23:04 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-12-10 06:04:52 -0500 |
commit | b07b4783fb30dee8c542fc76ed8993108d46d6aa (patch) | |
tree | 0e57cc5887511b31e964299820a7adf37e6e45ae /drivers/media/dvb/ttusb-dec/ttusb_dec.c | |
parent | ff67c614e23bf5a3c16968e2c42ab442121c4beb (diff) |
V4L/DVB (4854): Handle errors from input_register_device()
Also sprinkled some input_sync() throughout the code.
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: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/dvb/ttusb-dec/ttusb_dec.c')
-rw-r--r-- | drivers/media/dvb/ttusb-dec/ttusb_dec.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/media/dvb/ttusb-dec/ttusb_dec.c b/drivers/media/dvb/ttusb-dec/ttusb_dec.c index 10b121ada833..bd6e7baae2ec 100644 --- a/drivers/media/dvb/ttusb-dec/ttusb_dec.c +++ b/drivers/media/dvb/ttusb-dec/ttusb_dec.c | |||
@@ -238,6 +238,7 @@ static void ttusb_dec_handle_irq( struct urb *urb) | |||
238 | * for now lets report each signal as a key down and up*/ | 238 | * for now lets report each signal as a key down and up*/ |
239 | dprintk("%s:rc signal:%d\n", __FUNCTION__, buffer[4]); | 239 | dprintk("%s:rc signal:%d\n", __FUNCTION__, buffer[4]); |
240 | input_report_key(dec->rc_input_dev, rc_keys[buffer[4] - 1], 1); | 240 | input_report_key(dec->rc_input_dev, rc_keys[buffer[4] - 1], 1); |
241 | input_sync(dec->rc_input_dev); | ||
241 | input_report_key(dec->rc_input_dev, rc_keys[buffer[4] - 1], 0); | 242 | input_report_key(dec->rc_input_dev, rc_keys[buffer[4] - 1], 0); |
242 | input_sync(dec->rc_input_dev); | 243 | input_sync(dec->rc_input_dev); |
243 | } | 244 | } |
@@ -1187,11 +1188,12 @@ static int ttusb_init_rc( struct ttusb_dec *dec) | |||
1187 | struct input_dev *input_dev; | 1188 | struct input_dev *input_dev; |
1188 | u8 b[] = { 0x00, 0x01 }; | 1189 | u8 b[] = { 0x00, 0x01 }; |
1189 | int i; | 1190 | int i; |
1191 | int err; | ||
1190 | 1192 | ||
1191 | usb_make_path(dec->udev, dec->rc_phys, sizeof(dec->rc_phys)); | 1193 | usb_make_path(dec->udev, dec->rc_phys, sizeof(dec->rc_phys)); |
1192 | strlcpy(dec->rc_phys, "/input0", sizeof(dec->rc_phys)); | 1194 | strlcpy(dec->rc_phys, "/input0", sizeof(dec->rc_phys)); |
1193 | 1195 | ||
1194 | dec->rc_input_dev = input_dev = input_allocate_device(); | 1196 | input_dev = input_allocate_device(); |
1195 | if (!input_dev) | 1197 | if (!input_dev) |
1196 | return -ENOMEM; | 1198 | return -ENOMEM; |
1197 | 1199 | ||
@@ -1205,8 +1207,13 @@ static int ttusb_init_rc( struct ttusb_dec *dec) | |||
1205 | for (i = 0; i < ARRAY_SIZE(rc_keys); i++) | 1207 | for (i = 0; i < ARRAY_SIZE(rc_keys); i++) |
1206 | set_bit(rc_keys[i], input_dev->keybit); | 1208 | set_bit(rc_keys[i], input_dev->keybit); |
1207 | 1209 | ||
1208 | input_register_device(input_dev); | 1210 | err = input_register_device(input_dev); |
1211 | if (err) { | ||
1212 | input_free_device(input_dev); | ||
1213 | return err; | ||
1214 | } | ||
1209 | 1215 | ||
1216 | dec->rc_input_dev = input_dev; | ||
1210 | if (usb_submit_urb(dec->irq_urb, GFP_KERNEL)) | 1217 | if (usb_submit_urb(dec->irq_urb, GFP_KERNEL)) |
1211 | printk("%s: usb_submit_urb failed\n",__FUNCTION__); | 1218 | printk("%s: usb_submit_urb failed\n",__FUNCTION__); |
1212 | /* enable irq pipe */ | 1219 | /* enable irq pipe */ |