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/cinergyT2/cinergyT2.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/cinergyT2/cinergyT2.c')
-rw-r--r-- | drivers/media/dvb/cinergyT2/cinergyT2.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/media/dvb/cinergyT2/cinergyT2.c b/drivers/media/dvb/cinergyT2/cinergyT2.c index 9123147e376f..d64b96cb0c46 100644 --- a/drivers/media/dvb/cinergyT2/cinergyT2.c +++ b/drivers/media/dvb/cinergyT2/cinergyT2.c | |||
@@ -746,6 +746,7 @@ static void cinergyt2_query_rc (struct work_struct *work) | |||
746 | dprintk(1, "rc_input_event=%d Up\n", cinergyt2->rc_input_event); | 746 | dprintk(1, "rc_input_event=%d Up\n", cinergyt2->rc_input_event); |
747 | input_report_key(cinergyt2->rc_input_dev, | 747 | input_report_key(cinergyt2->rc_input_dev, |
748 | cinergyt2->rc_input_event, 0); | 748 | cinergyt2->rc_input_event, 0); |
749 | input_sync(cinergyt2->rc_input_dev); | ||
749 | cinergyt2->rc_input_event = KEY_MAX; | 750 | cinergyt2->rc_input_event = KEY_MAX; |
750 | } | 751 | } |
751 | cinergyt2->rc_last_code = ~0; | 752 | cinergyt2->rc_last_code = ~0; |
@@ -783,6 +784,7 @@ static void cinergyt2_query_rc (struct work_struct *work) | |||
783 | dprintk(1, "rc_input_event=%d\n", cinergyt2->rc_input_event); | 784 | dprintk(1, "rc_input_event=%d\n", cinergyt2->rc_input_event); |
784 | input_report_key(cinergyt2->rc_input_dev, | 785 | input_report_key(cinergyt2->rc_input_dev, |
785 | cinergyt2->rc_input_event, 1); | 786 | cinergyt2->rc_input_event, 1); |
787 | input_sync(cinergyt2->rc_input_dev); | ||
786 | cinergyt2->rc_last_code = rc_events[n].value; | 788 | cinergyt2->rc_last_code = rc_events[n].value; |
787 | } | 789 | } |
788 | } | 790 | } |
@@ -798,8 +800,9 @@ static int cinergyt2_register_rc(struct cinergyt2 *cinergyt2) | |||
798 | { | 800 | { |
799 | struct input_dev *input_dev; | 801 | struct input_dev *input_dev; |
800 | int i; | 802 | int i; |
803 | int err; | ||
801 | 804 | ||
802 | cinergyt2->rc_input_dev = input_dev = input_allocate_device(); | 805 | input_dev = input_allocate_device(); |
803 | if (!input_dev) | 806 | if (!input_dev) |
804 | return -ENOMEM; | 807 | return -ENOMEM; |
805 | 808 | ||
@@ -817,7 +820,13 @@ static int cinergyt2_register_rc(struct cinergyt2 *cinergyt2) | |||
817 | input_dev->keycodesize = 0; | 820 | input_dev->keycodesize = 0; |
818 | input_dev->keycodemax = 0; | 821 | input_dev->keycodemax = 0; |
819 | 822 | ||
820 | input_register_device(cinergyt2->rc_input_dev); | 823 | err = input_register_device(input_dev); |
824 | if (err) { | ||
825 | input_free_device(input_dev); | ||
826 | return err; | ||
827 | } | ||
828 | |||
829 | cinergyt2->rc_input_dev = input_dev; | ||
821 | schedule_delayed_work(&cinergyt2->rc_query_work, HZ/2); | 830 | schedule_delayed_work(&cinergyt2->rc_query_work, HZ/2); |
822 | 831 | ||
823 | return 0; | 832 | return 0; |