Re: cx18: Testers needed: VBI for non-NTSC-M input signals

2009-05-17 Thread Hans Verkuil
On Sunday 17 May 2009 04:06:04 Andy Walls wrote:
 Hi,

 Thanks to a loaner PVR-350 from Hans, I've been able to implement VBI
 support in the cx18 driver for non-NTSC video standards.

 If you've got a 625 line PAL, SECAM, etc, video source and can test VBI
 functions on a CX23418 based card, I'd like to hear how it works.  The
 patches for testing are here:

 http://linuxtv.org/hg/~awalls/cx18-av-core
 http://linuxtv.org/hg/~awalls/cx18-av-core/archive/tip.tar.bz2

 I've only been able to test with PAL with VPS in field 1 line 16 and WSS
 in field 1 line 23.  I wasn't able to figure out how to get Teletext B
 out of the PVR-350, so I'd certainly like to hear if Teletext is
 working.

You can't get teletext out of the PVR-350. Only WSS and VPS. It's a hardware 
limitation.

I don't have access to my HVR1600 this week, I'll see if I can test it next 
Sunday.

Regards,

Hans

 Note: to implement Raw VBI for 625 line/50 Hz systems to extract line 23
 (WSS), I had to blank one extra line in each field.  This means that
 625/50 systems will be missing 1 line from the top of each field (e.g.
 line 24 won't show).  I thought that was better than having the fields
 move up or down around if the user turned VBI on or off.

 Regards,
 Andy



-- 
Hans Verkuil - video4linux developer - sponsored by TANDBERG
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] [0905_14_1] Siano: smsusb - update supported USB IDs table

2009-05-17 Thread Uri Shkolnik

# HG changeset patch
# User Uri Shkolnik u...@siano-ms.com
# Date 1242550293 -10800
# Node ID 59a05f4cb2769279a460f171250d3a7d3a85b81f
# Parent  12d6b7eaffa903f00c445d7102ded42610361ae6
[0905_14_1] Siano: smsusb - update supported USB IDs table

From: Uri Shkolnik u...@siano-ms.com

Update the list of supported USB devices, with IDs of
new devices, and remove the obsolete defines

Priority: normal

Signed-off-by: Uri Shkolnik u...@siano-ms.com

diff -r 12d6b7eaffa9 -r 59a05f4cb276 linux/drivers/media/dvb/siano/smsusb.c
--- a/linux/drivers/media/dvb/siano/smsusb.cSun May 17 11:49:44 2009 +0300
+++ b/linux/drivers/media/dvb/siano/smsusb.cSun May 17 11:51:33 2009 +0300
@@ -489,7 +489,6 @@ static int smsusb_resume(struct usb_inte
 }
 
 struct usb_device_id smsusb_id_table[] = {
-#ifdef CONFIG_DVB_SIANO_SMS1XXX_SMS_IDS
{ USB_DEVICE(0x187f, 0x0010),
.driver_info = SMS1XXX_BOARD_SIANO_STELLAR },
{ USB_DEVICE(0x187f, 0x0100),
@@ -500,7 +499,6 @@ struct usb_device_id smsusb_id_table[] =
.driver_info = SMS1XXX_BOARD_SIANO_NOVA_B },
{ USB_DEVICE(0x187f, 0x0300),
.driver_info = SMS1XXX_BOARD_SIANO_VEGA },
-#endif
{ USB_DEVICE(0x2040, 0x1700),
.driver_info = SMS1XXX_BOARD_HAUPPAUGE_CATAMOUNT },
{ USB_DEVICE(0x2040, 0x1800),
@@ -531,8 +529,13 @@ struct usb_device_id smsusb_id_table[] =
.driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
{ USB_DEVICE(0x2040, 0x5590),
.driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
-   { } /* Terminating entry */
-};
+   { USB_DEVICE(0x187f, 0x0202),
+   .driver_info = SMS1XXX_BOARD_SIANO_NICE },
+   { USB_DEVICE(0x187f, 0x0301),
+   .driver_info = SMS1XXX_BOARD_SIANO_VENICE },
+   { } /* Terminating entry */
+   };
+
 MODULE_DEVICE_TABLE(usb, smsusb_id_table);
 
 static struct usb_driver smsusb_driver = {



  
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] [0905_23] Siano: gpio - use new implementation

2009-05-17 Thread Uri Shkolnik

# HG changeset patch
# User Uri Shkolnik u...@siano-ms.com
# Date 1242331325 -10800
# Node ID 415ca02f74b960c02ddfa7ee719cf87726d97490
# Parent  8b645aa2ab13f22b8d4dcd8e6353fce2c976cd34
[0905_23] Siano: gpio - use new implementation

From: Uri Shkolnik u...@siano-ms.com

Start using the corrected gpio implementation

Priority: normal

Signed-off-by: Uri Shkolnik u...@siano-ms.com

diff -r 8b645aa2ab13 -r 415ca02f74b9 linux/drivers/media/dvb/siano/sms-cards.c
--- a/linux/drivers/media/dvb/siano/sms-cards.c Thu May 14 22:28:38 2009 +0300
+++ b/linux/drivers/media/dvb/siano/sms-cards.c Thu May 14 23:02:05 2009 +0300
@@ -17,6 +17,7 @@
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include smscoreapi.h
 #include sms-cards.h
 #include smsir.h
 
@@ -155,6 +156,174 @@ struct sms_board *sms_get_board(int id)
 }
 EXPORT_SYMBOL_GPL(sms_get_board);
 
+static inline void sms_gpio_assign_11xx_default_led_config(
+   struct smscore_gpio_config *pGpioConfig) {
+   pGpioConfig-Direction = SMS_GPIO_DIRECTION_OUTPUT;
+   pGpioConfig-InputCharacteristics =
+   SMS_GPIO_INPUTCHARACTERISTICS_NORMAL;
+   pGpioConfig-OutputDriving = SMS_GPIO_OUTPUTDRIVING_4mA;
+   pGpioConfig-OutputSlewRate = SMS_GPIO_OUTPUTSLEWRATE_0_45_V_NS;
+   pGpioConfig-PullUpDown = SMS_GPIO_PULLUPDOWN_NONE;
+}
+
+int sms_board_event(struct smscore_device_t *coredev,
+   enum SMS_BOARD_EVENTS gevent) {
+   int board_id = smscore_get_board_id(coredev);
+   struct sms_board *board = sms_get_board(board_id);
+   struct smscore_gpio_config MyGpioConfig;
+
+   sms_gpio_assign_11xx_default_led_config(MyGpioConfig);
+
+   switch (gevent) {
+   case BOARD_EVENT_POWER_INIT: /* including hotplug */
+   switch (board_id) {
+   case SMS1XXX_BOARD_HAUPPAUGE_WINDHAM:
+   /* set I/O and turn off all LEDs */
+   smscore_gpio_configure(coredev,
+   board-board_cfg.leds_power,
+   MyGpioConfig);
+   smscore_gpio_set_level(coredev,
+   board-board_cfg.leds_power, 0);
+   smscore_gpio_configure(coredev, board-board_cfg.led0,
+   MyGpioConfig);
+   smscore_gpio_set_level(coredev,
+   board-board_cfg.led0, 0);
+   smscore_gpio_configure(coredev, board-board_cfg.led1,
+   MyGpioConfig);
+   smscore_gpio_set_level(coredev,
+   board-board_cfg.led1, 0);
+   break;
+   case SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD_R2:
+   case SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD:
+   /* set I/O and turn off LNA */
+   smscore_gpio_configure(coredev,
+   board-board_cfg.foreign_lna0_ctrl,
+   MyGpioConfig);
+   smscore_gpio_set_level(coredev,
+   board-board_cfg.foreign_lna0_ctrl,
+   0);
+   break;
+   }
+   break; /* BOARD_EVENT_BIND */
+
+   case BOARD_EVENT_POWER_SUSPEND:
+   switch (board_id) {
+   case SMS1XXX_BOARD_HAUPPAUGE_WINDHAM:
+   smscore_gpio_set_level(coredev,
+   board-board_cfg.leds_power, 0);
+   smscore_gpio_set_level(coredev,
+   board-board_cfg.led0, 0);
+   smscore_gpio_set_level(coredev,
+   board-board_cfg.led1, 0);
+   break;
+   case SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD_R2:
+   case SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD:
+   smscore_gpio_set_level(coredev,
+   board-board_cfg.foreign_lna0_ctrl,
+   0);
+   break;
+   }
+   break; /* BOARD_EVENT_POWER_SUSPEND */
+
+   case BOARD_EVENT_POWER_RESUME:
+   switch (board_id) {
+   case SMS1XXX_BOARD_HAUPPAUGE_WINDHAM:
+   smscore_gpio_set_level(coredev,
+   board-board_cfg.leds_power, 1);
+   smscore_gpio_set_level(coredev,
+   board-board_cfg.led0, 1);
+   smscore_gpio_set_level(coredev,
+   board-board_cfg.led1, 0);
+   break;
+   case SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD_R2:
+   

[PATCH] [0905_27] Siano: smscore - fix isdb-t firmware name

2009-05-17 Thread Uri Shkolnik

# HG changeset patch
# User Uri Shkolnik u...@siano-ms.com
# Date 1242332684 -10800
# Node ID 7e56c108996ef016c4b2117090e2577aea9ed56c
# Parent  5ad3d2c3d7792ddf125386c43535e68b575305c3
[0905_27] Siano: smscore - fix isdb-t firmware name

From: Uri Shkolnik u...@siano-ms.com

Fix mistake with isdb-t firmware name

Priority: normal

Signed-off-by: Uri Shkolnik u...@siano-ms.com

diff -r 5ad3d2c3d779 -r 7e56c108996e linux/drivers/media/dvb/siano/smscoreapi.c
--- a/linux/drivers/media/dvb/siano/smscoreapi.cThu May 14 23:21:04 
2009 +0300
+++ b/linux/drivers/media/dvb/siano/smscoreapi.cThu May 14 23:24:44 
2009 +0300
@@ -813,7 +813,7 @@ static char *smscore_fw_lkup[][SMS_NUM_O
/*BDA*/
{none, dvb_nova_12mhz.inp, dvb_nova_12mhz_b0.inp, none},
/*ISDBT*/
-   {none, isdbt_nova_12mhz.inp, dvb_nova_12mhz.inp, none},
+   {none, isdbt_nova_12mhz.inp, isdbt_nova_12mhz_b0.inp, none},
/*ISDBTBDA*/
{none, isdbt_nova_12mhz.inp, isdbt_nova_12mhz_b0.inp, none},
/*CMMB*/



  
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] [0905_29] Siano: smscore - bug fix at get_device_mode

2009-05-17 Thread Uri Shkolnik

# HG changeset patch
# User Uri Shkolnik u...@siano-ms.com
# Date 1242332841 -10800
# Node ID 211989f20f803bc5a719c6fda4640888e379d6fc
# Parent  7e56c108996ef016c4b2117090e2577aea9ed56c
[0905_29] Siano: smscore - bug fix at get_device_mode

From: Uri Shkolnik u...@siano-ms.com

Fix bug that cause error log to echo also if success

Priority: normal

Signed-off-by: Uri Shkolnik u...@siano-ms.com

diff -r 7e56c108996e -r 211989f20f80 linux/drivers/media/dvb/siano/smscoreapi.c
--- a/linux/drivers/media/dvb/siano/smscoreapi.cThu May 14 23:24:44 
2009 +0300
+++ b/linux/drivers/media/dvb/siano/smscoreapi.cThu May 14 23:27:21 
2009 +0300
@@ -938,7 +938,7 @@ int smscore_set_device_mode(struct smsco
coredev-device_flags = ~SMS_DEVICE_NOT_READY;
}
 
-   if (rc != 0)
+   if (rc  0)
sms_err(return error code %d., rc);
return rc;
 }



  
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] [0905_30] Siano: smsusb - fix typo in module description

2009-05-17 Thread Uri Shkolnik

# HG changeset patch
# User Uri Shkolnik u...@siano-ms.com
# Date 1242562875 -10800
# Node ID 7d204069642b6608bb3b0d6a96d1de5848df2a16
# Parent  1c7b6db1a3399ffbb7f9b6758cae6572c24b51ef
[0905_30] Siano: smsusb - fix typo in module description

From: Uri Shkolnik u...@siano-ms.com

Fix small typo in the module description

Priority: normal

Signed-off-by: Uri Shkolnik u...@siano-ms.com

diff -r 1c7b6db1a339 -r 7d204069642b linux/drivers/media/dvb/siano/smsusb.c
--- a/linux/drivers/media/dvb/siano/smsusb.cSun May 17 11:57:48 2009 +0300
+++ b/linux/drivers/media/dvb/siano/smsusb.cSun May 17 15:21:15 2009 +0300
@@ -569,6 +569,6 @@ module_init(smsusb_module_init);
 module_init(smsusb_module_init);
 module_exit(smsusb_module_exit);
 
-MODULE_DESCRIPTION(Driver for the Siano SMS1XXX USB dongle);
+MODULE_DESCRIPTION(Driver for the Siano SMS1xxx USB dongle);
 MODULE_AUTHOR(Siano Mobile Silicon, INC. (u...@siano-ms.com));
 MODULE_LICENSE(GPL);



  
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] [0905_31] Siano: smsusb - change exit func debug msg

2009-05-17 Thread Uri Shkolnik

# HG changeset patch
# User Uri Shkolnik u...@siano-ms.com
# Date 1242563388 -10800
# Node ID c09c5b8b253e4a74b9a32ce8db30d35d143dedfa
# Parent  7d204069642b6608bb3b0d6a96d1de5848df2a16
[0905_31] Siano: smsusb - change exit func debug msg

From: Uri Shkolnik u...@siano-ms.com

Change the debug message of the USB interface driver exit
function.

Priority: normal

Signed-off-by: Uri Shkolnik u...@siano-ms.com

diff -r 7d204069642b -r c09c5b8b253e linux/drivers/media/dvb/siano/smsusb.c
--- a/linux/drivers/media/dvb/siano/smsusb.cSun May 17 15:21:15 2009 +0300
+++ b/linux/drivers/media/dvb/siano/smsusb.cSun May 17 15:29:48 2009 +0300
@@ -561,9 +561,9 @@ int smsusb_module_init(void)
 
 void smsusb_module_exit(void)
 {
-   sms_debug();
/* Regular USB Cleanup */
usb_deregister(smsusb_driver);
+   sms_info(end);
 }
 
 module_init(smsusb_module_init);



  
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH][libv4l] Support V4L2_CTRL_FLAG_NEXT_CTRL for fake controls

2009-05-17 Thread Hans de Goede



On 04/19/2009 12:45 AM, Adam Baker wrote:

The fake controls added by libv4l to provide whitebalance on some cameras do
not respect the V4L2_CTRL_FLAG_NEXT_CTRL and hence don't appear on control
programs that try to use that flag if there are any driver controls that do
support the flag. Add support for V4L2_CTRL_FLAG_NEXT_CTRL

Signed-off-by: Adam Bakerli...@baker-net.org.uk


Thanks, reviewed and tested looks fine, so it has been applied to my tree:
http://linuxtv.org/hg/~hgoede/libv4l

And will be in the next libv4l release.

Regards,

Hans
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Fixed (Was:Re: saa7134/2.6.26 regression, noisy output)

2009-05-17 Thread tomloh...@gmail.com

hermann pitton a écrit :

Hi Anders,

Am Freitag, den 15.05.2009, 11:18 +0200 schrieb Anders Eriksson:
  

Success!

I've tracked down the offending change. switch_addr takes on the wrong value
and setting the LNA fails. Here's a i2c dump:

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 xfer:  20 ERROR: NO_DEVICE
saa7133[0]: i2c xfer:  84 ERROR: NO_DEVICE
saa7133[0]: i2c xfer:  86 ERROR: NO_DEVICE
saa7133[0]: i2c xfer:  94 ERROR: NO_DEVICE
saa7133[0]: i2c xfer:  96 
saa7133[0]: i2c xfer:  96 00 
saa7133[0]: i2c xfer:  97 =01 =01 =00 =11 =01 =04 =01 =85 
saa7133[0]: i2c xfer:  96 1f 
saa7133[0]: i2c xfer:  97 =89 
tda8290_probe: tda8290 detected @ 1-004b
tuner' 1-004b: tda829x detected
tuner' 1-004b: Setting mode_mask to 0x0e
tuner' 1-004b: chip found @ 0x96 (saa7133[0])
tuner' 1-004b: tuner 0x4b: Tuner type absent
tuner' i2c attach [addr=0x4b,client=(tuner unset)]
tuner' 1-004b: Calling set_type_addr for type=54, addr=0xff, mode=0x04, 
config=0x01
tuner' 1-004b: set addr for type -1
tuner' 1-004b: defining GPIO callback
saa7133[0]: i2c xfer:  96 1f 
saa7133[0]: i2c xfer:  97 =89 
tda8290_probe: tda8290 detected @ 1-004b
saa7133[0]: i2c xfer:  96 2f 
saa7133[0]: i2c xfer:  97 =00 
saa7133[0]: i2c xfer:  96 21 c0 
saa7133[0]: i2c xfer:  c1 ERROR: NO_DEVICE
saa7133[0]: i2c xfer:  c3 =88 
saa7133[0]: i2c xfer:  c5 ERROR: NO_DEVICE
saa7133[0]: i2c xfer:  c7 ERROR: NO_DEVICE
saa7133[0]: i2c xfer:  96 21 00 
tda829x 1-004b: setting tuner address to 61
saa7133[0]: i2c xfer:  96 21 c0 
saa7133[0]: i2c xfer:  c3 =08 
tda827x: tda827x_attach:
tda827x: type set to Philips TDA827X
saa7133[0]: i2c xfer:  c3 =08 
tda827x: tda827xa tuner found
tda827x: tda827x_init:
tda827x: tda827xa_sleep:
saa7133[0]: i2c xfer:  c2 30 90 
saa7133[0]: i2c xfer:  96 21 00 
tda829x 1-004b: type set to tda8290+75a
saa7133[0]: i2c xfer:  96 21 c0 
saa7133[0]: i2c xfer:  c2 00 00 00 00 dc 05 8b 0c 04 20 ff 00 00 4b 
saa7133[0]: i2c xfer:  96 21 00 
saa7133[0]: i2c xfer:  96 20 01 
saa7133[0]: i2c xfer:  96 30 6f 
tuner' 1-004b: type set to tda8290+75a
tuner' 1-004b: tv freq set to 400.00
tda829x 1-004b: setting tda829x to system xx
tda829x 1-004b: tda827xa config is 0x01
saa7133[0]: i2c xfer:  96 01 00 
saa7133[0]: i2c xfer:  96 02 00 
saa7133[0]: i2c xfer:  96 00 00 
saa7133[0]: i2c xfer:  96 01 90 
saa7133[0]: i2c xfer:  96 28 14 
saa7133[0]: i2c xfer:  96 0f 88 
saa7133[0]: i2c xfer:  96 05 04 
saa7133[0]: i2c xfer:  96 0d 47 
saa7133[0]: i2c xfer:  96 21 c0 
tda827x: setting tda827x to system xx
tda827x: setting LNA to high gain
saa7133[0]: i2c xfer:  96 22 00 
^ This address is c2 in all kernels = 
5823b3a63c7661272ea7fef7635955e2a50d17eb


saa7133[0]: i2c xfer:  c2 00 32 f8 00 16 3b bb 1c 04 20 00 
saa7133[0]: i2c xfer:  c2 90 ff e0 00 99 
saa7133[0]: i2c xfer:  c2 a0 c0 
saa7133[0]: i2c xfer:  c2 30 10 
saa7133[0]: i2c xfer:  c3 =49 =a4 
tda827x: AGC2 gain is: 10
   ^ The gain reported on good kernels is 3 

Looking at the source, the switch_addr to use in the later kernels is somehow 
autodetected. How that's done, I've yet to fully understand, but somehow it 
comes up with the wrong address.


This patch (which obviously needs improvement) hardwires the address back to 
its original value, and works for 2.6.30-rc5.


diff --git a/drivers/media/common/tuners/tda8290.c 
b/drivers/media/common/tuners/tda8290.c
index 064d14c..498cc7b 100644
--- a/drivers/media/common/tuners/tda8290.c
+++ b/drivers/media/common/tuners/tda8290.c
@@ -635,7 +635,11 @@ static int tda829x_find_tuner(struct dvb_frontend *fe)
 
dvb_attach(tda827x_attach, fe, priv-tda827x_addr,

   priv-i2c_props.adap, priv-cfg);
+   tuner_info(ANDERS: setting switch_addr. was 0x%02x, new 
0x%02x\n,priv-cfg.switch_addr,priv-i2c_props.addr);
priv-cfg.switch_addr = priv-i2c_props.addr;
+   priv-cfg.switch_addr = 0xc2 / 2;
+   tuner_info(ANDERS: new 0x%02x\n,priv-cfg.switch_addr);
+
}
if (fe-ops.tuner_ops.init)
fe-ops.tuner_ops.init(fe);


Could you please help me out and shed some light on what the proper fix is for 
setting switch_addr? 


Thanks,
/Anders




thanks a lot for all your time and energy you did spend on this.

I suggest we start collecting photographs of different LNA circuits on
the wiki.

For now, Tom offered his support already off list, I think we should
start about the question, if that early Hauppauge HVR 1110 has such an
LNA type one at all, since this caused to not look at it further, as it
seemed to be without problems.

Tom, I know you carefully worked on it, but can you reassure that this
LNA config one is really needed on your device?

  

Hello list,
you are talking about tuner_config = 1 for the hvr 1110, right ?
Changing this option doesn't affect the qualitie of 

Re: Fixed (Was:Re: saa7134/2.6.26 regression, noisy output)

2009-05-17 Thread Anders Eriksson

tomloh...@gmail.com said:
 Hello list, 
 you are talking about tuner_config = 1 for the hvr 1110, right ?
No. We're talking about the switch_addr variable. This variable is not 
changeable with module parameters.

 Changing this option doesn't affect the qualitie of the signal on tv see
 http://forum.ubuntu-fr.org/viewtopic.php?pid=1472261 it 's an old
 discussion in french. This option, as far as i remenber, was not provided by
 me ...

 anyway with tuner debug=1 and .tuner_config=1 , i have no line with AGC  or
 LNA on dmesg

You only get this output if you enable debugging. Here's what i have (gentoo):
and...@tv /etc/modprobe.d $ grep '' saa7134 saa7134_alsa tda827x tda8290 tuner
saa7134:options saa7134 disable_ir=1 alsa=1 core_debug=1 i2c_debug=1
saa7134:#options saa7134 alsa=1
saa7134_alsa:options saa7134_alsa debug=1
tda827x:options tda827x debug=1
tda8290:options tda8290 debug=1
tuner:options tuner debug=1

If you adjust your module options similarly, you'll get more info in dmesg.

If you're ok with patching kernel source, could you try the patch I sent?

 I have somme glitchs with hvr1110 on dvb (not analogic tv) and many for  one
 particular station call M6 (and i'm not the only one user, see  previous post
 on ubuntu-fr.org, with short or long distance from tv  relay) . Bug on 310i
 means potentially bug on hvr1110 as configuration  on hvr 1110 was made from
 310i 

I've never tried my 310i on digital (dvb-t), so I'm afraid I cannot help you 
there. I use it on analogue cable tv.

-Anders

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: working on webcam driver

2009-05-17 Thread MK
Thanks much for the feedback!  Here's what happened:

Because the vendor id (0c45) is listed by the gspca website but not 
the product (612a), I decided to try inserting the id into one of the 
drivers/media/video/gspca.  When I actually grepped (had not grepped 
the tree itself yet), low and behold 612a is in sonixj.  The module 
compiles and responds to the camera, although the results in gstreamer, 
et. al, are disappointing -- the camera is not really usable, I suspect 
from the output it is the kernel driver, but I am not sure.  Since I 
didn't write this stuff, I think working alone it will be more trouble 
than it is worth to track the problem down, esp. if this is mostly a 
problem with an (obscure) inexpensive item that few linux users 
actually possess.

So, I am going to cut my loses early on this project and cop out.  
I've learned a bunch about the kernel and in the process written some 
nifty little char drivers that are probably more useful to me than a 
webcam anyway. I think my time would be better spent on other things, 
eg, I might become useful in someone else's (more significant) linux 
kernel/driver project.  I will have a look around.

But thanks again!  You were much nicer than mr Greg Kroah-Hartman ;) :0

Sincerely, Mark Eriksen (getting his feet wet)


--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[cron job] v4l-dvb daily build 2.6.22 and up: ERRORS, 2.6.16-2.6.21: ERRORS

2009-05-17 Thread Hans Verkuil
This message is generated daily by a cron job that builds v4l-dvb for
the kernels and architectures in the list below.

Results of the daily build of v4l-dvb:

date:Sun May 17 19:00:06 CEST 2009
path:http://www.linuxtv.org/hg/v4l-dvb
changeset:   11783:0018ed9bbca3
gcc version: gcc (GCC) 4.3.1
hardware:x86_64
host os: 2.6.26

linux-2.6.22.19-armv5: OK
linux-2.6.23.12-armv5: OK
linux-2.6.24.7-armv5: OK
linux-2.6.25.11-armv5: OK
linux-2.6.26-armv5: OK
linux-2.6.27-armv5: OK
linux-2.6.28-armv5: OK
linux-2.6.29.1-armv5: OK
linux-2.6.30-rc4-armv5: OK
linux-2.6.27-armv5-ixp: WARNINGS
linux-2.6.28-armv5-ixp: WARNINGS
linux-2.6.29.1-armv5-ixp: WARNINGS
linux-2.6.30-rc4-armv5-ixp: WARNINGS
linux-2.6.28-armv5-omap2: WARNINGS
linux-2.6.29.1-armv5-omap2: WARNINGS
linux-2.6.30-rc4-armv5-omap2: WARNINGS
linux-2.6.22.19-i686: ERRORS
linux-2.6.23.12-i686: ERRORS
linux-2.6.24.7-i686: ERRORS
linux-2.6.25.11-i686: ERRORS
linux-2.6.26-i686: WARNINGS
linux-2.6.27-i686: WARNINGS
linux-2.6.28-i686: WARNINGS
linux-2.6.29.1-i686: WARNINGS
linux-2.6.30-rc4-i686: WARNINGS
linux-2.6.23.12-m32r: OK
linux-2.6.24.7-m32r: OK
linux-2.6.25.11-m32r: OK
linux-2.6.26-m32r: OK
linux-2.6.27-m32r: OK
linux-2.6.28-m32r: OK
linux-2.6.29.1-m32r: OK
linux-2.6.30-rc4-m32r: OK
linux-2.6.22.19-mips: ERRORS
linux-2.6.26-mips: ERRORS
linux-2.6.27-mips: ERRORS
linux-2.6.28-mips: ERRORS
linux-2.6.29.1-mips: ERRORS
linux-2.6.30-rc4-mips: ERRORS
linux-2.6.27-powerpc64: WARNINGS
linux-2.6.28-powerpc64: WARNINGS
linux-2.6.29.1-powerpc64: WARNINGS
linux-2.6.30-rc4-powerpc64: WARNINGS
linux-2.6.22.19-x86_64: ERRORS
linux-2.6.23.12-x86_64: ERRORS
linux-2.6.24.7-x86_64: ERRORS
linux-2.6.25.11-x86_64: ERRORS
linux-2.6.26-x86_64: OK
linux-2.6.27-x86_64: OK
linux-2.6.28-x86_64: OK
linux-2.6.29.1-x86_64: OK
linux-2.6.30-rc4-x86_64: WARNINGS
sparse (linux-2.6.29.1): OK
sparse (linux-2.6.30-rc4): OK
linux-2.6.16.61-i686: ERRORS
linux-2.6.17.14-i686: ERRORS
linux-2.6.18.8-i686: ERRORS
linux-2.6.19.5-i686: ERRORS
linux-2.6.20.21-i686: ERRORS
linux-2.6.21.7-i686: ERRORS
linux-2.6.16.61-x86_64: ERRORS
linux-2.6.17.14-x86_64: ERRORS
linux-2.6.18.8-x86_64: ERRORS
linux-2.6.19.5-x86_64: ERRORS
linux-2.6.20.21-x86_64: ERRORS
linux-2.6.21.7-x86_64: ERRORS

Detailed results are available here:

http://www.xs4all.nl/~hverkuil/logs/Sunday.log

Full logs are available here:

http://www.xs4all.nl/~hverkuil/logs/Sunday.tar.bz2

The V4L2 specification from this daily build is here:

http://www.xs4all.nl/~hverkuil/spec/v4l2.html

The DVB API specification from this daily build is here:

http://www.xs4all.nl/~hverkuil/spec/dvbapi.pdf

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/8] ir-kbd-i2c conversion to the new i2c binding model (v3)

2009-05-17 Thread Mike Isely
On Thu, 14 May 2009, Jean Delvare wrote:

 On Thu, 14 May 2009 21:25:02 +0200, Oldřich Jedlička wrote:
  On Wednesday 13 of May 2009 at 21:45:59, Jean Delvare wrote:
   Hi all,
  
   Here comes an update of my conversion of ir-kbd-i2c to the new i2c
   binding model. I've split it into 8 pieces for easier review. Firstly
   there is 1 preliminary patch:
  
  
  Hi Jean,
  
  works for me, as usual :-) I've used the all-in-one patch and the 
  up-to-date 
  v4l-dvb tree (compiled yesterday for completeness).
 
 Oldrich, thanks a lot for testing and reporting, this is very
 appreciated.
 

Jean:

I tried the all-in-one patch here on a PVR-USB2 24xxx model (slightly 
older v4l-dvb repo and 2.6.27.13 vanilla kernel) and it worked fine.  
I'll add an acked-by to the corresponding (trivial) pvrusb2 patch that 
you've posted.

  -Mike


-- 

Mike Isely
isely @ isely (dot) net
PGP: 03 54 43 4D 75 E5 CC 92 71 16 01 E2 B5 F5 C1 E8

Re: [PATCH 8/8] pvrusb2: Instantiate ir_video I2C device by default

2009-05-17 Thread Mike Isely
On Wed, 13 May 2009, Jean Delvare wrote:

 Now that the ir-kbd-i2c driver has been converted to a new-style i2c
 driver, we can instantiate the ir_video I2C device by default. The
 pvr2_disable_ir_video is kept to disable the IR receiver, either
 because the user doesn't use it, or for debugging purpose.
 
 Signed-off-by: Jean Delvare kh...@linux-fr.org
 Cc: Mike Isely is...@pobox.com

Acked-by: Mike Isely is...@pobox.com

 ---
  linux/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c |2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 --- v4l-dvb.orig/linux/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c 
 2009-05-13 18:05:54.0 +0200
 +++ v4l-dvb/linux/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c  
 2009-05-13 18:06:32.0 +0200
 @@ -43,7 +43,7 @@ static int ir_mode[PVR_NUM] = { [0 ... P
  module_param_array(ir_mode, int, NULL, 0444);
  MODULE_PARM_DESC(ir_mode,specify: 0=disable IR reception, 1=normal IR);
  
 -static int pvr2_disable_ir_video = 1;
 +static int pvr2_disable_ir_video;
  module_param_named(disable_autoload_ir_video, pvr2_disable_ir_video,
  int, S_IRUGO|S_IWUSR);
  MODULE_PARM_DESC(disable_autoload_ir_video,
 
 

-- 

Mike Isely
isely @ isely (dot) net
PGP: 03 54 43 4D 75 E5 CC 92 71 16 01 E2 B5 F5 C1 E8
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: working on webcam driver

2009-05-17 Thread leandro Costantino
Hi Mark,
just searching 0c45:612a gspca could save you lot of time.
I suppose you were looking at the old gspca homepage, because it
listed on Jean F. Moine site
http://moinejf.free.fr/webcam.html ( it dont know even it that page if
still updated )

About the gstreamer, what kind of troubles are you having?. It's the
webcam streaming?
Did you follow the steps using libv4lconvert?.

I wrote that patch a year ago, so , if there's any problem let me know.
If you need help, about the lib4vlconvert thing, look at deaglecito.blogspot.com

Best Regards
Costantino Leandro

On Sun, May 17, 2009 at 12:08 PM, MK halfcountp...@intergate.com wrote:
 Thanks much for the feedback!  Here's what happened:

 Because the vendor id (0c45) is listed by the gspca website but not
 the product (612a), I decided to try inserting the id into one of the
 drivers/media/video/gspca.  When I actually grepped (had not grepped
 the tree itself yet), low and behold 612a is in sonixj.  The module
 compiles and responds to the camera, although the results in gstreamer,
 et. al, are disappointing -- the camera is not really usable, I suspect
 from the output it is the kernel driver, but I am not sure.  Since I
 didn't write this stuff, I think working alone it will be more trouble
 than it is worth to track the problem down, esp. if this is mostly a
 problem with an (obscure) inexpensive item that few linux users
 actually possess.

 So, I am going to cut my loses early on this project and cop out.
 I've learned a bunch about the kernel and in the process written some
 nifty little char drivers that are probably more useful to me than a
 webcam anyway. I think my time would be better spent on other things,
 eg, I might become useful in someone else's (more significant) linux
 kernel/driver project.  I will have a look around.

 But thanks again!  You were much nicer than mr Greg Kroah-Hartman ;) :0

 Sincerely, Mark Eriksen (getting his feet wet)



 --
 video4linux-list mailing list
 Unsubscribe mailto:video4linux-list-requ...@redhat.com?subject=unsubscribe
 https://www.redhat.com/mailman/listinfo/video4linux-list

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Fixed (Was:Re: saa7134/2.6.26 regression, noisy output)

2009-05-17 Thread hermann pitton
Hi,

Am Sonntag, den 17.05.2009, 15:52 +0200 schrieb tomloh...@gmail.com:
 hermann pitton a écrit :
  Hi Anders,
 
  Am Freitag, den 15.05.2009, 11:18 +0200 schrieb Anders Eriksson:

  Success!
 
  I've tracked down the offending change. switch_addr takes on the wrong 
  value
  and setting the LNA fails. Here's a i2c dump:
 
  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 xfer:  20 ERROR: NO_DEVICE
  saa7133[0]: i2c xfer:  84 ERROR: NO_DEVICE
  saa7133[0]: i2c xfer:  86 ERROR: NO_DEVICE
  saa7133[0]: i2c xfer:  94 ERROR: NO_DEVICE
  saa7133[0]: i2c xfer:  96 
  saa7133[0]: i2c xfer:  96 00 
  saa7133[0]: i2c xfer:  97 =01 =01 =00 =11 =01 =04 =01 =85 
  saa7133[0]: i2c xfer:  96 1f 
  saa7133[0]: i2c xfer:  97 =89 
  tda8290_probe: tda8290 detected @ 1-004b
  tuner' 1-004b: tda829x detected
  tuner' 1-004b: Setting mode_mask to 0x0e
  tuner' 1-004b: chip found @ 0x96 (saa7133[0])
  tuner' 1-004b: tuner 0x4b: Tuner type absent
  tuner' i2c attach [addr=0x4b,client=(tuner unset)]
  tuner' 1-004b: Calling set_type_addr for type=54, addr=0xff, mode=0x04, 
  config=0x01
  tuner' 1-004b: set addr for type -1
  tuner' 1-004b: defining GPIO callback
  saa7133[0]: i2c xfer:  96 1f 
  saa7133[0]: i2c xfer:  97 =89 
  tda8290_probe: tda8290 detected @ 1-004b
  saa7133[0]: i2c xfer:  96 2f 
  saa7133[0]: i2c xfer:  97 =00 
  saa7133[0]: i2c xfer:  96 21 c0 
  saa7133[0]: i2c xfer:  c1 ERROR: NO_DEVICE
  saa7133[0]: i2c xfer:  c3 =88 
  saa7133[0]: i2c xfer:  c5 ERROR: NO_DEVICE
  saa7133[0]: i2c xfer:  c7 ERROR: NO_DEVICE
  saa7133[0]: i2c xfer:  96 21 00 
  tda829x 1-004b: setting tuner address to 61
  saa7133[0]: i2c xfer:  96 21 c0 
  saa7133[0]: i2c xfer:  c3 =08 
  tda827x: tda827x_attach:
  tda827x: type set to Philips TDA827X
  saa7133[0]: i2c xfer:  c3 =08 
  tda827x: tda827xa tuner found
  tda827x: tda827x_init:
  tda827x: tda827xa_sleep:
  saa7133[0]: i2c xfer:  c2 30 90 
  saa7133[0]: i2c xfer:  96 21 00 
  tda829x 1-004b: type set to tda8290+75a
  saa7133[0]: i2c xfer:  96 21 c0 
  saa7133[0]: i2c xfer:  c2 00 00 00 00 dc 05 8b 0c 04 20 ff 00 00 4b 
  saa7133[0]: i2c xfer:  96 21 00 
  saa7133[0]: i2c xfer:  96 20 01 
  saa7133[0]: i2c xfer:  96 30 6f 
  tuner' 1-004b: type set to tda8290+75a
  tuner' 1-004b: tv freq set to 400.00
  tda829x 1-004b: setting tda829x to system xx
  tda829x 1-004b: tda827xa config is 0x01
  saa7133[0]: i2c xfer:  96 01 00 
  saa7133[0]: i2c xfer:  96 02 00 
  saa7133[0]: i2c xfer:  96 00 00 
  saa7133[0]: i2c xfer:  96 01 90 
  saa7133[0]: i2c xfer:  96 28 14 
  saa7133[0]: i2c xfer:  96 0f 88 
  saa7133[0]: i2c xfer:  96 05 04 
  saa7133[0]: i2c xfer:  96 0d 47 
  saa7133[0]: i2c xfer:  96 21 c0 
  tda827x: setting tda827x to system xx
  tda827x: setting LNA to high gain
  saa7133[0]: i2c xfer:  96 22 00 
  ^ This address is c2 in all kernels = 
  5823b3a63c7661272ea7fef7635955e2a50d17eb
 
 
  saa7133[0]: i2c xfer:  c2 00 32 f8 00 16 3b bb 1c 04 20 00 
  saa7133[0]: i2c xfer:  c2 90 ff e0 00 99 
  saa7133[0]: i2c xfer:  c2 a0 c0 
  saa7133[0]: i2c xfer:  c2 30 10 
  saa7133[0]: i2c xfer:  c3 =49 =a4 
  tda827x: AGC2 gain is: 10
 ^ The gain reported on good kernels is 3 
 
  Looking at the source, the switch_addr to use in the later kernels is 
  somehow 
  autodetected. How that's done, I've yet to fully understand, but somehow 
  it 
  comes up with the wrong address.
 
  This patch (which obviously needs improvement) hardwires the address back 
  to 
  its original value, and works for 2.6.30-rc5.
 
  diff --git a/drivers/media/common/tuners/tda8290.c 
  b/drivers/media/common/tuners/tda8290.c
  index 064d14c..498cc7b 100644
  --- a/drivers/media/common/tuners/tda8290.c
  +++ b/drivers/media/common/tuners/tda8290.c
  @@ -635,7 +635,11 @@ static int tda829x_find_tuner(struct dvb_frontend *fe)
   
  dvb_attach(tda827x_attach, fe, priv-tda827x_addr,
 priv-i2c_props.adap, priv-cfg);
  +   tuner_info(ANDERS: setting switch_addr. was 0x%02x, new 
  0x%02x\n,priv-cfg.switch_addr,priv-i2c_props.addr);
  priv-cfg.switch_addr = priv-i2c_props.addr;
  +   priv-cfg.switch_addr = 0xc2 / 2;
  +   tuner_info(ANDERS: new 0x%02x\n,priv-cfg.switch_addr);
  +
  }
  if (fe-ops.tuner_ops.init)
  fe-ops.tuner_ops.init(fe);
 
 
  Could you please help me out and shed some light on what the proper fix is 
  for 
  setting switch_addr? 
 
  Thanks,
  /Anders
 
  
 
  thanks a lot for all your time and energy you did spend on this.
 
  I suggest we start collecting photographs of different LNA circuits on
  the wiki.
 
  For now, Tom offered his support already off list, I think we should
  start about the question, if that early Hauppauge HVR 1110 has such an
  LNA type one at all, since this 

[REVIEW v4] v4l2 loopback

2009-05-17 Thread Vasily Levin
In this patch revision fixed complains from checkpatch.pl
spell check of comments done
---
This patch introduces v4l2 loopback module

From: Vasily Levin vas...@gmail.com

This is v4l2 loopback driver which can be used to make available any userspace
video as v4l2 device. Initially it was written to make videoeffects available
to Skype, but in fact it have many more uses.

Priority: normal

Signed-off-by: Vasily Levin vas...@gmail.com

diff -uprN v4l-dvb.orig/linux/drivers/media/video/Kconfig v4l-
dvb.my/linux/drivers/media/video/Kconfig
--- v4l-dvb.orig/linux/drivers/media/video/Kconfig  2009-05-17 
22:39:41.0 
+0300
+++ v4l-dvb.my/linux/drivers/media/video/Kconfig2009-05-17 
22:41:22.0 
+0300
@@ -497,6 +497,17 @@ config VIDEO_VIVI
  Say Y here if you want to test video apps or debug V4L devices.
  In doubt, say N.
 
+config VIDEO_V4L2_LOOPBACK
+   tristate v4l2 loopback driver
+   depends on VIDEO_V4L2  VIDEO_DEV
+   help
+ Say Y if you want to use v4l2 loopback driver.
+ Looback driver allows its user to present any userspace
+ video as a v4l2 device that can be handy for testing purpose,
+ or for fixing bugs like upside down image, or for adding
+ nice effects to video chats
+ This driver can be compiled as a module, called v4l2loopback.
+
 source drivers/media/video/bt8xx/Kconfig
 
 config VIDEO_PMS
diff -uprN v4l-dvb.orig/linux/drivers/media/video/Makefile v4l-
dvb.my/linux/drivers/media/video/Makefile
--- v4l-dvb.orig/linux/drivers/media/video/Makefile 2009-05-17 
22:39:41.0 
+0300
+++ v4l-dvb.my/linux/drivers/media/video/Makefile   2009-05-17 
22:41:22.0 
+0300
@@ -134,6 +134,7 @@ obj-$(CONFIG_VIDEO_IVTV) += ivtv/
 obj-$(CONFIG_VIDEO_CX18) += cx18/
 
 obj-$(CONFIG_VIDEO_VIVI) += vivi.o
+obj-$(CONFIG_VIDEO_V4L2_LOOPBACK) += v4l2loopback.o
 obj-$(CONFIG_VIDEO_CX23885) += cx23885/
 
 obj-$(CONFIG_VIDEO_OMAP2)  += omap2cam.o
diff -uprN v4l-dvb.orig/linux/drivers/media/video/v4l2loopback.c v4l-
dvb.my/linux/drivers/media/video/v4l2loopback.c
--- v4l-dvb.orig/linux/drivers/media/video/v4l2loopback.c   1970-01-01 
03:00:00.0 +0300
+++ v4l-dvb.my/linux/drivers/media/video/v4l2loopback.c 2009-05-17 
23:41:07.0 +0300
@@ -0,0 +1,774 @@
+/*
+ * v4l2loopback.c  --  video 4 linux loopback driver
+ *
+ * Copyright (C) 2005-2009
+ * Vasily Levin (vas...@gmail.com)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ */
+#include linux/version.h
+#include linux/vmalloc.h
+#include linux/mm.h
+#include linux/time.h
+#include linux/module.h
+#include linux/videodev2.h
+#include media/v4l2-ioctl.h
+#include media/v4l2-common.h
+
+#define YAVLD_STREAMING
+
+MODULE_DESCRIPTION(V4L2 loopback video device);
+MODULE_VERSION(0.1.1);
+MODULE_AUTHOR(Vasily Levin);
+MODULE_LICENSE(GPL);
+
+/* module structures */
+/* TODO(vasaka) use typenames which are common to kernel, but first find out if
+ * it is needed */
+/* struct keeping state and settings of loopback device */
+struct v4l2_loopback_device {
+   struct video_device *vdev;
+   /* pixel and stream format */
+   struct v4l2_pix_format pix_format;
+   struct v4l2_captureparm capture_param;
+   /* buffers stuff */
+   u8 *image; /* pointer to actual buffers data */
+   int buffers_number;  /* should not be big, 4 is a good choice */
+   struct v4l2_buffer *buffers;/* inner driver buffers */
+   int write_position; /* number of last written frame + 1 */
+   long buffer_size;
+   /* sync stuff */
+   atomic_t open_count;
+   int ready_for_capture;/* set to true when at least one writer opened
+ * device and negotiated format */
+   wait_queue_head_t read_event;
+};
+
+/* types of opener shows what opener wants to do with loopback */
+enum opener_type {
+   UNNEGOTIATED = 0,
+   READER = 1,
+   WRITER = 2,
+};
+
+/* struct keeping state and type of opener */
+struct v4l2_loopback_opener {
+   enum opener_type type;
+   int buffers_number;
+   int position; /* number of last processed frame + 1 or
+  * write_position - 1 if reader went out of sync */
+   struct v4l2_buffer *buffers;
+};
+
+/* module parameters */
+static int debug = 1;
+module_param(debug, int, 0);
+MODULE_PARM_DESC(debug, if debug output is enabled, values are 0, 2 or 3);
+
+static int max_buffers_number = 4;
+module_param(max_buffers_number, int, 0);
+MODULE_PARM_DESC(max_buffers_number, how many buffers should be allocated);
+
+static int max_openers = 10;
+module_param(max_openers, int, 0);
+MODULE_PARM_DESC(max_openers, how many users can open loopback device);
+
+/* module constants */
+#define 

[REVIEW v4.1] v4l2 loopback

2009-05-17 Thread Vasily Levin
In this patch revision fixed complains from checkpatch.pl
spell check of comments done

v4 was wrong one
---
This patch introduces v4l2 loopback module

From: Vasily Levin vas...@gmail.com

This is v4l2 loopback driver which can be used to make available any userspace
video as v4l2 device. Initially it was written to make videoeffects available
to Skype, but in fact it have many more uses.

Priority: normal

Signed-off-by: Vasily Levin vas...@gmail.com

diff -uprN v4l-dvb.orig/linux/drivers/media/video/Kconfig 
v4l-dvb.my/linux/drivers/media/video/Kconfig
--- v4l-dvb.orig/linux/drivers/media/video/Kconfig  2009-05-17 
22:39:41.0 +0300
+++ v4l-dvb.my/linux/drivers/media/video/Kconfig2009-05-17 
22:41:22.0 +0300
@@ -497,6 +497,17 @@ config VIDEO_VIVI
  Say Y here if you want to test video apps or debug V4L devices.
  In doubt, say N.
 
+config VIDEO_V4L2_LOOPBACK
+   tristate v4l2 loopback driver
+   depends on VIDEO_V4L2  VIDEO_DEV
+   help
+ Say Y if you want to use v4l2 loopback driver.
+ Looback driver allows its user to present any userspace
+ video as a v4l2 device that can be handy for testing purpose,
+ or for fixing bugs like upside down image, or for adding
+ nice effects to video chats
+ This driver can be compiled as a module, called v4l2loopback.
+
 source drivers/media/video/bt8xx/Kconfig
 
 config VIDEO_PMS
diff -uprN v4l-dvb.orig/linux/drivers/media/video/Makefile 
v4l-dvb.my/linux/drivers/media/video/Makefile
--- v4l-dvb.orig/linux/drivers/media/video/Makefile 2009-05-17 
22:39:41.0 +0300
+++ v4l-dvb.my/linux/drivers/media/video/Makefile   2009-05-17 
22:41:22.0 +0300
@@ -134,6 +134,7 @@ obj-$(CONFIG_VIDEO_IVTV) += ivtv/
 obj-$(CONFIG_VIDEO_CX18) += cx18/
 
 obj-$(CONFIG_VIDEO_VIVI) += vivi.o
+obj-$(CONFIG_VIDEO_V4L2_LOOPBACK) += v4l2loopback.o
 obj-$(CONFIG_VIDEO_CX23885) += cx23885/
 
 obj-$(CONFIG_VIDEO_OMAP2)  += omap2cam.o
diff -uprN v4l-dvb.orig/linux/drivers/media/video/v4l2loopback.c 
v4l-dvb.my/linux/drivers/media/video/v4l2loopback.c
--- v4l-dvb.orig/linux/drivers/media/video/v4l2loopback.c   1970-01-01 
03:00:00.0 +0300
+++ v4l-dvb.my/linux/drivers/media/video/v4l2loopback.c 2009-05-17 
23:41:07.0 +0300
@@ -0,0 +1,774 @@
+/*
+ * v4l2loopback.c  --  video 4 linux loopback driver
+ *
+ * Copyright (C) 2005-2009
+ * Vasily Levin (vas...@gmail.com)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ */
+#include linux/version.h
+#include linux/vmalloc.h
+#include linux/mm.h
+#include linux/time.h
+#include linux/module.h
+#include linux/videodev2.h
+#include media/v4l2-ioctl.h
+#include media/v4l2-common.h
+
+#define YAVLD_STREAMING
+
+MODULE_DESCRIPTION(V4L2 loopback video device);
+MODULE_VERSION(0.1.1);
+MODULE_AUTHOR(Vasily Levin);
+MODULE_LICENSE(GPL);
+
+/* module structures */
+/* TODO(vasaka) use typenames which are common to kernel, but first find out if
+ * it is needed */
+/* struct keeping state and settings of loopback device */
+struct v4l2_loopback_device {
+   struct video_device *vdev;
+   /* pixel and stream format */
+   struct v4l2_pix_format pix_format;
+   struct v4l2_captureparm capture_param;
+   /* buffers stuff */
+   u8 *image; /* pointer to actual buffers data */
+   int buffers_number;  /* should not be big, 4 is a good choice */
+   struct v4l2_buffer *buffers;/* inner driver buffers */
+   int write_position; /* number of last written frame + 1 */
+   long buffer_size;
+   /* sync stuff */
+   atomic_t open_count;
+   int ready_for_capture;/* set to true when at least one writer opened
+ * device and negotiated format */
+   wait_queue_head_t read_event;
+};
+
+/* types of opener shows what opener wants to do with loopback */
+enum opener_type {
+   UNNEGOTIATED = 0,
+   READER = 1,
+   WRITER = 2,
+};
+
+/* struct keeping state and type of opener */
+struct v4l2_loopback_opener {
+   enum opener_type type;
+   int buffers_number;
+   int position; /* number of last processed frame + 1 or
+  * write_position - 1 if reader went out of sync */
+   struct v4l2_buffer *buffers;
+};
+
+/* module parameters */
+static int debug = 1;
+module_param(debug, int, 0);
+MODULE_PARM_DESC(debug, if debug output is enabled, values are 0, 2 or 3);
+
+static int max_buffers_number = 4;
+module_param(max_buffers_number, int, 0);
+MODULE_PARM_DESC(max_buffers_number, how many buffers should be allocated);
+
+static int max_openers = 10;
+module_param(max_openers, int, 0);
+MODULE_PARM_DESC(max_openers, how many users can open loopback device);
+
+/* module 

[PATCH]saa7134-video.c: poll method lose race condition

2009-05-17 Thread figo.zhang
saa7134-video.c: poll method lose race condition


Signed-off-by: Figo.zhang figo.zh...@kolorific.com
--- 
drivers/media/video/saa7134/saa7134-video.c |9 ++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/media/video/saa7134/saa7134-video.c 
b/drivers/media/video/saa7134/saa7134-video.c
index 493cad9..95733df 100644
--- a/drivers/media/video/saa7134/saa7134-video.c
+++ b/drivers/media/video/saa7134/saa7134-video.c
@@ -1423,11 +1423,13 @@ video_poll(struct file *file, struct poll_table_struct 
*wait)
 {
struct saa7134_fh *fh = file-private_data;
struct videobuf_buffer *buf = NULL;
+   unsigned int rc = 0;
 
if (V4L2_BUF_TYPE_VBI_CAPTURE == fh-type)
return videobuf_poll_stream(file, fh-vbi, wait);
 
if (res_check(fh,RESOURCE_VIDEO)) {
+   mutex_lock(fh-cap.vb_lock);
if (!list_empty(fh-cap.stream))
buf = list_entry(fh-cap.stream.next, struct 
videobuf_buffer, stream);
} else {
@@ -1446,13 +1448,14 @@ video_poll(struct file *file, struct poll_table_struct 
*wait)
}
 
if (!buf)
-   return POLLERR;
+   rc = POLLERR;
 
poll_wait(file, buf-done, wait);
if (buf-state == VIDEOBUF_DONE ||
buf-state == VIDEOBUF_ERROR)
-   return POLLIN|POLLRDNORM;
-   return 0;
+   rc = POLLIN|POLLRDNORM;
+   mutex_unlock(fh-cap.vb_lock);
+   return rc;
 
 err:
mutex_unlock(fh-cap.vb_lock);


--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH]media/video: minor have assigned value twice

2009-05-17 Thread figo.zhang
The variable minor have assigned value twice, the first time is in the initial 
video_devicedata struct in
those drivers,pls see saa7134-video.c,line 2503.

Signed-off-by: Figo.zhang figo.zh...@kolorific.com
 ---
 drivers/media/video/bt8xx/bttv-driver.c|1 -
 drivers/media/video/cx23885/cx23885-417.c  |1 -
 drivers/media/video/cx88/cx88-core.c   |1 -
 drivers/media/video/saa7134/saa7134-core.c |1 -
 4 files changed, 0 insertions(+), 4 deletions(-)

diff --git a/drivers/media/video/bt8xx/bttv-driver.c 
b/drivers/media/video/bt8xx/bttv-driver.c
index 23b7499..539ae45 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -4166,7 +4166,6 @@ static struct video_device *vdev_init(struct bttv *btv,
if (NULL == vfd)
return NULL;
*vfd = *template;
-   vfd-minor   = -1;
vfd-v4l2_dev = btv-c.v4l2_dev;
vfd-release = video_device_release;
vfd-debug   = bttv_debug;
diff --git a/drivers/media/video/cx23885/cx23885-417.c 
b/drivers/media/video/cx23885/cx23885-417.c
index 6f5df90..2943bfd 100644
--- a/drivers/media/video/cx23885/cx23885-417.c
+++ b/drivers/media/video/cx23885/cx23885-417.c
@@ -1742,7 +1742,6 @@ static struct video_device *cx23885_video_dev_alloc(
if (NULL == vfd)
return NULL;
*vfd = *template;
-   vfd-minor   = -1;
snprintf(vfd-name, sizeof(vfd-name), %s %s (%s), dev-name,
type, cx23885_boards[tsport-dev-board].name);
vfd-parent  = pci-dev;
diff --git a/drivers/media/video/cx88/cx88-core.c 
b/drivers/media/video/cx88/cx88-core.c
index 0e149b2..b4049de 100644
--- a/drivers/media/video/cx88/cx88-core.c
+++ b/drivers/media/video/cx88/cx88-core.c
@@ -1010,7 +1010,6 @@ struct video_device *cx88_vdev_init(struct cx88_core 
*core,
if (NULL == vfd)
return NULL;
*vfd = *template;
-   vfd-minor   = -1;
vfd-v4l2_dev = core-v4l2_dev;
vfd-parent = pci-dev;
vfd-release = video_device_release;
diff --git a/drivers/media/video/saa7134/saa7134-core.c 
b/drivers/media/video/saa7134/saa7134-core.c
index 2def6fe..37b1452 100644
--- a/drivers/media/video/saa7134/saa7134-core.c
+++ b/drivers/media/video/saa7134/saa7134-core.c
@@ -775,7 +775,6 @@ static struct video_device *vdev_init(struct saa7134_dev 
*dev,
if (NULL == vfd)
return NULL;
*vfd = *template;
-   vfd-minor   = -1;
vfd-v4l2_dev  = dev-v4l2_dev;
vfd-release = video_device_release;
vfd-debug   = video_debug;


--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH]saa7134-video.c: poll method lose race condition

2009-05-17 Thread hermann pitton

Am Montag, den 18.05.2009, 10:13 +0800 schrieb figo.zhang:
 saa7134-video.c: poll method lose race condition
 
 
 Signed-off-by: Figo.zhang figo.zh...@kolorific.com
 --- 
 drivers/media/video/saa7134/saa7134-video.c |9 ++---
  1 files changed, 6 insertions(+), 3 deletions(-)
 
 diff --git a/drivers/media/video/saa7134/saa7134-video.c 
 b/drivers/media/video/saa7134/saa7134-video.c
 index 493cad9..95733df 100644
 --- a/drivers/media/video/saa7134/saa7134-video.c
 +++ b/drivers/media/video/saa7134/saa7134-video.c
 @@ -1423,11 +1423,13 @@ video_poll(struct file *file, struct 
 poll_table_struct *wait)
  {
   struct saa7134_fh *fh = file-private_data;
   struct videobuf_buffer *buf = NULL;
 + unsigned int rc = 0;
  
   if (V4L2_BUF_TYPE_VBI_CAPTURE == fh-type)
   return videobuf_poll_stream(file, fh-vbi, wait);
  
   if (res_check(fh,RESOURCE_VIDEO)) {
 + mutex_lock(fh-cap.vb_lock);
   if (!list_empty(fh-cap.stream))
   buf = list_entry(fh-cap.stream.next, struct 
 videobuf_buffer, stream);
   } else {
 @@ -1446,13 +1448,14 @@ video_poll(struct file *file, struct 
 poll_table_struct *wait)
   }
  
   if (!buf)
 - return POLLERR;
 + rc = POLLERR;
  
   poll_wait(file, buf-done, wait);
   if (buf-state == VIDEOBUF_DONE ||
   buf-state == VIDEOBUF_ERROR)
 - return POLLIN|POLLRDNORM;
 - return 0;
 + rc = POLLIN|POLLRDNORM;
 + mutex_unlock(fh-cap.vb_lock);
 + return rc;
  
  err:
   mutex_unlock(fh-cap.vb_lock);
 
 

Can you please give some description on what your patch might do
something?

Or are you a robot?

Then, please give us your serial number, production year, and when we
can expect you are out of duty and replaced ;)

Cheers,
Hermann




--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH]saa7134-video.c: poll method lose race condition

2009-05-17 Thread hermann pitton

Am Montag, den 18.05.2009, 11:53 +0800 schrieb figo.zhang:
 On Mon, 2009-05-18 at 05:07 +0200, hermann pitton wrote:
  Am Montag, den 18.05.2009, 10:13 +0800 schrieb figo.zhang:
   saa7134-video.c: poll method lose race condition
   
   
   Signed-off-by: Figo.zhang figo.zh...@kolorific.com
   --- 
   drivers/media/video/saa7134/saa7134-video.c |9 ++---
1 files changed, 6 insertions(+), 3 deletions(-)
   
   diff --git a/drivers/media/video/saa7134/saa7134-video.c 
   b/drivers/media/video/saa7134/saa7134-video.c
   index 493cad9..95733df 100644
   --- a/drivers/media/video/saa7134/saa7134-video.c
   +++ b/drivers/media/video/saa7134/saa7134-video.c
   @@ -1423,11 +1423,13 @@ video_poll(struct file *file, struct 
   poll_table_struct *wait)
{
 struct saa7134_fh *fh = file-private_data;
 struct videobuf_buffer *buf = NULL;
   + unsigned int rc = 0;

 if (V4L2_BUF_TYPE_VBI_CAPTURE == fh-type)
 return videobuf_poll_stream(file, fh-vbi, wait);

 if (res_check(fh,RESOURCE_VIDEO)) {
   + mutex_lock(fh-cap.vb_lock);
 if (!list_empty(fh-cap.stream))
 buf = list_entry(fh-cap.stream.next, struct 
   videobuf_buffer, stream);
 } else {
   @@ -1446,13 +1448,14 @@ video_poll(struct file *file, struct 
   poll_table_struct *wait)
 }

 if (!buf)
   - return POLLERR;
   + rc = POLLERR;

 poll_wait(file, buf-done, wait);
 if (buf-state == VIDEOBUF_DONE ||
 buf-state == VIDEOBUF_ERROR)
   - return POLLIN|POLLRDNORM;
   - return 0;
   + rc = POLLIN|POLLRDNORM;
   + mutex_unlock(fh-cap.vb_lock);
   + return rc;

err:
 mutex_unlock(fh-cap.vb_lock);
   
   
  
  Can you please give some description on what your patch might do
  something?
  
  Or are you a robot?
  
  Then, please give us your serial number, production year, and when we
  can expect you are out of duty and replaced ;)
  
  Cheers,
  Hermann
  
  
  
 
 hi, I just using the saa7134 chip to do a video capture card. The
 saa7134 driver in linux kernel, i found that the poll method have lose 
 race condition for RESOURCE_VIDEO. It have better to add a mutex lock.
 

OK then, but better stay away from the core files.

On what kernel this is?

Give us some copy/paste dmesg output for your card with i2c_scan=1.
Don't lose tuner stuff on this.

Thanks,
Hermann




--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH]saa7134-video.c: poll method lose race condition

2009-05-17 Thread figo.zhang
On Mon, 2009-05-18 at 05:49 +0200, hermann pitton wrote:
 Am Montag, den 18.05.2009, 11:53 +0800 schrieb figo.zhang:
  On Mon, 2009-05-18 at 05:07 +0200, hermann pitton wrote:
   Am Montag, den 18.05.2009, 10:13 +0800 schrieb figo.zhang:
saa7134-video.c: poll method lose race condition


Signed-off-by: Figo.zhang figo.zh...@kolorific.com
--- 
drivers/media/video/saa7134/saa7134-video.c |9 ++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/media/video/saa7134/saa7134-video.c 
b/drivers/media/video/saa7134/saa7134-video.c
index 493cad9..95733df 100644
--- a/drivers/media/video/saa7134/saa7134-video.c
+++ b/drivers/media/video/saa7134/saa7134-video.c
@@ -1423,11 +1423,13 @@ video_poll(struct file *file, struct 
poll_table_struct *wait)
 {
struct saa7134_fh *fh = file-private_data;
struct videobuf_buffer *buf = NULL;
+   unsigned int rc = 0;
 
if (V4L2_BUF_TYPE_VBI_CAPTURE == fh-type)
return videobuf_poll_stream(file, fh-vbi, wait);
 
if (res_check(fh,RESOURCE_VIDEO)) {
+   mutex_lock(fh-cap.vb_lock);
if (!list_empty(fh-cap.stream))
buf = list_entry(fh-cap.stream.next, struct 
videobuf_buffer, stream);
} else {
@@ -1446,13 +1448,14 @@ video_poll(struct file *file, struct 
poll_table_struct *wait)
}
 
if (!buf)
-   return POLLERR;
+   rc = POLLERR;
 
poll_wait(file, buf-done, wait);
if (buf-state == VIDEOBUF_DONE ||
buf-state == VIDEOBUF_ERROR)
-   return POLLIN|POLLRDNORM;
-   return 0;
+   rc = POLLIN|POLLRDNORM;
+   mutex_unlock(fh-cap.vb_lock);
+   return rc;
 
 err:
mutex_unlock(fh-cap.vb_lock);


   
   Can you please give some description on what your patch might do
   something?
   
   Or are you a robot?
   
   Then, please give us your serial number, production year, and when we
   can expect you are out of duty and replaced ;)
   
   Cheers,
   Hermann
   
   
   
  
  hi, I just using the saa7134 chip to do a video capture card. The
  saa7134 driver in linux kernel, i found that the poll method have lose 
  race condition for RESOURCE_VIDEO. It have better to add a mutex lock.
  
 
 OK then, but better stay away from the core files.
 
 On what kernel this is?
 
 Give us some copy/paste dmesg output for your card with i2c_scan=1.
 Don't lose tuner stuff on this.
 
 Thanks,
 Hermann
 
 
 
hi, hermann pitton ,i am using the git-kernel, the card have some
hardware problems now.

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH]saa7134-video.c: poll method lose race condition

2009-05-17 Thread hermann pitton
[big snip]
  
  
  
 hi, hermann pitton ,i am using the git-kernel, the card have some
 hardware problems now.

If it is a new card, 2.6.27 is for sure the last stable.

We might get it all down, but 2.6.30 looked promising again.

Seems there is some hungry black hole in between ;)

Cheers,
Hermann


--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html