1
linux/drivers/media/video
Mauro Carvalho Chehab 715a223323 V4L/DVB (12595): common/ir: use a struct for keycode tables
Currently, V4L uses a scancode table whose index is the scancode and
the value is the keycode. While this works, it has some drawbacks:

1) It requires that the scancode to be at the range 00-7f;

2) keycodes should be masked on 7 bits in order for it to work;

3) due to the 7 bits approach, sometimes it is not possible to replace
the default keyboard to another one with a different encoding rule;

4) it is different than what is done with dvb-usb approach;

5) it requires a typedef for it to work. This is not a recommended
Linux CodingStyle.

This patch is part of a larger series of IR changes. It basically
replaces the IR_KEYTAB_TYPE tables by a structured table:
struct ir_scancode {
       u16     scancode;
       u32     keycode;
};

This is very close to what dvb does. So, a further integration with DVB
code will be easy.

While we've changed the tables, for now, the IR keycode handling is still
based on the old approach.

The only notable effect is the redution of about 35% of the ir-common
module size:

   text    data     bss     dec     hex filename
   6721   29208       4   35933    8c5d old/ir-common.ko
   5756   18040       4   23800    5cf8 new/ir-common.ko

In thesis, we could be using above u8 for scancode, reducing even more the size
of the module, but defining it as u16 is more convenient, since, on dvb, each
scancode has up to 16 bits, and we currently have a few troubles with rc5, as their
scancodes are defined with more than 8 bits.

This patch itself shouldn't be doing any functional changes.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-09-12 12:19:47 -03:00
..
au0828 V4L/DVB (12360): au0828: fix typo: dvb uses bulk xfer, dont say isoc in debug 2009-09-12 12:18:23 -03:00
bt8xx V4L/DVB (12595): common/ir: use a struct for keycode tables 2009-09-12 12:19:47 -03:00
cpia2 V4L/DVB: cleanup redundant tests on unsigned 2009-06-16 18:20:58 -03:00
cx18 V4L/DVB (12595): common/ir: use a struct for keycode tables 2009-09-12 12:19:47 -03:00
cx88 V4L/DVB (12595): common/ir: use a struct for keycode tables 2009-09-12 12:19:47 -03:00
cx231xx V4L/DVB (12595): common/ir: use a struct for keycode tables 2009-09-12 12:19:47 -03:00
cx23885 V4L/DVB (12343): Stop defining I2C adapter IDs nobody uses 2009-09-12 12:18:13 -03:00
cx25840 V4L/DVB (12347): cx25840: Bugfix for no DVB-T on the Hauppauge HVR-1700 2009-09-12 12:18:15 -03:00
em28xx V4L/DVB (12595): common/ir: use a struct for keycode tables 2009-09-12 12:19:47 -03:00
et61x251
gspca V4L/DVB (12501): gspca - sonixj: Do the ov7660 sensor work again. 2009-09-12 12:19:46 -03:00
hdpvr V4L/DVB (12472): hdpvr-control: fix bad whitespaces 2009-09-12 12:19:02 -03:00
ivtv V4L/DVB (12343): Stop defining I2C adapter IDs nobody uses 2009-09-12 12:18:13 -03:00
ovcamchip V4L/DVB (11304): v4l2: remove v4l2_subdev_command calls where they are no longer needed. 2009-03-30 12:43:49 -03:00
pvrusb2 V4L/DVB (12426): pvrusb2: fix compile warning 2009-09-12 12:18:49 -03:00
pwc V4L/DVB (12489): pwc - fix few use-after-free and memory leaks 2009-09-12 12:19:13 -03:00
saa7134 V4L/DVB (12595): common/ir: use a struct for keycode tables 2009-09-12 12:19:47 -03:00
sn9c102 V4L/DVB (11221): gspca - sonixj: Prefer sonixj instead of sn9c102 for 0471:0327. 2009-03-30 12:43:41 -03:00
usbvideo headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
usbvision headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
uvc V4L/DVB (12379): uvcvideo: Multiple streaming interfaces support 2009-09-12 12:18:33 -03:00
zc0301
zoran V4L/DVB (12435): strlcpy() will always null terminate the string. 2009-09-12 12:18:50 -03:00
adv7170.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
adv7175.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
adv7343_regs.h V4L/DVB (11743): Analog Devices ADV7343 video encoder driver 2009-06-16 18:20:59 -03:00
adv7343.c V4L/DVB (11743): Analog Devices ADV7343 video encoder driver 2009-06-16 18:20:59 -03:00
arv.c
bt819.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
bt856.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
bt866.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
btcx-risc.c
btcx-risc.h
bw-qcam.c V4L/DVB (12438): Read buffer overflow 2009-08-13 20:39:14 -03:00
bw-qcam.h
c-qcam.c
cafe_ccic-regs.h
cafe_ccic.c V4L/DVB (12343): Stop defining I2C adapter IDs nobody uses 2009-09-12 12:18:13 -03:00
cpia_pp.c
cpia_usb.c
cpia.c proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
cpia.h
cs53l32a.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
cs5345.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
cs8420.h
cx2341x.c V4L/DVB (12104): ivtv/cx18: fix regression: class controls are no longer seen 2009-06-23 03:14:31 -03:00
dabusb.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
dabusb.h
font.h
hexium_gemini.c V4L/DVB: cleanup redundant tests on unsigned 2009-06-16 18:20:58 -03:00
hexium_orion.c V4L/DVB: cleanup redundant tests on unsigned 2009-06-16 18:20:58 -03:00
ibmmpeg2.h
indycam.c
indycam.h
ir-kbd-i2c.c V4L/DVB (12595): common/ir: use a struct for keycode tables 2009-09-12 12:19:47 -03:00
Kconfig V4L/DVB (12466): Kconfig files: Fix improper use of whitespaces 2009-09-12 12:18:59 -03:00
ks0127.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
ks0127.h
m52790.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
Makefile V4L/DVB (12135): Add a driver for mt9v011 sensor 2009-07-05 14:30:02 -03:00
meye.c V4L/DVB (12204): bttv and meye: Use PCI_VDEVICE 2009-09-12 12:17:25 -03:00
meye.h
msp3400-driver.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
msp3400-driver.h V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
msp3400-kthreads.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
mt9m001.c V4L/DVB (11910): mt9: Use v4l bounding/alignment function 2009-06-23 03:21:19 -03:00
mt9m111.c V4L/DVB (11610): soc-camera: simplify register access routines in multiple sensor drivers 2009-06-16 18:20:43 -03:00
mt9t031.c V4L/DVB (11910): mt9: Use v4l bounding/alignment function 2009-06-23 03:21:19 -03:00
mt9v011.c V4L/DVB (12401): m9v011: add vflip/hflip controls to control mirror/upside down 2009-08-13 20:39:08 -03: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 (11910): mt9: Use v4l bounding/alignment function 2009-06-23 03:21:19 -03:00
mx1_camera.c V4L/DVB (12424): soc-camera: fix recursive locking in .buf_queue() 2009-08-13 20:39:11 -03:00
mx3_camera.c V4L/DVB (12424): soc-camera: fix recursive locking in .buf_queue() 2009-08-13 20:39:11 -03:00
mxb.c V4L/DVB: cleanup redundant tests on unsigned 2009-06-16 18:20:58 -03:00
mxb.h
omap24xxcam-dma.c
omap24xxcam.c V4L/DVB (11264): omap24xxcam: Remove buffer type check from vidioc_s/g_parm 2009-03-30 12:43:45 -03:00
omap24xxcam.h
ov511.c V4L/DVB (12083): ov511: remove ov518 usb id's from the driver 2009-06-23 03:13:16 -03:00
ov511.h V4L/DVB (11966): ov511: Fix unit_video parameter behavior 2009-06-16 19:07:40 -03:00
ov772x.c soc-camera: unify i2c camera device platform data 2009-06-17 16:22:34 +09:00
ov7670.c V4L/DVB (11117): ov7670: add support to get/set registers 2009-03-30 12:43:30 -03:00
pms.c
pxa_camera.c V4L/DVB (12424): soc-camera: fix recursive locking in .buf_queue() 2009-08-13 20:39:11 -03:00
s2255drv.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
saa711x_regs.h
saa717x.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa5246a.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
saa5249.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07: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 (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa7115.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa7121.h
saa7127.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa7146.h
saa7146reg.h
saa7185.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa7191.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa7191.h
se401.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
se401.h V4L/DVB (11998): se401: Fix coding style 2009-06-16 19:07:54 -03:00
sh_mobile_ceu_camera.c V4L/DVB (12424): soc-camera: fix recursive locking in .buf_queue() 2009-08-13 20:39:11 -03:00
soc_camera_platform.c
soc_camera.c V4L/DVB (12160): soc-camera: fix missing clean up on error path 2009-07-05 14:29:56 -03:00
stk-sensor.c
stk-webcam.c V4L/DVB (12491): remove unnecessary power management primitive in stk-webcam 2009-09-12 12:19:14 -03:00
stk-webcam.h
stradis.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
stv680.c V4L/DVB (12369): stv680: kfree called before usb_kill_urb 2009-09-12 12:18:28 -03: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 V4L/DVB (11564): tda7432: Delete old driver history 2009-06-16 18:20:36 -03:00
tda9840.c V4L/DVB (11372): v4l2: use old-style i2c API for kernels < 2.6.26 instead of < 2.6.22 2009-04-06 21:44:23 -03:00
tda9875.c V4L/DVB (11302): tda9875: remove legacy code for old-style i2c API 2009-03-30 12:43:48 -03:00
tea6415c.c V4L/DVB (11737): Drop stray references to i2c_probe 2009-06-16 18:20:58 -03:00
tea6415c.h
tea6420.c V4L/DVB (11737): Drop stray references to i2c_probe 2009-06-16 18:20:58 -03:00
tea6420.h
ths7303.c V4L/DVB (11742): TI THS7303 video amplifier driver code 2009-06-16 18:20:59 -03:00
tlv320aic23b.c V4L/DVB (11304): v4l2: remove v4l2_subdev_command calls where they are no longer needed. 2009-03-30 12:43:49 -03:00
tuner-core.c V4L/DVB (12483): Use DIV_ROUND_CLOSEST 2009-09-12 12:19:08 -03:00
tvaudio.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
tveeprom.c V4L/DVB (12478): ARRAY_SIZE changes 2009-09-12 12:19:05 -03:00
tvp514x_regs.h
tvp514x.c V4L/DVB (11961): tvp514x: try_count off by one 2009-06-16 19:07:39 -03:00
tvp5150_reg.h
tvp5150.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
tw9910.c soc-camera: unify i2c camera device platform data 2009-06-17 16:22:34 +09:00
upd64031a.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
upd64083.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
v4l1-compat.c V4L/DVB (12483): Use DIV_ROUND_CLOSEST 2009-09-12 12:19:08 -03:00
v4l2-common.c V4L/DVB (12549): v4l2: video device: Add FM TX controls default configurations 2009-09-12 12:19:19 -03:00
v4l2-compat-ioctl32.c V4L/DVB (12549): v4l2: video device: Add FM TX controls default configurations 2009-09-12 12:19:19 -03:00
v4l2-dev.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
v4l2-device.c V4L/DVB (11936): Fix v4l2-device usage of i2c_unregister_device() 2009-06-16 19:07:26 -03:00
v4l2-int-device.c
v4l2-ioctl.c V4L/DVB (12543): v4l: introduce string control support. 2009-09-12 12:19:17 -03:00
videobuf-core.c V4L/DVB (11991): buf-core.c: add pointer check 2009-06-16 19:07:51 -03:00
videobuf-dma-contig.c Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 2009-06-16 21:15:42 -07:00
videobuf-dma-sg.c V4L/DVB (11953): videobuf-dma-sg: return -ENOMEM if vmalloc fails 2009-06-16 19:07:34 -03:00
videobuf-dvb.c
videobuf-vmalloc.c
vino.c V4L/DVB (12343): Stop defining I2C adapter IDs nobody uses 2009-09-12 12:18:13 -03:00
vino.h
vivi.c V4L/DVB (12134): vivi: bug: don't assume that S_STD will be called before streaming 2009-07-05 10:05:10 -03:00
vp27smpx.c V4L/DVB (11370): v4l2-subdev: move s_std from tuner to core. 2009-04-06 21:44:22 -03:00
vpx3220.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
w9966.c
w9968cf_decoder.h
w9968cf_vpp.h
w9968cf.c V4L/DVB (12343): Stop defining I2C adapter IDs nobody uses 2009-09-12 12:18:13 -03:00
w9968cf.h V4L/DVB (11377): v4l: increase version numbers of drivers converted to v4l2_subdev. 2009-04-06 21:44:26 -03:00
wm8739.c V4L/DVB (11304): v4l2: remove v4l2_subdev_command calls where they are no longer needed. 2009-03-30 12:43:49 -03:00
wm8775.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
zr364xx.c V4L/DVB (12326): zr364xx: error message when buffer is too small and code cleanup 2009-09-12 12:18:07 -03:00