summaryrefslogtreecommitdiff
path: root/linux/drivers/media/video/ir-kbd-i2c.c
AgeCommit message (Collapse)Author
2009-08-29common/ir: use a struct for keycode tablesMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@redhat.com> 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. Priority: normal Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-07-28ir-kbd-i2c: Add support for Z8F0811/Hauppage IR transceiversMauro Carvalho Chehab
From: Andy Walls <awalls@radix.net> This patch adds support for Zilog Z8F0811 IR transceiver chips on CX2341[68] based boards to ir-kbd-i2c for both the old i2c binding model and the new i2c binding model. Priority: normal Signed-off-by: Andy Walls <awalls@radix.net> Reviewed-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-07-28ir-kbd-i2c: Allow use of ir-kdb-i2c internal get_key funcs and set ir_typeMauro Carvalho Chehab
From: Andy Walls <awalls@radix.net> This patch augments the init data passed by bridge drivers to ir-kbd-i2c, so that the ir_type can be set explicitly, and so ir-kbd-i2c internal get_key functions can be reused without requiring symbols from ir-kbd-i2c in the bridge driver. Priority: normal Signed-off-by: Andy Walls <awalls@radix.net> Reviewed-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-07-28ir-kbd-i2c: Remove superfulous inlinesMauro Carvalho Chehab
From: Jean Delvare <khali@linux-fr.org> Functions which are referenced by their address can't be inlined by definition. Priority: normal Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Andy Walls <awalls@radix.net> Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-07-28ir-kbd-i2c: fix spacesMauro Carvalho Chehab
From: Douglas Schilling Landgraf <dougsland@redhat.com> Fixed checkpath warnings Priority: normal Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-05-27Building system: Restore compilation with kernels older than 2.6.29Mauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@redhat.com> Mostly due to ir-kdb-i2c, but also due to two new drivers, compilation with kernels older than 2.6.29 were broken. This quick and dirty changeset, generated semi-automatically, restaures backport to the subsystem by adding lots of #ifs. It is possible to write a much more small changeset that would restore backport without adding so many ifs, but, due to the lack of time, this will also solve it. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-05-13ir-kbd-i2c: Don't assume all IR receivers are supportedMauro Carvalho Chehab
From: Jean Delvare <khali@linux-fr.org> The code in ir_probe makes the dangerous assumption that all IR receivers are supported by the driver. The new i2c model makes it possible for bridge drivers to instantiate IR devices before they are supported, therefore the ir-kbd-i2c drivers must be made more robust to not spam the logs or even crash on unsupported IR devices. Simply, the driver will not bind to the unsupported devices. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-05-13ir-kbd-i2c: Use initialization dataMauro Carvalho Chehab
From: Jean Delvare <khali@linux-fr.org> For specific boards, pass initialization data to ir-kbd-i2c instead of modifying the settings after the device is initialized. This is more efficient and easier to read. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-05-13ir-kbd-i2c: Switch to the new-style device binding modelMauro Carvalho Chehab
From: Jean Delvare <khali@linux-fr.org> Let card drivers probe for IR receiver devices and instantiate them if found. Ultimately it would be better if we could stop probing completely, but I suspect this won't be possible for all card types. There's certainly room for cleanups. For example, some drivers are sharing I2C adapter IDs, so they also had to share the list of I2C addresses being probed for an IR receiver. Now that each driver explicitly says which addresses should be probed, maybe some addresses can be dropped from some drivers. Also, the special cases in saa7134-i2c should probably be handled on a per-board basis. This would be more efficient and less risky than always probing extra addresses on all boards. I'll give it a try later. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-05-13ir-kbd-i2c: Don't use i2c_client.name for our own needsMauro Carvalho Chehab
From: Jean Delvare <khali@linux-fr.org> In the standard device driver binding model, the name field of struct i2c_client is used to match devices to their drivers, so we must stop using it for internal purposes. Define a separate field in struct IR_i2c as a replacement, and use it. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-03-11ir-kbd-i2c: fix compat for old kernels.Hans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> compat.h was included too late. Priority: normal Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2009-03-07ir-kbd-i2c: Prevent general protection fault on rmmodMauro Carvalho Chehab
From: Jean Delvare <khali@linux-fr.org> The removal of the timer which polls the infrared input is racy. Replacing the timer with a delayed work solves the problem. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-03-11Revert the last changeset, since there are a rev 2 of those changesMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-03-05Fix race in infrared polling on rmmodMauro Carvalho Chehab
From: Jean Delvare <khali@linux-fr.org> The race on rmmod I just fixed in cx88-input affects 3 other drivers. Fix these the same way. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-02-12Added support for AVerMedia Cardbus Hybrid remote controlMauro Carvalho Chehab
From: Oldřich Jedlička <oldium.pro@seznam.cz> Added support for I2C device at address 0x40 and subaddress 0x0d/0x0b that provides remote control key reading support for AVerMedia Cardbus Hybrid card, possibly for other AVerMedia Cardbus cards. The I2C address 0x40 doesn't like the SAA7134's 0xfd quirk, so it was disabled. Signed-off-by: Oldřich Jedlička <oldium.pro@seznam.cz> [mchehab@redhat.com: CodingStyle fixes] Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-10-30V4L: struct device - replace bus_id with dev_name(), dev_set_name()Mauro Carvalho Chehab
From: Kay Sievers <kay.sievers@vrfy.org> This patch is part of a larger patch series which will remove the "char bus_id[20]" name string from struct device. The device name is managed in the kobject anyway, and without any size limitation, and just needlessly copied into "struct device". To set and read the device name dev_name(dev) and dev_set_name(dev) must be used. If your code uses static kobjects, which it shouldn't do, "const char *init_name" can be used to statically provide the name the registered device should have. At registration time, the init_name field is cleared, to enforce the use of dev_name(dev) to access the device name at a later time. We need to get rid of all occurrences of bus_id in the entire tree to be able to enable the new interface. Please apply this patch, and possibly convert any remaining remaining occurrences of bus_id. We want to submit a patch to -next, which will remove bus_id from "struct device", to find the remaining pieces to convert, and finally switch over to the new api, which will remove the 20 bytes array and does no longer have a size limitation. Thanks, Kay Acked-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-Off-By: Kay Sievers <kay.sievers@vrfy.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-10-13Add support for MSI TV@nywhere Plus remoteMauro Carvalho Chehab
From: Brian Rogers <brian_rogers@comcast.net> The IR controller has a couple quirks. It won't respond until some other device on the bus is probed. To work around that, probe 0x50 first. Then, since it won't respond to a zero-byte read, probe with a one-byte read. Signed-off-by: Brian Rogers <brian_rogers@comcast.net> [mchehab.redhat.com: Fix merge conflicts and remove an unused var] Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-21HVR3000/4000 Hauppauge related IR cleanupsSteven Toth
From: Darron Broad <darron@kewl.org> From the author: This patch-set fixes remote control issues I have experienced with hauppauge drivers in Linux since the PVR-350 and now with both a NOVA-S+ and HVR-4000. It has also been confirmed to work with an HVR-1300 user who had exactly the same issue. Hauppage remote controls use RC5. RC5 has a bit-field which represents the target device. The hauppauge windows drivers have a registry key which can enable filtering, but the linux drivers will accept any target device in this bit field for internal processing. This causes problems with setups such as mythtv where remote control key presses destined for the TV (target = 0) are interpreted by the kernel and subsequenctly LIRC then mythtv. Of the remote controls I have to hand (wintv black, pvr/hvr silver) the hauppauge remotes send one of two device targets ids, these are interpreted by the patch which then filters out any non hauppauge addresses. Priority: normal Signed-off-by: Steven Toth <stoth@linuxtv.org> Signed-off-by: Darron Broad <darron@kewl.org>
2008-07-17saa7134: Fix Kbuild dependency of ir-kbd-i2cMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Currently, saa7134 is dependent of ir-kbd-i2c, since it uses a symbol that is defined there. However, as this symbol is used only on saa7134, there's no sense on keeping it defined there (or on ir-commons). So, let's move it to saa7134 and remove one symbol for being exported. Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-07-08v4l-dvb: remove support for kernels < 2.6.16Hans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> Phase 4 removes the compatibility support for kernels < 2.6.16. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2008-07-08v4l-dvb: remove support for kernels < 2.6.0Hans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> First phase of the backwards compatibility cleanup: stop supporting kernels older than 2.6.0. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2008-04-26backport commit d3135846f6c1858dbad6ccb780a42e6c98953e6dMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> kernel-sync: Author: Matthew Wilcox <matthew@wil.cx> drivers: Remove unnecessary inclusions of asm/semaphore.h None of these files use any of the functionality promised by asm/semaphore.h. It's possible that they rely on it dragging in some unrelated header file, but I can't build all these files, so we'll have fix any build failures as they come up. Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-04-25 ir-kbd-i2c: Save a temporary memory allocation in ir_probeMauro Carvalho Chehab
From: Jean Delvare <khali@linux-fr.org> Using i2c_transfer instead of i2c_master_recv in ir_probe saves a temporary memory allocation. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-04-08media/video/ replace remaining __FUNCTION__ occurrencesMichael Krufky
From: Harvey Harrison <harvey.harrison@gmail.com> __FUNCTION__ is gcc-specific, use __func__ Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
2008-03-10ir-kbd-i2c: Minor optimization in ir_probeMauro Carvalho Chehab
From: Jean Delvare <khali@linux-fr.org> This saves an initialization and a comparison. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-25limit stack usage of ir-kbd-i2c.cMauro Carvalho Chehab
From: Marcin Slusarz <marcin.slusarz@gmail.com> ir_probe allocated struct i2c_client on stack; it's pretty big structure, so allocate it with kzalloc make checkstack output without this patch: x059d ir_probe [ir-kbd-i2c]: 1000 Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-01-27[PATCH] static memoryDouglas Schilling Landgraf
From: Douglas Schilling Landgraf <dougsland@gmail.com> - Static memory is always initialized with 0. - Replaced in some cases C99 comments for /* */ Signed-off-by: Douglas Schilling Landgraf <dougsland@gmail.com>
2008-01-07Add Beholder TV 401/405/407/409/505/507/609/M6 supportMauro Carvalho Chehab
From: Andrey J. Melnikoff (TEMHOTA) <temnota@kmv.ru> This patch updates cardlist for Beholder TV tuners: old models (with GPIO ir) 401, 403, 405, 407, 409, 505, 507 and add support for 607, 609, M6 cards with new i2c-ir. Signed-off-by: Igor Kuznetsov <igk72@yandex.ru> Signed-off-by: Andrey J. Melnikov <temnota@kmv.ru> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2007-10-15ir-kbd-i2c: Missing break statementTrent Piepho
From: Trent Piepho <xyzzy@speakeasy.org> Someone added a new case without adding a break to the one before it. Thanks to Margus <b-berski at mbox200 dot swipnet dot se> for spotting this. Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
2007-09-08cx23885: add support for DViCO FusionHDTV 5 ExpressMichael Krufky
From: Michael Krufky <mkrufky@linuxtv.org> This patch adds digital ATSC / QAM support for the DViCO FusionHDTV5 Express. Remote control is supported by ir-kbd-i2c, RTC is supported by rtc-isl1208. Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
2007-08-24Clean up FusionHDTV ir codeMichael Krufky
From: Michael Krufky <mkrufky@linuxtv.org> - fixed missing buttons in keymap. - make function names & descriptions more generic, since this same ir receiver and remote is used in many FusionHDTV products. - miscellaneous cleanups. Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
2007-08-24add IR remote support for FusionHDTV 5 RT GoldMichael Krufky
From: Chaogui Zhang <czhang1974@gmail.com> This patch adds support for the built-in IR receiver of the DViCO Fusion HDTV5 RT GOLD PCI card, using FusionHDTV MCE remote controller. Signed-off-by: Chaogui Zhang <czhang1974@gmail.com> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
2007-08-21Cleanup: remove linux/moduleparam.h from drivers/media filesMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Since at least kernel 2.6.12-rc2, module.h includes moduleparm.h. This patch removes all occurences of moduleparm.h from drivers/media files. Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2007-06-25ir-kbd-i2c: add support for Hauppauge HVR1300 remoteMichael Krufky
From: Jan Frey <jfrey@gmx.de> - add support for the I2C based IR transceiver of the Hauppauge HVR-1300 - remove bad code from cx88-input.c Signed-off-by: Jan Frey <jfrey@gmx.de> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
2007-05-21V4L: ir-kbd-i2c - switch to using msecs_to_jiffies()Mauro Carvalho Chehab
From: Dmitry Torokhov <dtor@insightbb.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2007-03-29Use ARRAY_SIZE instead of a magic numberMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2007-02-21Backport of git changeset cd354f1ae75e6466a7e31b727faede57a1f89ca5Mauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Backport a changeset from Schmielau <tim@physik3.uni-rostock.de> that removes uneeded includes for linux/sched.h Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2007-01-30compat: Handle input_register_device() change and some othersTrent Piepho
From: Trent Piepho <xyzzy@speakeasy.org> input_register_device() was changed to return an error code instead of being void in 2.6.15. Handle it with a macro wrapper in config.h. For this to work, linux/input.h must be included before config.h. This required some trivial header re-ordering in budget-ci.c and ttusb_dec.c. In kernel 2.6.15-rc1 a helper function called setup_timer() was added to linux/timer.h. Add to compat.h, but require that linux/timer.h be included first to give the definition of struct timer_list. A new 4GB DMA zone, __GFP_DMA32, was added in 2.6.15-rc2. Alias it to __GFP_DMA on older kernels. Handle another 2.6.15 "input_dev->dev to input_dev->cdev.dev" change for some recently added code in cinergyT2.c. Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
2006-12-16Several stuff backported from 2.6.19-git seriesMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> - INIT_WORK replaced by INIT_DELAYED_WORK - struct work_struct replaced by struct delayed_work - callback parameters also changed - SLAB_KERNEL replaced by GFP_KERNEL - linux/suspend.h replaced by linux/freezer.h - on cpia: INIT_WORK replaced by INIT_WORK_NAR - file->f_dentry->d_inode replaced by file->f_path.dentry->d_inode Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2006-11-29saa7134: add support for remote control of Hauppauge HVR1110Michael Krufky
From: Thomas Genty <tomlohave@gmail.com> This patch adds support for the remote control bundled with the Hauppauge HVR1110 Signed-off-by: Thomas Genty <tomlohave@gmail.com> Signed-off-by: Nickolay V. Shmyrev <nshmyrev@yandex.ru> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
2006-11-20Handle errors from input_register_device()Mauro Carvalho Chehab
From: Dmitry Torokhov <dtor@insightbb.com> Also sprinkled some input_sync() throughout the code. Signed-off-by: Dmitry Torokhov <dtor@mail.ru> 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: Mauro Carvalho Chehab <mchehab@infradead.org>
2006-09-26Allow RC5 codes 64 - 127 in ir-kbd-i2c.cMauro Carvalho Chehab
From: David Hardeman <david@hardeman.nu> The RC5 coding has for a long time supported commands 64-127 in addition to 0-63. This is controlled by the second bit of the RC5 packet (see The attached patch modifies ir-kbd-i2c.c to allow for commands 64-127, tested with a PVR350 card in combination with a programmable remote. Signed-off-by: David Hardeman <david@hardeman.nu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2006-05-18merge: from masterrmcc@localhost.localdomain
From: Ricardo Cerqueira <v4l@cerqueira.org> merging master changes Signed-off-by: Ricardo Cerqueira <v4l@cerqueira.org>
2006-04-11Since we are not using CVS, $Id makes no sense anymoreMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2006-03-31Previous change for cx2341X boards broke the remote supportHans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> Partially revert previous change to fix IR support. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2006-03-26Subject: Pinnacle PCTV grey remote control supportRicardo Cerqueira
From: Sylvain Pasche <sylvain.pasche@gmail.com> This adds support for the older (?) Pinnacle PCTV remotes (with all buttons colored in grey). There's no autodetection for the type of remote, though; saa7134 defaults to the colored one, to use the grey remote the "pinnacle_remote=1" option must be passed to the saa7134 module Signed-off-by: Sylvain Pasche <sylvain.pasche@gmail.com> Signed-off-by: Ricardo Cerqueira <v4l@cerqueira.org>
2006-03-25Add support for I2C_HW_B_CX2341X board adapterHans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> - Add missing class check to tveeprom_attach_adapter. - Add CX2341X specific IR probe address list. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2006-01-17IR cleanups and consistency adjustmentsRicardo Cerqueira
From: Ricardo Cerqueira <v4l@cerqueira.org> Changed all IR codes to hex, all, keymaps were renamed to ir_codes_<model>, and cleaned a duplicate entry Signed-off-by: Ricardo Cerqueira <v4l@cerqueira.org>
2006-01-17IR keymaps are exported by the ir-common module nowRicardo Cerqueira
From: Ricardo Cerqueira <v4l@cerqueira.org> Moved keymaps to the ir-common module, and export them from there, instead of #including them in each module Signed-off-by: Ricardo Cerqueira <v4l@cerqueira.org>
2006-01-17Hauppauge Grey Remote supportRicardo Cerqueira
From: J.O. Aho <trizt@iname.com> For the Hauppauge PVR cards there are at least two different remotes, one completly black and one that is Grey and black, they keys differ in values eg Black remotes 'mute' has the same value as Grey remotes 'menu'. This enables the user to select which keymapping to use by using the hauppauge parm. Unlike to the black remote keys, all keys are mapped for the grey remote and the ATi usb remote mappings has been followed. Signed-off-by: Ricardo Cerqueira <v4l@cerqueira.org>