linux/drivers/media/video
Mauro Carvalho Chehab 2f16f6315f V4L/DVB: ir-nec-decoder: Reimplement the entire decoder
Thanks to Andy Walls <awalls@md.metrocast.net> for pointing me his
code, that gave me some ideas to better implement it.

After some work with saa7134 bits, I found a way to catch both IRQ
edge pulses. By enabling it, the NEC decoder can now take both
pulse and spaces into account, making it more precise.

Instead of the old strategy of handling the events all at once,
this code implements a state machine. Due to that, it handles
individual pulse or space events, validating them against the
protocol, producing a much more reliable decoding.

With the new implementation, the protocol trailer bits are properly
handled, making possible for the repeat key to work.

Also, the code is now capable of handling both NEC and NEC extended
IR devices. With NEC, it produces a 16 bits code, while with NEC
extended, a 24 bits code is returned.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-19 12:56:55 -03:00
..
au0828 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
bt8xx V4L/DVB: ir-core: Make use of the new IR keymap modules 2010-05-19 12:56:50 -03:00
cpia2 V4L/DVB (13594): cpia2: use __stringify macro. 2009-12-16 00:18:31 -02:00
cx18 V4L/DVB: ir-core: Make use of the new IR keymap modules 2010-05-19 12:56:50 -03:00
cx88 V4L/DVB: ir-core: Make use of the new IR keymap modules 2010-05-19 12:56:50 -03:00
cx231xx V4L/DVB: ir: prepare IR code for a parameter change at register function 2010-05-19 12:56:50 -03:00
cx23885 V4L/DVB: ir-core: Make use of the new IR keymap modules 2010-05-19 12:56:50 -03:00
cx25840 V4L/DVB: cx25840: Fix composite detection 2010-02-26 15:10:50 -03:00
davinci V4L/DVB: V4L: vpfe_capture: Add support for USERPTR mode of operation 2010-05-18 00:52:46 -03:00
em28xx V4L/DVB: ir-core: Make use of the new IR keymap modules 2010-05-19 12:56:50 -03:00
et61x251 V4L/DVB (14005): media/video Kconfig: Mark gspca superceeded drivers as deprecated 2010-02-26 15:10:41 -03:00
gspca V4L/DVB: gspca - t613: Add color controls 2010-05-18 00:52:48 -03:00
hdpvr include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
ivtv V4L/DVB: ir-core: Make use of the new IR keymap modules 2010-05-19 12:56:50 -03:00
ovcamchip
pvrusb2 device_attributes: add sysfs_attr_init() for dynamic attributes 2010-04-07 08:38:03 -07:00
pwc include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
saa7134 V4L/DVB: ir-nec-decoder: Reimplement the entire decoder 2010-05-19 12:56:55 -03:00
saa7164 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sn9c102 V4L/DVB: sn9c102 / zc0301: Handle webcams when no gspca subdriver conflict 2010-05-18 00:52:49 -03:00
tlg2300 V4L/DVB: tlg2300: remove unused #include <linux/version.h> 2010-05-18 00:47:17 -03:00
usbvideo V4L/DVB: drivers/media/video: move dereference after NULL test 2010-05-18 00:47:16 -03:00
usbvision include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
uvc V4L/DVB: uvcvideo: Use POLLOUT and POLLWRNORM for output devices 2010-05-18 00:52:52 -03:00
zc0301 V4L/DVB: sn9c102 / zc0301: Handle webcams when no gspca subdriver conflict 2010-05-18 00:52:49 -03:00
zoran V4L/DVB: zoran: remove V4L1 videodev.h include 2010-05-18 00:52:41 -03:00
adv7170.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
adv7175.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
adv7180.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
adv7343_regs.h
adv7343.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
arv.c V4L/DVB: arv: convert to V4L2 2010-05-18 00:52:42 -03:00
bt819.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
bt856.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
bt866.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
btcx-risc.c
btcx-risc.h
bw-qcam.c V4L/DVB: bw-qcam: coding style cleanup 2010-05-18 00:51:26 -03:00
bw-qcam.h
c-qcam.c V4L/DVB: c-qcam: coding style cleanup 2010-05-18 00:51:26 -03:00
cafe_ccic-regs.h
cafe_ccic.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cpia_pp.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cpia_usb.c
cpia.c V4L/DVB: drivers/media: Correct NULL test 2010-02-26 15:10:57 -03:00
cpia.h
cs53l32a.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cs5345.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cs8420.h
cx2341x.c V4L/DVB: cx2341x: Remove temporal filter control restriction 2010-05-18 00:46:44 -03:00
dabusb.c USB: Push BKL on open down into the drivers 2010-03-02 14:54:23 -08:00
dabusb.h
font.h
hexium_gemini.c V4L/DVB: saa7146: fix regression of the av7110/budget-av driver 2010-05-06 19:20:50 -03:00
hexium_orion.c V4L/DVB: saa7146: fix regression of the av7110/budget-av driver 2010-05-06 19:20:50 -03:00
ibmmpeg2.h
indycam.c
indycam.h
ir-kbd-i2c.c V4L/DVB: ir-core: Make use of the new IR keymap modules 2010-05-19 12:56:50 -03:00
Kconfig V4L/DVB: arv: convert to V4L2 2010-05-18 00:52:42 -03:00
ks0127.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
ks0127.h
m52790.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
Makefile V4L/DVB: V4L - Makfile:Removed duplicate entry of davinci 2010-05-06 19:19:00 -03:00
meye.c V4L/DVB: meye: remove last V4L1 remnants from the code and add v4l2_device 2010-05-18 00:52:36 -03:00
meye.h V4L/DVB: meye: remove last V4L1 remnants from the code and add v4l2_device 2010-05-18 00:52:36 -03:00
msp3400-driver.c
msp3400-driver.h
msp3400-kthreads.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mt9m001.c V4L/DVB (13659): soc-camera: convert to the new mediabus API 2009-12-16 09:27:29 -02:00
mt9m111.c V4L/DVB (13659): soc-camera: convert to the new mediabus API 2009-12-16 09:27:29 -02:00
mt9t031.c V4L/DVB: mt9t031: use runtime pm support to restore ADDRESS_MODE registers 2010-05-18 00:46:21 -03:00
mt9t112.c soc-camera: mt9t112: modify exiting conditions from standby mode 2010-02-19 03:19:01 -02:00
mt9v011.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mt9v011.h V4L/DVB (12340): mtv9v011: Add a missing chip version to the driver 2009-08-13 20:39:02 -03:00
mt9v022.c V4L/DVB: The first two parameters of soc_camera_limit_side() are usually pointers to struct v4l2_rect elements. They are signed, so adjust the prototype accordingly 2010-05-18 00:44:09 -03:00
mx1_camera.c V4L/DVB: mx1-camera: compile fix 2010-05-06 19:20:51 -03:00
mx3_camera.c V4L/DVB: The first two parameters of soc_camera_limit_side() are usually pointers to struct v4l2_rect elements. They are signed, so adjust the prototype accordingly 2010-05-18 00:44:09 -03:00
mxb.c V4L/DVB: saa7146: fix regression of the av7110/budget-av driver 2010-05-06 19:20:50 -03:00
mxb.h
omap24xxcam-dma.c
omap24xxcam.c V4L/DVB: omap24xxcam: potential buffer overflow 2010-05-06 19:18:58 -03:00
omap24xxcam.h
ov511.c V4L/DVB: ov511: Fix continuation lines 2010-05-19 12:56:43 -03:00
ov511.h
ov772x.c soc-camera: ov772x: Modify buswidth control 2010-02-26 15:11:00 -03:00
ov7670.c V4L/DVB: ov7670: silence some compiler warnings 2010-05-18 00:51:25 -03:00
ov9640.c V4L/DVB: Fix bad whitespacing 2010-05-18 00:47:01 -03:00
ov9640.h V4L/DVB (13040): V4L2: Add a v4l2-subdev (soc-camera) driver for OmniVision OV9640 sensor 2009-12-05 18:40:01 -02:00
pms.c V4L/DVB: pms: remove unnecessary exclusive open/close 2010-05-18 00:51:30 -03:00
pxa_camera.c V4L/DVB: pxa_camera: move fifo reset direct before dma start 2010-05-06 19:20:52 -03:00
rj54n1cb0c.c V4L/DVB: The first two parameters of soc_camera_limit_side() are usually pointers to struct v4l2_rect elements. They are signed, so adjust the prototype accordingly 2010-05-18 00:44:09 -03:00
s2255drv.c V4L/DVB: s2255drv: support for frame skipping 2010-05-18 00:46:39 -03:00
saa711x_regs.h
saa717x.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
saa5246a.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
saa5249.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
saa6588.c V4L/DVB (12215): saa6588: conform to the final RDS spec. 2009-09-12 12:17:31 -03:00
saa7110.c V4L/DVB (13241): Cleanup redundant tests on unsigned 2009-12-05 18:41:04 -02:00
saa7115.c V4L/DVB: v4l2-common: add ability to use v4l2_ctrl_query_fill for chroma gain 2010-05-18 00:50:17 -03:00
saa7121.h
saa7127.c V4L/DVB (13913): saa7127: Add support for generating SECAM output for the SAA712[89] chips 2010-02-26 15:10:30 -03:00
saa7146.h
saa7146reg.h
saa7185.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
saa7191.c
saa7191.h
se401.c V4L/DVB (13550): v4l: Use the new video_device_node_name function 2009-12-16 00:17:55 -02:00
se401.h
sh_mobile_ceu_camera.c V4L/DVB: The first two parameters of soc_camera_limit_side() are usually pointers to struct v4l2_rect elements. They are signed, so adjust the prototype accordingly 2010-05-18 00:44:09 -03:00
soc_camera_platform.c V4L/DVB (13659): soc-camera: convert to the new mediabus API 2009-12-16 09:27:29 -02:00
soc_camera.c V4L/DVB: soc-camera: add runtime pm support for subdevices 2010-05-18 00:46:09 -03:00
soc_mediabus.c V4L/DVB: v4l: soc_camera: fix bound checking of mbus_fmt[] index 2010-02-26 15:11:11 -03:00
stk-sensor.c
stk-webcam.c V4L/DVB (13556): v4l: Remove unneeded video_device::minor assignments 2009-12-16 00:17:57 -02:00
stk-webcam.h
stradis.c V4L/DVB (13556): v4l: Remove unneeded video_device::minor assignments 2009-12-16 00:17:57 -02:00
stv680.c V4L/DVB (13556): v4l: Remove unneeded video_device::minor assignments 2009-12-16 00:17:57 -02:00
stv680.h
tcm825x.c V4L/DVB (12111): tcm825x: remove incorrect __exit_p wrapper 2009-06-23 03:14:48 -03:00
tcm825x.h
tda7432.c
tda9840.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
tda9875.c
tea6415c.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
tea6415c.h
tea6420.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
tea6420.h
ths7303.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
tlv320aic23b.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
tuner-core.c V4L/DVB (13964): tuner-core, fix memory leak 2010-02-26 15:10:34 -03:00
tvaudio.c V4L/DVB (13166): remove duplicate structure field initialization 2009-12-05 18:40:40 -02:00
tveeprom.c V4L/DVB (13958): tveeprom.c: use %pM to show MAC address 2010-02-26 15:10:34 -03:00
tvp514x_regs.h V4L/DVB (12246): tvp514x: Migration to sub-device framework 2009-09-19 00:18:09 -03:00
tvp514x.c V4L/DVB: V4L: tvp514x: Add Powerup sequence during s_input to lock the signal properly 2010-05-18 00:52:47 -03:00
tvp5150_reg.h
tvp5150.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
tvp7002_reg.h V4L/DVB: Definitions for TVP7002 in DM365 2010-02-26 15:11:01 -03:00
tvp7002.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
tw9910.c tw9910: use TABs for indentation 2010-02-26 15:10:59 -03:00
upd64031a.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
upd64083.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
v4l1-compat.c V4L/DVB (12948): v4l1-compat: fix VIDIOC_G_STD handling 2009-09-19 00:15:25 -03:00
v4l2-common.c V4L/DVB: v4l: Add V4L2_CID_IRIS_ABSOLUTE and V4L2_CID_IRIS_RELATIVE controls 2010-05-18 00:52:51 -03:00
v4l2-compat-ioctl32.c V4L/DVB: Fix VIDIOC_QBUF compat ioctl32 2010-02-26 15:10:49 -03:00
v4l2-dev.c V4L/DVB (13552): v4l: Replace video_is_unregistered with video_is_registered 2009-12-16 00:17:55 -02:00
v4l2-device.c V4L/DVB: Add SPI support to V4L2 2010-05-18 00:50:24 -03:00
v4l2-int-device.c
v4l2-ioctl.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
videobuf-core.c V4L/DVB: v4l: videobuf: code cleanup 2010-05-18 00:50:25 -03:00
videobuf-dma-contig.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
videobuf-dma-sg.c V4L/DVB: v4l: videobuf: code cleanup 2010-05-18 00:50:25 -03:00
videobuf-dvb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
videobuf-vmalloc.c V4L/DVB: v4l: videobuf: code cleanup 2010-05-18 00:50:25 -03:00
vino.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
vino.h
vivi.c V4L/DVB (13944): vivi: Fix test of unsigned in vivi_create_instance() 2010-02-26 15:10:32 -03:00
vp27smpx.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
vpx3220.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
w9966.c V4L/DVB: w9966: remove camelCase 2010-05-18 00:51:31 -03:00
w9968cf_decoder.h
w9968cf_vpp.h
w9968cf.c V4L/DVB (13556): v4l: Remove unneeded video_device::minor assignments 2009-12-16 00:17:57 -02:00
w9968cf.h
wm8739.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
wm8775.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
zr364xx.c V4L/DVB (13885): zr364xx: fix support for Aiptek DV T300 2010-02-26 15:10:28 -03:00