diff options
author | Maxim Levitsky <maximlevitsky@gmail.com> | 2010-07-31 10:59:15 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-08-08 22:42:59 -0400 |
commit | 510fcb70ff375b0cec6638fcfafdf36233690bfc (patch) | |
tree | 7bed17c4061ce4af6acc1a9445ad7ae3da80b3b6 /drivers/media/IR/ir-lirc-codec.c | |
parent | ade321c5b8a0e4d40c0f3b73bf0d2579850028d0 (diff) |
V4L/DVB: IR: minor fixes
* lirc: Don't propagate reset event to userspace
* lirc: Remove strange logic from lirc that would make first sample always be pulse
* Make TO_US macro actualy print what it should.
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/IR/ir-lirc-codec.c')
-rw-r--r-- | drivers/media/IR/ir-lirc-codec.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/media/IR/ir-lirc-codec.c b/drivers/media/IR/ir-lirc-codec.c index 3ba482d96c4b..8ca01fd67139 100644 --- a/drivers/media/IR/ir-lirc-codec.c +++ b/drivers/media/IR/ir-lirc-codec.c | |||
@@ -32,6 +32,7 @@ | |||
32 | static int ir_lirc_decode(struct input_dev *input_dev, struct ir_raw_event ev) | 32 | static int ir_lirc_decode(struct input_dev *input_dev, struct ir_raw_event ev) |
33 | { | 33 | { |
34 | struct ir_input_dev *ir_dev = input_get_drvdata(input_dev); | 34 | struct ir_input_dev *ir_dev = input_get_drvdata(input_dev); |
35 | int sample; | ||
35 | 36 | ||
36 | if (!(ir_dev->raw->enabled_protocols & IR_TYPE_LIRC)) | 37 | if (!(ir_dev->raw->enabled_protocols & IR_TYPE_LIRC)) |
37 | return 0; | 38 | return 0; |
@@ -39,18 +40,21 @@ static int ir_lirc_decode(struct input_dev *input_dev, struct ir_raw_event ev) | |||
39 | if (!ir_dev->raw->lirc.drv || !ir_dev->raw->lirc.drv->rbuf) | 40 | if (!ir_dev->raw->lirc.drv || !ir_dev->raw->lirc.drv->rbuf) |
40 | return -EINVAL; | 41 | return -EINVAL; |
41 | 42 | ||
43 | if (IS_RESET(ev)) | ||
44 | return 0; | ||
45 | |||
42 | IR_dprintk(2, "LIRC data transfer started (%uus %s)\n", | 46 | IR_dprintk(2, "LIRC data transfer started (%uus %s)\n", |
43 | TO_US(ev.duration), TO_STR(ev.pulse)); | 47 | TO_US(ev.duration), TO_STR(ev.pulse)); |
44 | 48 | ||
45 | ir_dev->raw->lirc.lircdata += ev.duration / 1000; | 49 | |
50 | sample = ev.duration / 1000; | ||
46 | if (ev.pulse) | 51 | if (ev.pulse) |
47 | ir_dev->raw->lirc.lircdata |= PULSE_BIT; | 52 | sample |= PULSE_BIT; |
48 | 53 | ||
49 | lirc_buffer_write(ir_dev->raw->lirc.drv->rbuf, | 54 | lirc_buffer_write(ir_dev->raw->lirc.drv->rbuf, |
50 | (unsigned char *) &ir_dev->raw->lirc.lircdata); | 55 | (unsigned char *) &sample); |
51 | wake_up(&ir_dev->raw->lirc.drv->rbuf->wait_poll); | 56 | wake_up(&ir_dev->raw->lirc.drv->rbuf->wait_poll); |
52 | 57 | ||
53 | ir_dev->raw->lirc.lircdata = 0; | ||
54 | 58 | ||
55 | return 0; | 59 | return 0; |
56 | } | 60 | } |
@@ -224,8 +228,6 @@ static int ir_lirc_register(struct input_dev *input_dev) | |||
224 | 228 | ||
225 | ir_dev->raw->lirc.drv = drv; | 229 | ir_dev->raw->lirc.drv = drv; |
226 | ir_dev->raw->lirc.ir_dev = ir_dev; | 230 | ir_dev->raw->lirc.ir_dev = ir_dev; |
227 | ir_dev->raw->lirc.lircdata = PULSE_MASK; | ||
228 | |||
229 | return 0; | 231 | return 0; |
230 | 232 | ||
231 | lirc_register_failed: | 233 | lirc_register_failed: |