summaryrefslogtreecommitdiff
path: root/linux/drivers/media/video
AgeCommit message (Collapse)Author
2008-10-10USB: remove info() macro from usb media driversMauro Carvalho Chehab
From: Greg Kroah-Hartman <gregkh@suse.de> USB should not be having it's own printk macros, so remove info() and use the system-wide standard of dev_info() wherever possible. Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> CC: Douglas Landgraf <dougsland@gmail.com> CC: Mike Isely <isely@pobox.com> CC: Thierry Merle <thierry.merle@free.fr> CC: Antoine Jacquet <royale@zerezo.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-10-11af9013/m5602: Fix compilation at in-kernelMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@redhat.com> This patch fixes a few errors that were breaking in-kernel compilation. The first one were at m5602 that were including "gspca.h" from another directory. A trivial change at m5602/Makefile fixed the issue. A harder to fix error were caused by the fact that both af9013 and m5602 were declaring an external var called 'debug'. If you compile both modules in-kernel, you'll have troubles. This is even worse, since there are two other drivers outside the subsystem with a similar mistake. To make things worse, gcc do a very great job of fooling the developers, by blaming the wrong lines anf files when such error occurs. So, I was having errors like: drivers/media/dvb/built-in.o: In function `dvb_usercopy': /home/v4l/tokernel/git/drivers/media/dvb/dvb-core/dvbdev.c:403: multiple definition of `debug' drivers/media/video/built-in.o:/home/v4l/tokernel/git/drivers/media/video/bt819.c:264: first defined here or: drivers/media/dvb/built-in.o: In function `dvb_usercopy': /home/v4l/tokernel/git/drivers/media/dvb/dvb-core/dvbdev.c:403: multiple definition of `debug' drivers/media/video/built-in.o:/home/v4l/tokernel/git/drivers/media/video/vpx3220.c:125: first defined here The two above errors caused by m5602 driver. After fixing m5602, I got this: drivers/built-in.o: In function `SiS_SetGroup2': /home/v4l/tokernel/git/drivers/video/sis/init301.c:6996: multiple definition of `debug' arch/x86/kernel/built-in.o:/home/v4l/tokernel/git/arch/x86/kernel/entry_32.S:810: first defined here This one caused by af9013. This patch fixes those erros by prefixing the debug vars with the name of the module, without changing the name of the parameter. Next time, please prepend all extern vars with the name of the module. To avoid bisect troubles, I've folded those changes with the original commits that added those modules at my -git tree. kernel-sync: CC: Jean-Francois Moine <moinejf@free.fr> CC: Antti Palosaari <crope@iki.fi> CC: Erik Andrén <erik.andren@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-10-04saa7134: fixes for the Asus Tiger Revision 1.00Mauro Carvalho Chehab
From: Hermann Pitton <hermann-pitton@arcor.de> In opposite to the P7131 Dual this early OEM card has a male radio antenna connector and also no remote. We currently switch the DVB-T RF feed to the radio input, like on the P7131 with female radio connector used also for DVB-T and should improve this. Priority: normal Signed-off-by: Hermann Pitton <hermann-pitton@arcor.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-10-04merge: http://linuxtv.org/hg/~awalls/cx18-mmio-fixesMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@redhat.com> Priority: normal Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-10-04merge: http://linuxtv.org/hg/~dougsland/em28xx-hvrMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@redhat.com> Priority: normal Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-10-04merge: http://linuxtv.org/hg/~dougsland/em28xx-310uMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@redhat.com> Priority: normal Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-10-04Whitespace cleanupsMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@redhat.com> Priority: normal Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-10-04gspca: Adjust control values and restore compilation of sonixj.Mauro Carvalho Chehab
From: Jean-Francois Moine <moinejf@free.fr> - no compilation since last changeset - brightness is a signed value - better values of the color matrix Priority: normal Signed-off-by: Jean-Francois Moine <moinejf@free.fr> [mchehab@redhat.com: fix a merge conflict] Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-10-03gspca: Subdriver selection at config time.Jean-Francois Moine
From: Erik Andren <erik.andren@gmail.com> Priority: normal Signed-off-by: Erik Andren <erik.andren@gmail.com> Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-10-03gspca: Moves some sensor initialization to each sensor in m5602.Jean-Francois Moine
From: Erik Andren <erik.andren@gmail.com> Priority: normal Signed-off-by: Erik Andren <erik.andren@gmail.com> Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-10-03cx18: Up the version to 1.0.1Andy Walls
From: Andy Walls <awalls@radix.net> cx18: Up the version to 1.0.1. This will make it easy to tell if retries of MMIO access are implemented or not in trouble reports. First course of action for I2C and other initialization problem reports will be to have user upgrade to v1.0.1 of driver. Priority: high Signed-off-by: Andy Walls <awalls@radix.net>
2008-10-03gspca: Frame counter in ALi m5602.Jean-Francois Moine
From: Erik Andren <erik.andren@gmail.com> Priority: normal Signed-off-by: Erik Andren <erik.andren@gmail.com> Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-10-03gspca: Cleanup code and small changes.Jean-Francois Moine
From: Erik Andren <erik.andren@gmail.com> - convert some #define to enum. - remove some comments. - return ENOMEM on memory allocation failure. Priority: normal Signed-off-by: Erik Andren <erik.andren@gmail.com> Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-10-02gspca: Bad init values for sonixj ov7660.Jean-Francois Moine
From: Jean-Francois Moine <moinejf@free.fr> Priority: high Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-10-01gspca: Subdriver m5602 (ALi) added.Jean-Francois Moine
From: Erik Andren <erik.andren@gmail.com> This patch adds support for the ALi m5602 usb bridge and is based on the gspca framework. It contains code for communicating with 5 different sensors: OmniVision OV9650, Pixel Plus PO1030, Samsung S5K83A, S5K4AA and finally Micron MT9M111. Priority: high Signed-off-by: Erik Andren <erik.andren@gmail.com> Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-09-30gspca: Restart the state machine when no frame buffer in finepix.Jean-Francois Moine
From: Frank Zago <frank@zago.net> Priority: normal Signed-off-by: Frank Zago <frank@zago.net> Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-09-30em28xx: Add detection for K-WORLD DVB-T 310UDouglas Schilling Landgraf
From: Darron Broad <darron@kewl.org> Correct firmware type to MTS Correct audio routing for composite/s-video Add DVB-T detection. This patch uses the eeprom hash method for detection as the vendor/product ids are also used for the DIGIVOX_AD. This may be a clone of the same product. Explanatory text has been added prior to the hask look-up in anticipation that it may help others. The following has been tested to work: Analogue TV (PAL-I) Composite In DVB-T (UK Crystal Palace) USB AUDIO The following has not been tested but probably works: S-Video In Priority: high Signed-off-by: Darron Broad <darron@kewl.org> Signed-off-by: Douglas Schilling Landgraf <dougsland@linuxtv.org>
2008-10-01merge: http://www.linuxtv.org/hg/~stoth/s2Mauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-29gspca: Remove the duplicated EOF (ff d9) in t613.Jean-Francois Moine
From: Jean-Francois Moine <moinejf@free.fr> Priority: normal Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-09-29gspca: New subdriver 'finepix' added.Jean-Francois Moine
From: Frank Zago <frank@zago.net> Priority: normal Signed-off-by: Frank Zago <frank@zago.net> Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-09-29gspca: Image transfer by bulk uses altsetting 0 with any buffer size.Jean-Francois Moine
From: Jean-Francois Moine <moinejf@free.fr> - gspca_dev field 'bulk_size' added. - when only one altsetting usable, do image transfer by bulk. Priority: normal Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-09-28cx18: Add default behavior of checking and retrying PCI MMIO accessesAndy Walls
From: Andy Walls <awalls@radix.net> cx18: Add default behavior of checking and retrying PCI MMIO accesses. The concept of checking and retrying PCI MMIO accesses for better reliability in older motherboards was suggested by Steve Toth <stoth@linuxtv.org>. This change implements MMIO retries and the retry_mmio module parameter that is enabled by default. Limited experiments have shown this is more reliable than the mmio_ndelay parameter. mmio_ndelay has insignificant effect with retries enabled. Priority: high Signed-off-by: Andy Walls <awalls@radix.net>
2008-09-28gspca: Use a kref to avoid potentialy blocking forever in disconnect.Jean-Francois Moine
From: Frank Zago <frank@zago.net> Priority: normal Signed-off-by: Frank Zago <frank@zago.net> Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-09-28gspca: URB_NO_TRANSFER_DMA_MAP is required for isoc and bulk transfers.Jean-Francois Moine
From: Frank Zago <frank@zago.net> Priority: normal Signed-off-by: Frank Zago <frank@zago.net> Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-09-28em28xx: HVR-900 B3C0 - fix audio clicking issueDouglas Schilling Landgraf
From: Wiktor Grebla <greblus@gmail.com> Fixed audio clicking problem which could be heard when using analog tv or composite input Priority: high Signed-off-by: Wiktor Grebla <greblus@gmail.com> Signed-off-by: Douglas Schilling Landgraf <dougsland@linuxtv.org>
2008-09-29saa7134: fix I2C remote controls on saa7134Mauro Carvalho Chehab
From: Dmitri Belimov <d.belimov@gmail.com> This is patch for solve this regression. Load ir-kbd-i2c module when remote is i2c type. With my best regards, Dmitry. Signed-off-by: Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-26gspca: Fixed a few typos in comments.Jean-Francois Moine
From: Frank Zago <frank@zago.net> Priority: normal Signed-off-by: Frank Zago <frank@zago.net> Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-09-26gspca: URB_NO_TRANSFER_DMA_MAP is not useful for isoc transfers.Jean-Francois Moine
From: Jean-Francois Moine <moinejf@free.fr> Priority: normal Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-09-25cx88: Bugfix: all client disconnects put the frontend to sleep.Steven Toth
From: Darron Broad <darron@kewl.org> From the author: "This fixes the problem where previously all client disconnects put the analogue frontend into standby. In the following example, the first command is succesfully watching TV but the second command which returns EBUSY detunes the receiver by entering it into the standby state. tvtime -d /dev/video0 & cat /dev/video0 " Priority: normal Signed-off-by: Steven Toth <stoth@linuxtv.org> Signed-off-by: Darron Broad <darron@kewl.org>
2008-09-23fix buffer overflow in uvc-videoMauro Carvalho Chehab
From: Ralph Loader <suckfish@ihug.co.nz> There is a buffer overflow in drivers/media/video/uvc/uvc_ctrl.c: INFO: 0xf2c5ce08-0xf2c5ce0b. First byte 0xa1 instead of 0xcc INFO: Allocated in uvc_query_v4l2_ctrl+0x3c/0x239 [uvcvideo] age=13 cpu=1 pid=4975 ... A fixed size 8-byte buffer is allocated, and a variable size field is read into it; there is no particular bound on the size of the field (it is dependent on hardware and configuration) and it can overflow [also verified by inserting printk's.] The patch attempts to size the buffer to the correctly. Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Acked-by: Laurent Pinchart <laurent.pinchart@skynet.be> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-28merge: http://linuxtv.org/hg/~pb/v4l-dvb/Mauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@redhat.com> Priority: normal Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-27uvcvideo: Fix control cache access when setting composite auto-update controlsMauro Carvalho Chehab
From: Laurent Pinchart <laurent.pinchart@skynet.be> Auto-update controls are never marked is loaded to prevent uvc_get_ctrl from loading the control value from the cache. When setting a composite (mapped to several V4L2 controls) auto-update UVC control, the driver updates the control cache value before processing each V4L2 control, overwriting the previously set V4L2 control. This fixes the problem by marking all controls as loaded in uvc_set_ctrl regardless of their type and resetting the loaded flag in uvc_commit_ctrl for auto-update controls. Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-22uvcvideo: Declare missing camera and processing unit controls.Mauro Carvalho Chehab
From: Laurent Pinchart <laurent.pinchart@skynet.be> This declares all missing UVC camera and processing unit controls. V4L2 mappings are not supported yet for those controls. Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-22gspca: Vertical flip the image by default in sonixj.Jean-Francois Moine
From: Jean-Francois Moine <moinejf@free.fr> Priority: high Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-09-21With the recent patch to v4l2 titled "v4l2: use register_chrdev_regionMauro Carvalho Chehab
From: David Ellingsworth <david@identd.dyndns.org> instead of register_chrdev", the internal reference count is no longer necessary in order to free the internal stk_webcam struct. This patch removes the reference counter from the stk_webcam struct and frees the struct via the video_device release callback. It also fixes an associated bug in stk_camera_probe which could result from video_unregister_device being called before video_register_device. Lastly, it simplifies access to the stk_webcam struct in several places. This patch should apply cleanly against the "working" branch of the v4l-dvb git repository. This patch is identical to the patch I sent a couple of months back titled "stk-webcam: Fix video_device handling" except that it has been rebased against current modifications to stk-webcam and it no longer depends on any other outstanding patches. Acked-by: Jaime Velasco Juan <jsagarribay@gmail.com> Signed-off-by: David Ellingsworth <david@identd.dyndns.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-21gspca: Add a delay after writing to the sonixj sensors.Jean-Francois Moine
From: Jean-Francois Moine <moinejf@free.fr> Priority: high Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-09-20gspca: Return error code from stream start functions.Jean-Francois Moine
From: Jean-Francois Moine <moinejf@free.fr> Priority: normal Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-09-20gspca: New exported function to retrieve the current frame buffer.Jean-Francois Moine
From: Jean-Francois Moine <moinejf@free.fr> Priority: normal Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-09-19drivers/media/video/tda9840.c: unbreakMauro Carvalho Chehab
From: Andrew Morton <akpm@linux-foundation.org> drivers/media/video/tda9840.c: In function 'tda9840_command': drivers/media/video/tda9840.c:152: warning: 'result' is used uninitialized in this function Priority: normal Signed-off-by: Andrew Morton <akpm@linux-foundation.org> [mchehab@redhat.com: Fix conflict with another patch that were meant to solve the warning] Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-16V4L/DVB:usbvideo:don't use part of buffer for USB transfer #4Mauro Carvalho Chehab
From: Ming Lei <tom.leiming@gmail.com> The status[] is part of uvc_device structure. We can't make sure the address of status is at a cache-line boundary in all archs,so status[] might share a cache-line with some fields in uvc_structure. This can lead to some cache coherence issues(http://lwn.net/Articles/2265/). Use dynamically allocated buffer instead. Signed-off-by: Ming Lei <tom.leiming@gmail.com> Acked-by: Laurent Pinchart <laurent.pinchart@skynet.be> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-16uvcvideo: Fix incomplete frame drop when switching to a variable size format.Mauro Carvalho Chehab
From: Laurent Pinchart <laurent.pinchart@skynet.be> When streaming in a fixed size format the driver sets a flag in the uvc_queue structure to drop incomplete incoming frames. The flag wasn't cleared when switching to a variable size format, which resulted in a broken 'MJPEG after YUV'. Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-16uvcvideo : Add support for Advent 4211 integrated webcamMauro Carvalho Chehab
From: Laurent Pinchart <laurent.pinchart@skynet.be> Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-15gspca: Set the right V4L2_DEBUG values in the main driver.Jean-Francois Moine
From: Frank Zago <frank@zago.net> Priority: normal Signed-off-by: Frank Zago <frank@zago.net> Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-09-15gspca: USB direction lacking in spca561.Jean-Francois Moine
From: Shane <gnome42@gmail.com> Priority: normal Signed-off-by: Shane <gnome42@gmail.com> Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
2008-09-14saa7134: add support for the triple Asus Tiger 3in1Mauro Carvalho Chehab
From: hermann pitton <hermann-pitton@arcor.de> after looking it up, all rants about the 80 columns restriction seem to be in vain. After changing the card's name it are now "only" seven new lines in the tiny DVB-T/DVB-S switch function. saa7130/34: v4l2 driver version 0.2.14 loaded saa7133[0]: found at 0000:02:08.0, rev: 209, irq: 18, latency: 32, mmio: 0xfdef7000 saa7133[0]: subsystem: 1043:4878, board: Asus Tiger 3in1 [card=147,autodetected] saa7133[0]: board init: gpio is 200000 tuner' 2-004b: chip found @ 0x96 (saa7133[0]) saa7133[0]: i2c eeprom 00: 43 10 78 48 54 20 1c 00 43 43 a9 1c 55 d2 b2 92 saa7133[0]: i2c eeprom 10: ff ff ff 0f ff 20 ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 20: 01 40 01 02 03 01 01 03 08 ff 00 d7 ff ff ff ff saa7133[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 40: ff 28 00 c2 96 16 03 02 c0 1c ff ff ff ff ff ff saa7133[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c scan: found device @ 0x10 [???] saa7133[0]: i2c scan: found device @ 0x16 [???] saa7133[0]: i2c scan: found device @ 0x1c [???] saa7133[0]: i2c scan: found device @ 0x96 [???] saa7133[0]: i2c scan: found device @ 0xa0 [eeprom] tda829x 2-004b: setting tuner address to 61 tda829x 2-004b: type set to tda8290+75a saa7133[0]: registered device video0 [v4l2] saa7133[0]: registered device vbi0 saa7133[0]: registered device radio0 DVB: registering new adapter (saa7133[0]) DVB: registering frontend 0 (Philips TDA10086 DVB-S)... The board init gpio is 0x0, 0x200000 is from previously unloading with antenna_switch = 1. It needs firmware for the tda10046 and analog sound needs saa7134-alsa. I have support for one more board and need to fix the first revision of the Asus Tiger DVB-T hybrid. DVB-T currently hangs on the male radio antenna input, also some small other stuff. Please report any issues with this patch, the next are depending on this one. saa7134: add support for the triple Asus Tiger 3in1 Signed-off-by: Hermann Pitton <hermann-pitton@arcor.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-24merge: http://www.linuxtv.org/hg/~stoth/s2Mauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-24merge: http://linuxtv.org/hg/~mkrufky/xc2028Mauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@redhat.com> Priority: normal Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-23Add support for ST STV0288 demodulator and cards with it.Igor M. Liplianin
From: Georg Acher <acher@baycom.de> From: Igor M. Liplianin <liplianin@me.by> Add support for ST STV0288 demodulator and cards with it, such as TeVii S420. Signed-off by: Georg Acher <acher@baycom.de> Signed-off-by: Igor M. Liplianin <liplianin@me.by>
2008-09-22cx88: HVR3000 / 4000 GPIO related changesSteven Toth
From: Steven Toth <stoth@linuxtv.org> Patch by Darron Broad. Priority: normal Signed-off-by: Steven Toth <stoth@linuxtv.org>
2008-09-22cx88: Enable TDA9887 on HVR1300 / 3000 / 4000Steven Toth
From: Steven Toth <stoth@linuxtv.org> Patch provided by Darron Broad. Priority: normal Signed-off-by: Steven Toth <stoth@linuxtv.org>