summaryrefslogtreecommitdiff
path: root/linux/drivers/media/video/bt8xx
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-08-22Add remote support to cph03x bttv cardMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@redhat.com> Hello kernel developers. I found a bug report from an user in launchpad. I just copy it here. It includes patch. I don't own the necessary hardware to test it but the patch looks trivial. I'm not subscribed to this list, so please CC me. Thanks! Here is the text: """ remote control for my tv card doesnt work I have Askey CPH03x TV Capturer. When I load bttv module with "card=59" option which is proper for this tv card, I can watch tv with sound but my remote control doesnt work. There is no ir event in /proc/bus/input/device . When bttv module is loaded with "card=137" option remote control works very well. $ cat /proc/bus/input/devices ....... ........ : Bus=0001 Vendor=109e Product=0350 Version=0001 N: Name="bttv IR (card=137)" P: Phys=pci-0000:00:0d.0/ir0 S: Sysfs=/devices/pci0000:00/0000:00:0d.0/input/input144 U: Uniq= H: Handlers=kbd event6 B: EV=100003 B: KEY=2c0814 100004 0 0 0 4 2008000 2090 2001 1e0000 4400 0 ffc Unfortunately there is no sound. """ https://bugs.launchpad.net/ubuntu/+bug/239733 http://bugzilla.kernel.org/show_bug.cgi?id=11995 -- Priority: normal Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-08-10v4l: simplify v4l2_i2c_new_subdev and friendsHans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> Rewrite v4l2_i2c_new_subdev as a simplified version of v4l2_i2c_new_subdev_cfg and remove v4l2_i2c_new_probed_subdev and v4l2_i2c_new_probed_subdev_addr. This simplifies this API substantially. Priority: normal Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2009-06-19Stop defining I2C adapter IDs nobody usesMauro Carvalho Chehab
From: Jean Delvare <khali@linux-fr.org> There is no point in defining I2C adapter IDs when no code is using them. As this field might go away in the future, stop using it when we don't need to. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-07-21backport commit 405f55712dfe464b3240d7816cc4fe4174831be2Mauro Carvalho Chehab
kernel-sync: Author: Alexey Dobriyan <adobriyan@gmail.com> Date: Sat Jul 11 22:08:37 2009 +0400 headers: smp_lock.h redux * Remove smp_lock.h from files which don't need it (including some headers!) * Add smp_lock.h to files which do need it * Make smp_lock.h include conditional in hardirq.h It's needed only for one kernel_locked() usage which is under CONFIG_PREEMPT This will make hardirq.h inclusion cheaper for every PREEMPT=n config (which includes allmodconfig/allyesconfig, BTW) Priority: normal Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-07-20bttv: fix regression: tvaudio must be loaded before tunerHans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> Both tvaudio and the tuner share i2c address 0x42. The tvaudio module can check whether it really is a tda9840, but the tuner can't. So the tvaudio module must be loaded before the tuner module. This was also the case for 2.6.29, but the order was swapped in 2.6.30. Thanks to Krzysztof Grygiencz for reporting and testing this. Priority: high Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2009-07-10merge: http://www.linuxtv.org/hg/~hverkuil/v4l-dvb-rdsMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-07-05bttv and meye: Use PCI_VDEVICEDouglas Schilling Landgraf
From: Joe Perches <joe@perches.com> Priority: normal Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
2009-06-20bttv: set RDS capability if applicable.Hans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> Priority: normal Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2009-06-16poll method lose race conditionMauro Carvalho Chehab
From: Figo.zhang <figo1802@gmail.com> bttv-driver.c,cx23885-video.c,cx88-video.c: poll method lose race condition for capture video. Signed-off-by: Figo.zhang <figo1802@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-05-28bt8xx: remove always false ifDouglas Schilling Landgraf
From: Filipe Rosset <rosset.filipe@gmail.com> Remove always false if over unsigned int variable Priority: normal Signed-off-by: Filipe Rosset <rosset.filipe@gmail.com> Signed-off-by: Douglas Schilling Landgraf <dougsland@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-18minor have assigned value twiceMauro Carvalho Chehab
From: figo.zhang <figo.zhang@kolorific.com> The variable minor have assigned value twice, the first time is in the initial "video_device" data struct in those drivers, pls see saa7134-video.c,line 2503. --- Signed-off-by: Figo.zhang <figo.zhang@kolorific.com> 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-04-14backport commit 284901a90a9e0b812ca3f5f852cbbfb60d10249dMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@redhat.com> Author: Yang Hongyang <yanghy@cn.fujitsu.com> Date: Mon Apr 6 19:01:15 2009 -0700 dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) Replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) Priority: normal Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-02v4l2-subdev: change s_routing prototypeHans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> It is no longer needed to use a struct pointer as argument, since v4l2_subdev doesn't require that ioctl-like approach anymore. Instead just pass the input, output and config (new!) arguments directly. Priority: normal Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2009-04-01v4l: increase version numbers of drivers converted to v4l2_subdev.Hans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> With all the v4l2_subdev changes that were made to these drivers it is a good idea to increase the version number of each driver. It's just the patch level that is increased, except for the zoran and saa7146 drivers where the minor number was increased due to the more substantial changes that were made to those two drivers. Priority: normal Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2009-04-01tvaudio.h: add static inline to retrieve the list of possible i2c addrs.Hans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> Rather than duplicating this list everywhere, just put it in tvaudio.h. Priority: normal Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2009-03-30v4l2: use v4l2_i2c_new_probed_subdev_addr where appropriate.Hans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> Priority: normal Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2009-04-01v4l2-common: add explicit v4l2_device pointer as first arg to ↵Hans Verkuil
new_(probed)_subdev From: Hans Verkuil <hverkuil@xs4all.nl> The functions v4l2_i2c_new_subdev and v4l2_i2c_new_probed_subdev relied on i2c_get_adapdata to return the v4l2_device. However, this is not always possible on embedded platforms. So modify the API to pass the v4l2_device pointer explicitly. Priority: normal Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2009-03-30v4l2: use old-style i2c API for kernels < 2.6.26 instead of < 2.6.22Hans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> Originally the intention was to switch to the new style i2c API starting with the introduction of the API in 2.6.22. However, the i2c_new_probed_device() function has a lethal bug that wasn't fixed until 2.6.25. Or more accurately, it was only fixed in the stable series of 2.6.25 and 2.6.26. Given the fact that the new i2c API also changed starting with 2.6.26 (the addition of i2c_device_id), it is easiest to switch APIs starting with 2.6.26. This patch updates all the legacy code accordingly. Priority: normal Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2009-04-01v4l2-subdev: move s_std from tuner to core.Hans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> s_std didn't belong in the tuner ops. Stricly speaking it should be part of the video ops, but it is used by audio and tuner devices as well, so it is more efficient to make it part of the core ops. Priority: normal Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2009-03-29bttv: move saa6588 config to the helper chip configHans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> saa6588 can also be used by other drivers than just bttv. Move it to a new RDS decoders category and add it as helper chip to bttv. Priority: normal Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2009-03-29merge: http://www.linuxtv.org/hg/~hverkuil/v4l-dvb-bttvMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-03-28bttv: Remove buffer type check from vidioc_g_parmTrent Piepho
From: Trent Piepho <xyzzy@speakeasy.org> The v4l2-ioctl core only allows buffer types for which the corresponding ->vidioc_try_fmt_xxx() methods are defined to be used with vidioc_(q|dq|query)bufs(), vidioc_reqbufs() and now vidioc_(s|g)_parm. The driver was only allowing VIDEO_CAPTURE buffers for g_parm, but since the driver defines ->vidioc_try_fmt_vid_overlay() and ->vidioc_try_fmt_vbi_cap() it will now allow VIDEO_OVERLAY and VBI_CAPTURE buffers as well. This should be fine as the driver only fills in the frame rate field, which is just as valid for video overlay and vbi capture as it is for video capture. Priority: normal Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
2009-03-28bttv: tda9875 is no longer used by bttv, so remove from bt8xx/Kconfig.Hans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> Since tda9875 support was merged into tvaudio the bttv driver no longer needs tda9875 as helper driver. Priority: normal Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2009-03-28bttv: convert to v4l2_subdev since i2c autoprobing will disappear.Hans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> Since i2c autoprobing will disappear bttv needs to be converted to use v4l2_subdev instead. Without autoprobing the autoload module option has become obsolete. A warning is generated if it is set, but it is otherwise ignored. Since the bttv card definitions are of questionable value a new option was introduced to allow the user to control which audio module is selected: msp3400, tda7432 or tvaudio (or none at all). By default bttv will use the card definitions and fallback on tvaudio as the last resort. If no audio device was found a warning is printed. The saa6588 RDS device is now also explicitly probed since it is no longer possible to autoprobe it. A new saa6588 module option was added to override the card definition since I suspect more cards have this device than one would guess from the card definitions. Note that the probe addresses of the i2c modules are hardcoded in this driver. Once all v4l drivers are converted to v4l2_subdev this will be cleaned up. Such data belongs in an i2c driver header. Priority: normal Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2009-03-13Add support for ProVideo PV-183 to bttvMauro Carvalho Chehab
From: Alan McIvor <alan.mcivor@reveal.co.nz> Add support for ProVideo PV-183 to bttv This patch adds support for the ProVideo PV-183 card to the bttv device driver. The PV-183 is a PCI card with 8 BT878 devices plus a Hint Corp HiNT HB4 PCI-PCI Bridge. Each BT878 has two composite input channels available. There are no tuners on this card. Priority: normal Signed-off-by: Alan McIvor <alan.mcivor@reveal.co.nz> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-03-14v4l-dvb: replace remaining references to the old mailinglist.Mauro Carvalho Chehab
From: Hans Verkuil <hverkuil@xs4all.nl> Priority: normal Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-03-14bttv: convert to v4l2_device.Mauro Carvalho Chehab
From: Hans Verkuil <hverkuil@xs4all.nl> Priority: normal Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-03-11Conceptronic CTVFMI2 PCI IdMauro Carvalho Chehab
From: Robert Millan <rmh@aybabtu.com> My BTTV_BOARD_CONCEPTRONIC_CTVFMI2 card wasn't auto-detected, here's a patch that adds its PCI id. lspci -nnv output: 05:06.0 Multimedia video controller [0400]: Brooktree Corporation Bt878 Video Capture [109e:036e] (rev 11) 05:06.1 Multimedia controller [0480]: Brooktree Corporation Bt878 Audio Capture [109e:0878] (rev 11) Press <break> within 3 seconds if this is wrong. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-03-10merge: http://www.linuxtv.org/hg/~hverkuil/v4l-dvbMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@redhat.com> Priority: normal Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-03-10avoid loading the entire videodev.h header for drivers that are already V4L2 ↵Mauro Carvalho Chehab
only From: Mauro Carvalho Chehab <mchehab@redhat.com> Priority: normal Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-03-06bttv: fix compile warnings for kernels < 2.6.20.Hans Verkuil
From: Hans Verkuil <hverkuil@xs4all.nl> Priority: normal Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2009-03-03Add support for GeoVision GV-800(S)Mauro Carvalho Chehab
From: Bruno Christo <brunochristo@gmail.com> Signed-off-by: Bruno Christo <bchristo@inf.ufsm.br> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-03-03bttv: Don't need to zero ioctl parameter fieldsTrent Piepho
From: Trent Piepho <xyzzy@speakeasy.org> The v4l2 core code in v4l2_ioctl will zero out the structure the driver is supposed to fill in for read-only ioctls. For read/write ioctls, all the fields which aren't supplied from userspace will be zeroed out. Zeroing code is removed from enum_input and g_tuner. Priority: normal Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
2009-03-03v4l2: New function v4l2_video_std_frame_periodTrent Piepho
From: Trent Piepho <xyzzy@speakeasy.org> Some code was calling v4l2_video_std_construct() when all it cared about was the frame period. So make a function that just returns that and have v4l2_video_std_construct() use it. At this point there are no users of v4l2_video_std_construct() left outside of v4l2-ioctl, so it could be un-exported and made static. Change v4l2_video_std_construct() so that it doesn't zero out the struct v4l2_standard passed in. It's already been zeroed out in the common ioctl code. Priority: normal Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
2009-01-28bttv: dynamically allocate device dataTrent Piepho
From: Trent Piepho <xyzzy@speakeasy.org> The bttv driver had static array of structures for up to 16 possible bttv devices, even though few users have more than one or two. The structures were quite large and this resulted in a huge BSS segment. Change the driver to allocate the bttv device data dynamically, which changes "struct bttv bttvs[BTTV_MAX]" to "struct bttv *bttvs[BTTV_MAX]". It would be nice to get ride of "bttvs" entirely but there are some complications with gpio access from the audio & mpeg drivers. To help bttvs removal along anyway, I changed the open() methods use the video device's drvdata to get the driver data instead of looking it up in the bttvs array. This is also more efficient. Some WARN_ON()s are added in cases the device node exists by the bttv device doesn't, which I don't think should be possible. The gpio access functions need to check if bttvs[card] is NULL now. Though calling them on a non-existent card in the first place is wrong, but hard to solve given the fundamental problems in how the gpio access code works. This patch reduces the bss size by 66560 bytes on ia32. Overall change is a reduction of 66398 bytes, as the WARN_ON()s add some 198 bytes. Priority: normal Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
2009-01-28bttv: shrink muxsel data in card databaseTrent Piepho
From: Trent Piepho <xyzzy@speakeasy.org> Over half of the card database was used to store muxsel data. 64 bytes were used to store one 32 bit word for each of up to 16 inputs. The Bt8x8 only has two bits to control its mux, so muxsel data for 16 inputs will fit into a single 32 bit word. There were a couple cards that had special muxsel data that didn't fit in two bits, but I cleaned them up in earlier patches. Unfortunately, C doesn't allow us to have an array of bit fields. This makes initializing the structure more of a pain. But with some cpp magic, we can do it by changing: .muxsel = { 2, 3, 0, 1 }, .muxsel = { 2, 2, 2, 2, 3, 3, 3, 3, 1, 1 }, Into: .muxsel = MUXSEL(2, 3, 0, 1), .muxsel = MUXSEL(2, 2, 2, 2, 3, 3, 3, 3, 1, 1), That's not so bad. MUXSEL is a fancy macro that packs the arguments (of which there can be one to sixteen!) into a single word two bits at a time. It's a compile time constant (a variadic function wouldn't be) so we can use it to initialize the structure. It's important the the arguments to the macro only be plain decimal integers. Stuff like "0x01", "(2)", or "MUX3" won't work properly. I also created an accessor function, bttv_muxsel(btv, input), that gets the mux bits for the selected input. It makes it cleaner to change the way the muxsel data is stored. This patch doesn't change the code size and decreases the datasegment by 9440 bytes. Priority: normal Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
2009-01-28bttv: clean up mux code for IDS EagleTrent Piepho
From: Trent Piepho <xyzzy@speakeasy.org> This card apparently uses an external mux and the Bt878's mux should always be set to MUX2. The values for the external mux control bits were stored in the muxsel field. This meant that when changing inputs the driver would switch the Bt878's mux to whatever value the external mux was supposed to be set to, then eagle_muxsel() would switch it back to MUX2 and program the external mux. This creates an unnecessary switch of the Bt878's mux. So change muxsel to be 2 for each input. The external mux bits are just "input&3" so they don't really need to be stored anywhere. This also eliminates the last non-standard use of the muxsel data. Priority: normal Signed-off-by: Trent Piepho <xyzzy@speakeasy.org> CC: M G Berberich <berberic@fmi.uni-passau.de>
2009-01-28bttv: fix external mux for RemoteVision MXTrent Piepho
From: Trent Piepho <xyzzy@speakeasy.org> Old versions of the bttv driver would use the high nibble of an input's muxsel value to program the GPIO lines enabled via gpiomask2. Apparently this was supposed to be for switching external audio muxes. Anyway, the code that did this was removed sometime in the pre-git 2.6 series. The RemoteVision MX board used this feature to control an external video mux and I guess no one noticed when they removed the code. Move the extra gpio mux data out of the high nibble of muxsel and to rv605_muxsel(), then have that function set the gpio lines with it. From looking at the CD22M3494E datasheet, it seems like the mdelay(1) is a much longer delay than necessary. It looks like only around 20 ns is necessary. Priority: normal Signed-off-by: Trent Piepho <xyzzy@speakeasy.org> CC: Miguel Freitas <miguel@cetuc.puc-rio.br>
2009-01-28bttv: fix external mux for PHYTEC VD-009Trent Piepho
From: Trent Piepho <xyzzy@speakeasy.org> Old versions of the bttv driver would use the high nibble of an input's muxsel value to program the GPIO lines enabled via gpiomask2. Apparently this was supposed to be for switching external audio muxes. Anyway, the code that did this was removed sometime in the pre-git 2.6 series. These phytec boards used this feature to control an external video mux and I guess no one noticed when they removed the code. So add a muxsel_hook for these boards that does the necessary gpio setting. BTW, I doubt the needs_tvaudio setting for these cards is correct. Priority: normal Signed-off-by: Trent Piepho <xyzzy@speakeasy.org> CC: Dirk Heer <d.heer@phytec.de>
2009-01-28bttv: clean up mux code for IVC-120GTrent Piepho
From: Trent Piepho <xyzzy@speakeasy.org> The card data for BTTV_BOARD_IVC120 set muxsel to a bunch of bogus values (1 to 16), which the common mux code would use to set the Bt878's mux to some random value. Then the custom code in ivc120_muxsel() would change the Bt878's mux to the right value (always MUX0). Better to just make the muxsel data correct (all zeros, easy!) and get the mux right to begin with. Then the extra Bt878 mux setting code in ivc120_muxsel() can be eliminated (the rest of the code for the IVC-120G's external mux is still there of course). This will help me clean up muxsel for some other changes. It should also get rid of an unnecessary mux switch when changing from certain inputs to certain other inputs on the IVC-120G. Priority: normal Signed-off-by: Trent Piepho <xyzzy@speakeasy.org> CC: Alan Garfield <alan@fromorbit.com>
2009-01-28bttv: rework the way digital inputs are indicatedTrent Piepho
From: Trent Piepho <xyzzy@speakeasy.org> The code was using a muxsel value of -1U to indicate a digital input. A couple places in were checking of muxsel < 0 to detect this, which doesn't work of course because muxsel is unsigned and can't be negative. Only a couple cards had digital inputs and it was always the last one, so for the card database create a one bit field that indicates the last input is digital. On init, this is used to set a new field in the bttv struct to the digital input's number or UNSET for none. This makes it easier to check if the current input is digital. Priority: normal Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
2009-01-28bttv: store card database more efficientlyTrent Piepho
From: Trent Piepho <xyzzy@speakeasy.org> The bttv card database is quite large and the data structure used to store it wasn't very efficient. Most of the field are only used at card initialization time so it doesn't matter if they aren't efficient to access. Overall the changes reduce code size by 60 bytes in ia32. The data size is decreased by 5024 byes. It is probably even more for 64-bit kernels. Move the fields in the struct around to be sorted from largest to smallest. This saves on padding space used for alignment. Get rid of the unused digital_mode field. Leave the setting as a comment in the few cards entries that set it, in case someone ever writes the code. Get rid of the unused audio_inputs field. Leave the values in the card entries in case someone ever writes code that might use it. Get ride of the unused radio_addr field. No card entries even set it to anything interesting so it's not left as comments. All the code that used it was removed in commit v2.6.14-3466-g291d1d7 from Nov 8th 2005. Reduce video_inputs to u8 as no card has more than 255 inputs (the most is 16). Change tuner_addr to u8. I2C addresses are only seven bits and 255 means ADDR_UNSET, so everything fits. Make has_radio a one bit flag. Make the pll setting a two bit field. Reduce svhs to four bits as no card has an s-video input above 9. Change the value for no s-video input from UNSET (which is -1U and out of range of four bits) to NO_SVHS (which is now 15). Priority: normal Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
2009-01-28bttv: make tuner card info more consistentTrent Piepho
From: Trent Piepho <xyzzy@speakeasy.org> The bttv card database structure had a "tuner" field that was the input number of the tuner input or UNSET for no tuner. However, the only values it could ever be are 0 and UNSET. Having a tuner on an input other than 0 didn't work and was never used. There is also a "tuner_type" field that can be set to TUNER_ABSENT to indicate no tuner, which makes "tuner = UNSET" redundant. In many cases, tuner_type was set to UNSET when there was no tuner, which isn't quite correct. tuner_type == UNSET is supposed to mean the tuner type isn't yet known. So, I changed cards where "tuner == UNSET" to always have tuner_type of TUNER_ABSENT. At this point the tuner field is redundant, so I deleted it. I have the card setup code set the card's tuner_type (not the card type's tuner_type!) to TUNER_ABSENT if it hasn't yet been set at the end of the setup code. Various places that check if the card has a tuner will now look for this instead of checking the card type's "tuner" field. Also autoload the tuner module before issuing the TUNER_SET_TYPE_ADDR I2C client call instead of after issuing it. Overall, on ia32 this decreases compiled code size by about 24 bytes and reduces the data size by 640 bytes. Priority: normal Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
2009-01-28bttv: Fix TDA9880 norm setting codeTrent Piepho
From: Trent Piepho <xyzzy@speakeasy.org> The code to set the norm for the TDA9880 analog demod was comparing btv->norm, an index into the bttv driver's norm array, to V4L2_STD_NTSC, which is a bit flag that's part of the V4L2 API. This doesn't work of course and results in the PAL path always being taken. What's more, it modified the bttv_tvcards[] entries for cards using the TDA9880. This is wrong because changing the norm on one card will also affect other cards of the same type. Writing to bttv_tvcards is also bad because it should be read-only or even devinitdata. Changing the norm would also cause the audio to become unmuted. Have the code get called for both norm setting and audio input setting (which where the gpios are set) to avoid needed to modify bttv_tvcards. Priority: normal Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
2009-01-28bttv: norm value should be unsignedTrent Piepho
From: Trent Piepho <xyzzy@speakeasy.org> The norm value in the driver is an index into an array and the the driver doesn't allow it to be negative or otherwise invalid. It should be unsigned but wasn't in all places. Fix some structs and functions to have the norm be unsigned. Get rid of useless checks for "< 0". Most of the driver code can't handle a norm value that's out of range, so change some ">= BTTV_TVNORMS" checks to BUG_ON(). There's no point in silently ignoring invalid driver state just to crash because of it later. Priority: normal Reported-by: Roel Kluin <roel.kluin@gmail.com> Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
2009-01-23bttv: Add support for IVCE-8784 support for V4L2 bttv driverMauro Carvalho Chehab
From: Douglas Kosovic <douglask@itee.uq.edu.au> It's a quad Bt878 PCI-e x1 capture board that's basically the same as the IVC-200 (quad Bt878 PCI) capture board that's currently supported in the V4L2 bttv driver. Manufacturer's web page for IVCE-8784 with photo and info: http://www.iei.com.tw/en/product_IPC.asp?model=IVCE-8784 Signed-off-by: Douglas Kosovic <douglask@itee.uq.edu.au> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-01-02Missing v4l2_prio_close in radio_releaseMauro Carvalho Chehab
From: Udo Steinberg <udo@hypervisor.org> The radio_release function of the BTTV driver is missing a call to v4l2_prio_close. As a result, after the radio device has been opened at least once (e.g., by HAL during bootup), v4l2_priority will never drop below V4L2_PRIORITY_INTERACTIVE again. With the following patch against 2.6.28, applications that run with V4L2_PRIORITY_BACKGROUND are able to open devices again. Previous Linux versions are affected as well. Signed-off-by: Udo Steinberg <udo@hypervisor.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>