Re: [PATCH 2/4] pcm990 baseboard: add camera bus width switch setting

2009-03-12 Thread Sascha Hauer
On Thu, Mar 12, 2009 at 09:31:55AM +0100, Guennadi Liakhovetski wrote:
 On Wed, 11 Mar 2009, Sascha Hauer wrote:
 
  Some Phytec cameras have a I2C GPIO expander which allows it to
  switch between different sensor bus widths. This was previously
  handled in the camera driver. Since handling of this switch
  varies on several boards the cameras are used on, the board
  support seems a better place to handle the switch
  
  Signed-off-by: Sascha Hauer s.ha...@pengutronix.de
  ---
   arch/arm/mach-pxa/pcm990-baseboard.c |   50 
  +++--
   1 files changed, 41 insertions(+), 9 deletions(-)
  
  diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c 
  b/arch/arm/mach-pxa/pcm990-baseboard.c
  index 34841c7..e9feb89 100644
  --- a/arch/arm/mach-pxa/pcm990-baseboard.c
  +++ b/arch/arm/mach-pxa/pcm990-baseboard.c
  @@ -381,14 +381,46 @@ static struct pca953x_platform_data pca9536_data = {
  .gpio_base  = NR_BUILTIN_GPIO + 1,
   };
   
  -static struct soc_camera_link iclink[] = {
  -   {
  -   .bus_id = 0, /* Must match with the camera ID above */
  -   .gpio   = NR_BUILTIN_GPIO + 1,
  -   }, {
  -   .bus_id = 0, /* Must match with the camera ID above */
  -   .gpio   = -ENXIO,
  +static int gpio_bus_switch;
  +
  +static int pcm990_camera_set_bus_param(struct device *dev,
 
 The prototype will change to use struct soc_camera_link *

OK

 
  +   unsigned long flags)
  +{
  +   if (gpio_bus_switch = 0)
  +   return 0;
  +
  +   if (flags  SOCAM_DATAWIDTH_8)
  +   gpio_set_value(NR_BUILTIN_GPIO + 1, 1);
  +   else
  +   gpio_set_value(NR_BUILTIN_GPIO + 1, 0);
 
 You wanted to use gpio_bus_switch for these.

s/wanted to/should/?

OK

 
  +
  +   return 0;
  +}
  +
  +static unsigned long pcm990_camera_query_bus_param(struct device *dev)
  +{
  +   int ret;
  +
  +   if (!gpio_bus_switch) {
  +   ret = gpio_request(NR_BUILTIN_GPIO + 1, camera);
  +   if (!ret) {
  +   gpio_bus_switch = NR_BUILTIN_GPIO + 1;
  +   gpio_direction_output(gpio_bus_switch, 0);
  +   } else
  +   gpio_bus_switch = -1;
 
 This is a purely internal variable, so, I won't insist if you disagree, 
 but, I think, a scheme non-negative for a valid value or a negative error 
 code looks better, cf.
 
 If you want to initialize a structure with an invalid GPIO number, use
 some negative number (perhaps -EINVAL); that will never be valid.
 
 (Documentation/gpio.txt). -1 looks like you're going to perform 
 calculations with it.

OK

 
  }
  +
  +   if (gpio_bus_switch  0)
  +   return SOCAM_DATAWIDTH_8 | SOCAM_DATAWIDTH_10;
  +   else
  +   return SOCAM_DATAWIDTH_10;
  +}
  +
  +static struct soc_camera_link iclink = {
  +   .bus_id = 0, /* Must match with the camera ID above */
  +   .query_bus_param = pcm990_camera_query_bus_param,
  +   .set_bus_param = pcm990_camera_set_bus_param,
  +   .gpio   = NR_BUILTIN_GPIO + 1,
 
 There's one patch missing in your patch series:
 
 [PATCH 5/5] Remove the gpio member from the struct soc_camera_link

OK. I saw this member is unnecessary now and forgot it a minute later...

Sascha

-- 
Pengutronix e.K.   | |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
--
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 2/4] pcm990 baseboard: add camera bus width switch setting

2009-03-12 Thread Guennadi Liakhovetski
One more thing I noticed while looking at your patch 3/4:

 +static int pcm990_camera_set_bus_param(struct device *dev,
 + unsigned long flags)
 +{
 + if (gpio_bus_switch = 0)
 + return 0;
 +
 + if (flags  SOCAM_DATAWIDTH_8)
 + gpio_set_value(NR_BUILTIN_GPIO + 1, 1);
 + else
 + gpio_set_value(NR_BUILTIN_GPIO + 1, 0);

Originally the logic here was only if flags == SOCAM_DATAWIDTH_8, switch 
to 8 bits, otherwise do 10 bits. I.e., if flags == SOCAM_DATAWIDTH_8 | 
SOCAM_DATAWIDTH_10, it would still do the default (and wider) 10 bits. Do 
you have any reason to change that logic?

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
--
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 2/4] pcm990 baseboard: add camera bus width switch setting

2009-03-12 Thread Sascha Hauer
On Thu, Mar 12, 2009 at 09:40:46AM +0100, Guennadi Liakhovetski wrote:
 One more thing I noticed while looking at your patch 3/4:
 
  +static int pcm990_camera_set_bus_param(struct device *dev,
  +   unsigned long flags)
  +{
  +   if (gpio_bus_switch = 0)
  +   return 0;
  +
  +   if (flags  SOCAM_DATAWIDTH_8)
  +   gpio_set_value(NR_BUILTIN_GPIO + 1, 1);
  +   else
  +   gpio_set_value(NR_BUILTIN_GPIO + 1, 0);
 
 Originally the logic here was only if flags == SOCAM_DATAWIDTH_8, switch 
 to 8 bits, otherwise do 10 bits. I.e., if flags == SOCAM_DATAWIDTH_8 | 
 SOCAM_DATAWIDTH_10, it would still do the default (and wider) 10 bits. Do 
 you have any reason to change that logic?

I was not aware that I changed any logic. I thought I would get here
with only one of the SOCAM_DATAWIDTH_* set. Isn't it a bug when we get
here with more than one width flags set?

The mt9v022 driver has this in set_bus_param:


   /* Only one width bit may be set */
   if (!is_power_of_2(width_flag))
   return -EINVAL;


And I think it makes sense.

Sascha


-- 
Pengutronix e.K.   | |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
--
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 2/4] pcm990 baseboard: add camera bus width switch setting

2009-03-12 Thread Guennadi Liakhovetski
On Thu, 12 Mar 2009, Sascha Hauer wrote:

 On Thu, Mar 12, 2009 at 09:40:46AM +0100, Guennadi Liakhovetski wrote:
  One more thing I noticed while looking at your patch 3/4:
  
   +static int pcm990_camera_set_bus_param(struct device *dev,
   + unsigned long flags)
   +{
   + if (gpio_bus_switch = 0)
   + return 0;
   +
   + if (flags  SOCAM_DATAWIDTH_8)
   + gpio_set_value(NR_BUILTIN_GPIO + 1, 1);
   + else
   + gpio_set_value(NR_BUILTIN_GPIO + 1, 0);
  
  Originally the logic here was only if flags == SOCAM_DATAWIDTH_8, switch 
  to 8 bits, otherwise do 10 bits. I.e., if flags == SOCAM_DATAWIDTH_8 | 
  SOCAM_DATAWIDTH_10, it would still do the default (and wider) 10 bits. Do 
  you have any reason to change that logic?
 
 I was not aware that I changed any logic. I thought I would get here
 with only one of the SOCAM_DATAWIDTH_* set. Isn't it a bug when we get
 here with more than one width flags set?
 
 The mt9v022 driver has this in set_bus_param:
 
 
  /* Only one width bit may be set */
  if (!is_power_of_2(width_flag))
  return -EINVAL;
 
 
 And I think it makes sense.

Ok, then, could you, please add the same test to mt9m001? And, as I 
mentioned in a comment to 3/4, please, return an error if switching is 
requested but unsupported.

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
--
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: EC168 support?!

2009-03-12 Thread bloehei
 bloehei wrote:
  40 00 00 00 40 08 c5 03  12 0c 93 80 06 12 0d 43 74 83 f0 e5 48 30 e3
  78

 hmm, at least that last fw upload packet is wrong. It should look like
 40 00 00 00 00 18 c5 03  49 9f f5

 I did yesterday many changes and fixed one bad bug that could be behind
 that. Please test with latest tree at:
 http://linuxtv.org/hg/~anttip/ec168/

 regards
 Antti

Hi,
GREAT! The firmware now gets uploaded and I can watch all channels in my 
region with the linux vdr. Thanks a lot! 
Here's my system log:

 ec168_module_init:
 usbcore: registered new interface driver dvb_usb_ec168
 usb 1-3: new high speed USB device using ehci_hcd and address 2
 usb 1-3: configuration #1 chosen from 1 choice
 ec168_probe: interface:0
 ec168_identify_state:
 c0 01 00 00 01 00 01 00  00
 ec168_identify_state: reply:00
 dvb-usb: found a 'E3C EC168 DVB-T USB2.0 reference design' in cold state,
 will try to load a firmware usb 1-3: firmware: requesting dvb-usb-ec168.fw
 dvb-usb: downloading firmware from file 'dvb-usb-ec168.fw'
 ec168_download_firmware:
 40 00 00 00 00 00 00 08  02 13 e4 02 0e d3 00 00 00 00 00 02 14 f7 00 00
 00 00 00 ---cut---
 40 00 00 00 00 08 00 08  4a 12 0c 5b 04 f0 02 08 4b 12 09 7f 12 0d 43 74
 82 f0 12 ---cut---
 40 00 00 00 00 10 00 08  9d ec 98 40 05 fc ee 9d fe 0f d5 f0 e9 e4 ce fd
 22 ed f8 ---cut---
 40 00 00 00 00 18 c5 03  49 9f f5 49 e5 48 94 00 f5 48 80 b3 e4 f5 24 f5
 25 22 af ---cut---
 40 01 00 00 01 00 00 00 
 40 04 01 00 08 00 00 00 
 ec168_rw_udev: usb_control_msg failed :-110
 40 04 00 00 06 02 00 00 
 dvb-usb: found a 'E3C EC168 DVB-T USB2.0 reference design' in warm state.
 dvb-usb: will pass the complete MPEG2 transport stream to the software
 demuxer. DVB: registering new adapter (E3C EC168 DVB-T USB2.0 reference
 design) ec168_ec100_frontend_attach:
 DVB: registering adapter 0 frontend 0 (E3C EC100 DVB-T)...
 ec168_mxl5003s_tuner_attach:
 MXL5005S: Attached at address 0xc6
 dvb-usb: E3C EC168 DVB-T USB2.0 reference design successfully initialized
 and connected. ec168_probe: interface:1
 ec168_identify_state:
 c0 01 00 00 01 00 01 00  01
 ec168_identify_state: reply:01
 dvb-usb: found a 'E3C EC168 DVB-T USB2.0 reference design' in warm state.
 dvb-usb: will pass the complete MPEG2 transport stream to the software
 demuxer. DVB: registering new adapter (E3C EC168 DVB-T USB2.0 reference
 design) ec168_ec100_frontend_attach:
 DVB: registering adapter 1 frontend 0 (E3C EC100 DVB-T)...
 ec168_mxl5003s_tuner_attach:
 MXL5005S: Attached at address 0xc6
 dvb-usb: E3C EC168 DVB-T USB2.0 reference design successfully initialized
 and connected.

USB-Id:  18b4:1689 
Card name: Sinovideo SV DVB-T 3420B

If I can help with testing, just let me know.

Regards,
Jo

--
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 4/4] mt9v022: allow setting of bus width from board code

2009-03-12 Thread Guennadi Liakhovetski
On Wed, 11 Mar 2009, Sascha Hauer wrote:

 This patch removes the phytec specific setting of the bus width
 and switches to the more generic query_bus_param/set_bus_param
 hooks
 
 Signed-off-by: Sascha Hauer s.ha...@pengutronix.de
 ---
  drivers/media/video/Kconfig   |7 ---
  drivers/media/video/mt9v022.c |   97 
 +
  2 files changed, 11 insertions(+), 93 deletions(-)
 
 diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
 index 5fc1531..071d66f 100644
 --- a/drivers/media/video/Kconfig
 +++ b/drivers/media/video/Kconfig
 @@ -747,13 +747,6 @@ config SOC_CAMERA_MT9V022
   help
 This driver supports MT9V022 cameras from Micron
  
 -config MT9V022_PCA9536_SWITCH
 - bool pca9536 datawidth switch for mt9v022
 - depends on SOC_CAMERA_MT9V022  GENERIC_GPIO
 - help
 -   Select this if your MT9V022 camera uses a PCA9536 I2C GPIO
 -   extender to switch between 8 and 10 bit datawidth modes
 -
  config SOC_CAMERA_TW9910
   tristate tw9910 support
   depends on SOC_CAMERA  I2C
 diff --git a/drivers/media/video/mt9v022.c b/drivers/media/video/mt9v022.c
 index b04c8cb..26f97eb 100644
 --- a/drivers/media/video/mt9v022.c
 +++ b/drivers/media/video/mt9v022.c
 @@ -209,66 +209,6 @@ static int mt9v022_stop_capture(struct soc_camera_device 
 *icd)
   return 0;
  }
  
 -static int bus_switch_request(struct mt9v022 *mt9v022, struct 
 soc_camera_link *icl)
 -{
 -#ifdef CONFIG_MT9V022_PCA9536_SWITCH
 - int ret;
 - unsigned int gpio = icl-gpio;
 -
 - if (gpio_is_valid(gpio)) {
 - /* We have a data bus switch. */
 - ret = gpio_request(gpio, mt9v022);
 - if (ret  0) {
 - dev_err(mt9v022-client-dev, Cannot get GPIO %u\n, 
 gpio);
 - return ret;
 - }
 -
 - ret = gpio_direction_output(gpio, 0);
 - if (ret  0) {
 - dev_err(mt9v022-client-dev,
 - Cannot set GPIO %u to output\n, gpio);
 - gpio_free(gpio);
 - return ret;
 - }
 - }
 -
 - mt9v022-switch_gpio = gpio;
 -#else
 - mt9v022-switch_gpio = -EINVAL;
 -#endif
 - return 0;
 -}
 -
 -static void bus_switch_release(struct mt9v022 *mt9v022)
 -{
 -#ifdef CONFIG_MT9V022_PCA9536_SWITCH
 - if (gpio_is_valid(mt9v022-switch_gpio))
 - gpio_free(mt9v022-switch_gpio);
 -#endif
 -}
 -
 -static int bus_switch_act(struct mt9v022 *mt9v022, int go8bit)
 -{
 -#ifdef CONFIG_MT9V022_PCA9536_SWITCH
 - if (!gpio_is_valid(mt9v022-switch_gpio))
 - return -ENODEV;
 -
 - gpio_set_value_cansleep(mt9v022-switch_gpio, go8bit);
 - return 0;
 -#else
 - return -ENODEV;
 -#endif
 -}
 -
 -static int bus_switch_possible(struct mt9v022 *mt9v022)
 -{
 -#ifdef CONFIG_MT9V022_PCA9536_SWITCH
 - return gpio_is_valid(mt9v022-switch_gpio);
 -#else
 - return 0;
 -#endif
 -}
 -
  static int mt9v022_set_bus_param(struct soc_camera_device *icd,
unsigned long flags)
  {
 @@ -282,19 +222,10 @@ static int mt9v022_set_bus_param(struct 
 soc_camera_device *icd,
   if (!is_power_of_2(width_flag))
   return -EINVAL;
  
 - if ((mt9v022-datawidth != 10  (width_flag == SOCAM_DATAWIDTH_10)) ||
 - (mt9v022-datawidth != 9   (width_flag == SOCAM_DATAWIDTH_9)) ||
 - (mt9v022-datawidth != 8   (width_flag == SOCAM_DATAWIDTH_8))) {
 - /* Well, we actually only can do 10 or 8 bits... */
 - if (width_flag == SOCAM_DATAWIDTH_9)
 - return -EINVAL;
 -
 - ret = bus_switch_act(mt9v022,
 -  width_flag == SOCAM_DATAWIDTH_8);
 - if (ret  0)
 + if (icl-set_bus_param) {
 + ret = icl-set_bus_param(mt9v022-client-dev, width_flag);
 + if (ret)
   return ret;
 -
 - mt9v022-datawidth = width_flag == SOCAM_DATAWIDTH_8 ? 8 : 10;
   }
  
   flags = soc_camera_apply_sensor_flags(icl, flags);
 @@ -328,10 +259,14 @@ static int mt9v022_set_bus_param(struct 
 soc_camera_device *icd,
  static unsigned long mt9v022_query_bus_param(struct soc_camera_device *icd)
  {
   struct mt9v022 *mt9v022 = container_of(icd, struct mt9v022, icd);
 - unsigned int width_flag = SOCAM_DATAWIDTH_10;
 + struct soc_camera_link *icl = mt9v022-client-dev.platform_data;
 + unsigned int width_flag;
  
 - if (bus_switch_possible(mt9v022))
 - width_flag |= SOCAM_DATAWIDTH_8;
 + if (icl-query_bus_param)
 + width_flag = icl-query_bus_param(mt9v022-client-dev) 
 + SOCAM_DATAWIDTH_MASK;
 + else
 + width_flag = SOCAM_DATAWIDTH_10;
  
   return SOCAM_PCLK_SAMPLE_RISING | SOCAM_PCLK_SAMPLE_FALLING |
   SOCAM_HSYNC_ACTIVE_HIGH | SOCAM_HSYNC_ACTIVE_LOW |
 @@ -729,6 +664,7 @@ static int 

Re: [PATCH 2/4] pcm990 baseboard: add camera bus width switch setting

2009-03-12 Thread Sascha Hauer
On Thu, Mar 12, 2009 at 10:25:35AM +0100, Guennadi Liakhovetski wrote:
 On Thu, 12 Mar 2009, Sascha Hauer wrote:
 
  On Thu, Mar 12, 2009 at 09:40:46AM +0100, Guennadi Liakhovetski wrote:
   One more thing I noticed while looking at your patch 3/4:
   
+static int pcm990_camera_set_bus_param(struct device *dev,
+   unsigned long flags)
+{
+   if (gpio_bus_switch = 0)
+   return 0;
+
+   if (flags  SOCAM_DATAWIDTH_8)
+   gpio_set_value(NR_BUILTIN_GPIO + 1, 1);
+   else
+   gpio_set_value(NR_BUILTIN_GPIO + 1, 0);
   
   Originally the logic here was only if flags == SOCAM_DATAWIDTH_8, switch 
   to 8 bits, otherwise do 10 bits. I.e., if flags == SOCAM_DATAWIDTH_8 | 
   SOCAM_DATAWIDTH_10, it would still do the default (and wider) 10 bits. Do 
   you have any reason to change that logic?
  
  I was not aware that I changed any logic. I thought I would get here
  with only one of the SOCAM_DATAWIDTH_* set. Isn't it a bug when we get
  here with more than one width flags set?
  
  The mt9v022 driver has this in set_bus_param:
  
  
 /* Only one width bit may be set */
 if (!is_power_of_2(width_flag))
 return -EINVAL;
  
  
  And I think it makes sense.
 
 Ok, then, could you, please add the same test to mt9m001? And, as I 
 mentioned in a comment to 3/4, please, return an error if switching is 
 requested but unsupported.

Ok, will do.

It may be that we need a different approach to the bus width setting in
the longer term. For example the mt9m001 can support any thinkable bus
width of 1 to inf. bits. This depends on the hardware designer who wired
up the connection and not the physical count of data lines the chip has.
I have no idea how to implement this though.

Sascha

-- 
Pengutronix e.K.   | |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
--
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 3/4] mt9m001: allow setting of bus width from board code

2009-03-12 Thread Guennadi Liakhovetski
On Wed, 11 Mar 2009, Sascha Hauer wrote:

 This patch removes the phytec specific setting of the bus width
 and switches to the more generic query_bus_param/set_bus_param
 hooks
 
 Signed-off-by: Sascha Hauer s.ha...@pengutronix.de
 ---
  drivers/media/video/Kconfig   |7 --
  drivers/media/video/mt9m001.c |  130 +---
  2 files changed, 30 insertions(+), 107 deletions(-)
 
 diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
 index 19cf3b8..5fc1531 100644
 --- a/drivers/media/video/Kconfig
 +++ b/drivers/media/video/Kconfig
 @@ -728,13 +728,6 @@ config SOC_CAMERA_MT9M001
 This driver supports MT9M001 cameras from Micron, monochrome
 and colour models.
  
 -config MT9M001_PCA9536_SWITCH
 - bool pca9536 datawidth switch for mt9m001
 - depends on SOC_CAMERA_MT9M001  GENERIC_GPIO
 - help
 -   Select this if your MT9M001 camera uses a PCA9536 I2C GPIO
 -   extender to switch between 8 and 10 bit datawidth modes
 -
  config SOC_CAMERA_MT9M111
   tristate mt9m111 and mt9m112 support
   depends on SOC_CAMERA  I2C
 diff --git a/drivers/media/video/mt9m001.c b/drivers/media/video/mt9m001.c
 index c1bf75e..112c612 100644
 --- a/drivers/media/video/mt9m001.c
 +++ b/drivers/media/video/mt9m001.c
 @@ -75,7 +75,6 @@ struct mt9m001 {
   int model;  /* V4L2_IDENT_MT9M001* codes from v4l2-chip-ident.h */
   int switch_gpio;
   unsigned char autoexposure;
 - unsigned char datawidth;
  };
  
  static int reg_read(struct soc_camera_device *icd, const u8 reg)
 @@ -181,90 +180,17 @@ static int mt9m001_stop_capture(struct 
 soc_camera_device *icd)
   return 0;
  }
  
 -static int bus_switch_request(struct mt9m001 *mt9m001,
 -   struct soc_camera_link *icl)
 -{
 -#ifdef CONFIG_MT9M001_PCA9536_SWITCH
 - int ret;
 - unsigned int gpio = icl-gpio;
 -
 - if (gpio_is_valid(gpio)) {
 - /* We have a data bus switch. */
 - ret = gpio_request(gpio, mt9m001);
 - if (ret  0) {
 - dev_err(mt9m001-client-dev, Cannot get GPIO %u\n,
 - gpio);
 - return ret;
 - }
 -
 - ret = gpio_direction_output(gpio, 0);
 - if (ret  0) {
 - dev_err(mt9m001-client-dev,
 - Cannot set GPIO %u to output\n, gpio);
 - gpio_free(gpio);
 - return ret;
 - }
 - }
 -
 - mt9m001-switch_gpio = gpio;
 -#else
 - mt9m001-switch_gpio = -EINVAL;
 -#endif
 - return 0;
 -}
 -
 -static void bus_switch_release(struct mt9m001 *mt9m001)
 -{
 -#ifdef CONFIG_MT9M001_PCA9536_SWITCH
 - if (gpio_is_valid(mt9m001-switch_gpio))
 - gpio_free(mt9m001-switch_gpio);
 -#endif
 -}
 -
 -static int bus_switch_act(struct mt9m001 *mt9m001, int go8bit)
 -{
 -#ifdef CONFIG_MT9M001_PCA9536_SWITCH
 - if (!gpio_is_valid(mt9m001-switch_gpio))
 - return -ENODEV;
 -
 - gpio_set_value_cansleep(mt9m001-switch_gpio, go8bit);
 - return 0;
 -#else
 - return -ENODEV;
 -#endif
 -}
 -
 -static int bus_switch_possible(struct mt9m001 *mt9m001)
 -{
 -#ifdef CONFIG_MT9M001_PCA9536_SWITCH
 - return gpio_is_valid(mt9m001-switch_gpio);
 -#else
 - return 0;
 -#endif
 -}
 -
  static int mt9m001_set_bus_param(struct soc_camera_device *icd,
unsigned long flags)
  {
   struct mt9m001 *mt9m001 = container_of(icd, struct mt9m001, icd);
 - unsigned int width_flag = flags  SOCAM_DATAWIDTH_MASK;
 - int ret;
 + struct soc_camera_link *icl = mt9m001-client-dev.platform_data;
  
   /* Flags validity verified in test_bus_param */
  
 - if ((mt9m001-datawidth != 10  (width_flag == SOCAM_DATAWIDTH_10)) ||
 - (mt9m001-datawidth != 9   (width_flag == SOCAM_DATAWIDTH_9)) ||
 - (mt9m001-datawidth != 8   (width_flag == SOCAM_DATAWIDTH_8))) {
 - /* Well, we actually only can do 10 or 8 bits... */
 - if (width_flag == SOCAM_DATAWIDTH_9)
 - return -EINVAL;
 - ret = bus_switch_act(mt9m001,
 -  width_flag == SOCAM_DATAWIDTH_8);
 - if (ret  0)
 - return ret;
 -
 - mt9m001-datawidth = width_flag == SOCAM_DATAWIDTH_8 ? 8 : 10;
 - }
 + if (icl-set_bus_param)
 + return icl-set_bus_param(mt9m001-client-dev,
 + flags  SOCAM_DATAWIDTH_MASK);

Not quite. Look at the original code. If no change is requested - just 
return 0. If a change is requested, but switching is impossible - return 
an error - and this is not, what you are doing in 2/4, please fix. So, you 
might still want to preserve .datawidth for the verification.

Calls to camera-device -query_bus_param() and -set_bus_param() methods 
are currently internal to specific host drivers. So, it 

Re: [PULL] http://linuxtv.org/hg/~dheitmueller/hvr950q-analog2

2009-03-12 Thread Mauro Carvalho Chehab
On Wed, 11 Mar 2009 11:25:20 -0400
Devin Heitmueller devin.heitmuel...@gmail.com wrote:

 Hello Mauro,
 
 Please pull from:
 
 http://linuxtv.org/hg/~dheitmueller/hvr950q-analog2
 
 for the following:
 
 xc5000: fix bug for hybrid xc5000 devices with IF other than 5380
 au8522: rename the au8522.c source file
 au8522: move shared state and common functions into a separate header files
 au8522: fix register read/write high bits
 au8522: power down the digital demod when not in use
 au8522: make use of hybrid framework so analog/digital demod can share state
 au8522: add support for analog side of demodulator
 au0828: add support for analog functionality in bridge
 au0828: workaround a bug in the au0828 i2c handling
 au0828: add analog profile for the HVR-850
 au8522: add mutex protecting use of hybrid state
 au0828: Rework the way the analog video binding occurs
 tveeprom: add the xc5000 tuner to the tveeprom definition
 au0828: advertise only NTSC-M (as opposed to all NTSC standards)
 au0828: disable VBI code since it doesn't yet work
 au0828: fix i2c enumeration bug
 au0828: make register debug lines easier to read
 au0828: make g_chip_ident call work properly
 au0828: properly handle missing analog USB endpoint
 au0828: properly handle non-existent analog inputs
 au0828: fix panic on disconnect if analog initialization failed
 au0828: Convert to use v4l2_device/subdev framework
 
 Cheers,
 
 Devin
 


Hi Devin,

There's a bug on your patch series: see this:

Those are the locations of au8522 files at Kernel's tree:
drivers/media/dvb/frontends/au8522.h
drivers/media/dvb/frontends/au8522_dig.c
drivers/media/dvb/frontends/au8522_priv.h
drivers/media/video/au8522_decoder.c

And those are the Makefile rules for au8522.h on 
drivers/media/dvb/frontends/Makefile:

au8522-objs = au8522_dig.o au8522_decoder.o
obj-$(CONFIG_DVB_AU8522) += au8522.o

When you're compiling the out-of-tree version, everything works OK, but, for
in-tree compilation, au8522_decoder won't be compiled, since the file will be
in the wrong dir.

If I'm understanding well, this chip has two functions: it is a dvb frontend
and an analog video/audio demodulator, right?

One solution would be to have all those files in the same directory. However,
au8522_decoder doesn't fit well on dvb/frontends. It is also not a tuner,
otherwise common/tuners would be another better place.

Another alternative would be to create two kconfig rules (and two separate
modules), being one for au8522_decoder and another for the frontend, since they
are, in fact, two different things. 

I suspect,however, that compiling just one or another would break compilation.
So, we need to create some sort of rules that will warrant that both modules
will be compiled at the same time. This is not an easy task, since we cannot
add depends on, since frontends are compiled by using select. So, we will
need to re-design the Kconfig rules to use depends on instead of select (well,
this is something good, anyway, since the usage of select is something that
should be avoided, according with Kbuild docs).

I'll keep reviewing the patch series. Maybe I'll merge it, but, in this case,
I'll need to blacklist the module until we found a solution, or find a way to
allow my -git trees to compile.

Cheers,
Mauro
--
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: disable v4l2-ctl logging --log-status in /var/log/messages

2009-03-12 Thread Gregor Fuis
On Thu, Mar 12, 2009 at 10:28 AM, Hans Verkuil hverk...@xs4all.nl wrote:

 Hello,

 Is it possible to disable v4l2-ctl aplication logging into
 /var/log/messages.
 I am using it to control and monitor my PVR 150 cards and every time I
 run v4l2-ctl -d /dev/video0 --log-status all output is logged into
 /var/log/messages and some other linux log files.

 All --log-status does is to tell the driver to show it's status in the
 kernel log for debugging purposes. It cannot and should not be relied upon
 for monitoring/controlling a driver.

 What do you need it for anyway?

I am just monitoring if signal is present on tuner, and what signal
format is detected.
These two lines:
cx25840 1-0044: Video signal:  not present
cx25840 1-0044: Detected format:   PAL-Nc
I run this every minute and it is really annoying to have all this in
my system logs.
Is it possible to modify v4l2-ctl source to disable system logging?

Regards,
Gregor
--
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-03-12 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:Thu Mar 12 09:40:14 CET 2009
path:http://www.linuxtv.org/hg/v4l-dvb
changeset:   10966:3392722cc5b6
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-rc7-armv5: OK
linux-2.6.27-armv5-ixp: OK
linux-2.6.28-armv5-ixp: OK
linux-2.6.29-rc7-armv5-ixp: OK
linux-2.6.27-armv5-omap2: OK
linux-2.6.28-armv5-omap2: OK
linux-2.6.29-rc7-armv5-omap2: OK
linux-2.6.22.19-i686: ERRORS
linux-2.6.23.12-i686: OK
linux-2.6.24.7-i686: OK
linux-2.6.25.11-i686: OK
linux-2.6.26-i686: OK
linux-2.6.27-i686: OK
linux-2.6.28-i686: OK
linux-2.6.29-rc7-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-rc7-m32r: OK
linux-2.6.26-mips: OK
linux-2.6.27-mips: OK
linux-2.6.28-mips: OK
linux-2.6.29-rc7-mips: WARNINGS
linux-2.6.27-powerpc64: OK
linux-2.6.28-powerpc64: OK
linux-2.6.29-rc7-powerpc64: WARNINGS
linux-2.6.22.19-x86_64: ERRORS
linux-2.6.23.12-x86_64: OK
linux-2.6.24.7-x86_64: OK
linux-2.6.25.11-x86_64: OK
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-rc7-x86_64: WARNINGS
fw/apps: OK
sparse (linux-2.6.28): ERRORS
sparse (linux-2.6.29-rc7): ERRORS

Detailed results are available here:

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

Full logs are available here:

http://www.xs4all.nl/~hverkuil/logs/Thursday.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: [PULL] http://linuxtv.org/hg/~dheitmueller/hvr950q-analog2

2009-03-12 Thread Mauro Carvalho Chehab
On Wed, 11 Mar 2009 21:00:19 -0400
Devin Heitmueller devin.heitmuel...@gmail.com wrote:

 Hello Mauro,
 
 Please apply one additional patch for the series I sent this morning:
 
 - au0828: make sure v4l2_device name is unique
 
 Thanks,
 
 Devin
 

+static int vidioc_querycap(struct file *file, void  *priv,
+  struct v4l2_capability *cap)
+{
+   struct au0828_fh *fh  = priv;
+   struct au0828_dev *dev = fh-dev;
+
+   memset(cap, 0, sizeof(*cap));

Please remove all memsets for input/output arguments on vidioc_foo at 
au0828-video.c.
The V4L2 core warrants that the non-input fields are zeroed.

+static int vidioc_enum_fmt_vid_cap(struct file *file, void  *priv,
+   struct v4l2_fmtdesc *f)
+{
+   if(f-index)
+   return -EINVAL;
+
+   memset(f, 0, sizeof(*f));
+   f-type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+   strcpy(f-description, Packed YUV2);
+
+   f-flags = 0;
+   f-pixelformat = V4L2_PIX_FMT_UYVY;
+
+   memset(f-reserved, 0, sizeof(f-reserved));
+   return 0;
+}

hmm.. you are cleaning up f-reserved three times: at v4l2-ioctl, at the
memset(f) and at memset(f-reserved).

You really wanted to make sure that you've cleaned it, don't you? ;)


hmm...

+#ifdef VBI_NOT_YET_WORKING
+   .vidioc_g_fmt_vbi_cap   = vidioc_g_fmt_vbi_cap,
+   .vidioc_try_fmt_vbi_cap = vidioc_s_fmt_vbi_cap,
+   .vidioc_s_fmt_vbi_cap   = vidioc_s_fmt_vbi_cap,
+#endif

I don't see any reference of this macro. If VBI is working, please cleanup the
driver. Btw, your logic seems to be inverted on some cases. Why are you adding
VBI macros, if it is not working yet?

On the other hand, if VBI is broken we'll need some rules for removing vbi code
from upstream, at gentree.pl.

+enum au0828_itype {
+   AU0828_VMUX_UNDEFINED = 0,
+   AU0828_VMUX_COMPOSITE,
+   AU0828_VMUX_SVIDEO,
+   AU0828_VMUX_CABLE,
+   AU0828_VMUX_TELEVISION,
+   AU0828_VMUX_DVB,
+   AU0828_VMUX_DEBUG
+};

...

+static int vidioc_enum_input(struct file *file, void *priv,
+   struct v4l2_input *input)
+{
+   struct au0828_fh *fh = priv;
+   struct au0828_dev *dev = fh-dev;
+   unsigned int tmp;
+
+   static const char *inames[] = {
+   [AU0828_VMUX_COMPOSITE] = Composite,
+   [AU0828_VMUX_SVIDEO] = S-Video,
+   [AU0828_VMUX_CABLE] = Cable TV,
+   [AU0828_VMUX_TELEVISION] = Television,
+   [AU0828_VMUX_DVB] = DVB,
+   [AU0828_VMUX_DEBUG] = tv debug
+   };


If the user enumerates an entry marked as UNDEFINED, it will print NULL. Is it
what you really wanted? I would, instead, assign another value for
AU0828_VMUX_UNDEFINED, like -1.


+   switch(AUVI_INPUT(index).type) {
+   case AU0828_VMUX_SVIDEO:
+   {
+   dev-input_type = AU0828_VMUX_SVIDEO;
+   break;
+   }
+   case AU0828_VMUX_COMPOSITE:
+   {
+   dev-input_type = AU0828_VMUX_COMPOSITE;
+   break;
+   }
+   case AU0828_VMUX_TELEVISION:
+   {
+   dev-input_type = AU0828_VMUX_TELEVISION;
+   break;
+   }
+   default:
+   ;
+   }

You don't need all those braces. 

Also, the default rule is missing. I don't see why you would preserve the same
dev-input_type if the user selects an undefined entry, or a DVB or a debug.


Ah, finally, there are a number of CodingStyle fun. I've enclosed what it got,
from the final code. Please, always use make checkpatch before committing a 
patch.

Cheers,
Mauro


/home/v4l/master/linux/drivers/media/dvb/frontends/au8522_dig.c: In '   
 printk(arg);   \':
/home/v4l/master/linux/drivers/media/dvb/frontends/au8522_dig.c:40: warning: 
suspect code indent for conditional statements (8, 17)
/home/v4l/master/linux/drivers/media/dvb/frontends/au8522_dig.c: In '   u8 buf 
[] = { (reg  8) | 0x80, reg  0xff, data };':
/home/v4l/master/linux/drivers/media/dvb/frontends/au8522_dig.c:48: ERROR: 
space prohibited before open square bracket '['
/home/v4l/master/linux/drivers/media/dvb/frontends/au8522_dig.c: In '   u8 b0 
[] = { (reg  8) | 0x40, reg  0xff };':
/home/v4l/master/linux/drivers/media/dvb/frontends/au8522_dig.c:65: ERROR: 
space prohibited before open square bracket '['
/home/v4l/master/linux/drivers/media/dvb/frontends/au8522_dig.c: In '   u8 b1 
[] = { 0 };':
/home/v4l/master/linux/drivers/media/dvb/frontends/au8522_dig.c:66: ERROR: 
space prohibited before open square bracket '['
/home/v4l/master/linux/drivers/media/dvb/frontends/au8522_dig.c: In '   struct 
i2c_msg msg [] = {':
/home/v4l/master/linux/drivers/media/dvb/frontends/au8522_dig.c:68: ERROR: 
space prohibited before open square bracket '['
/home/v4l/master/linux/drivers/media/video/au0828/au0828-cards.c: In '  
}':
/home/v4l/master/linux/drivers/media/video/au0828/au0828-cards.c:205: warning: 

Re: [linuxtv-commits] [hg:v4l-dvb] Fix I2C bridge error in zl10353

2009-03-12 Thread Mauro Carvalho Chehab
On Thu, 12 Mar 2009 12:35:40 +0900
Dmitri Belimov d.beli...@gmail.com wrote:

 Hi Antti
 
  Antti Palosaari wrote:
   Dmitri Belimov wrote:
   Could one of you please do such patchset?
  
   I haven't a lot expirience with kernel programming. If Antti can
   it is good. I'll check it
   on our board.
   
   OK, I will do. For the first phase and as a bug fix I will do that 
   (disable i2c-gate) like dtv5100 driver does. After that I will add
   new configuration switch for i2c-gate disable and also
   change .no_tuner name to better one.
  
  Here it is, please review and test. I kept changes as small as
  possible to prevent errors. Lets fix more later.
  
  http://linuxtv.org/hg/~anttip/zl10353/
 
 This patch is good. All work is ok.

Antti,

since you said that this patch should go to 2.6.29, I've already merged from
your tree, after having Dmitry ack.
 
 With my best regards, Dmitry.
 
  
  regards
  Antti
  -- 
  http://palosaari.fi/




Cheers,
Mauro
--
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: [linuxtv-commits] [hg:v4l-dvb] Add cx231xx USB driver

2009-03-12 Thread Hans Verkuil


 On Thu, 12 Mar 2009 08:38:59 +0100
 Hans Verkuil hverk...@xs4all.nl wrote:

 Mauro,

 What the hell??!

 Since when does a big addition like this get merged without undergoing a
 public review?

 I've been working my ass off converting drivers to the new i2c API and
 v4l2_subdev structures and here you merge a big driver that uses
 old-style
 (which will lead to 'deprecated' warnings when compiling with 2.6.29,
 BTW),
 where the driver writes directly to i2c modules instead of adding a
 proper
 i2c module for them. And what are 'colibri', 'flatrion' and 'hammerhead'
 anyway? Are they integrated devices of the cx231xx? Can they be used
 separately in other products as well?

 So yes, I have objections. At the minimum it should be converted first
 to
 use v4l2_device/v4l2_subdev and I need more information on the new i2c
 devices so I can tell whether the code for those should be split off
 into
 separate i2c modules. Not to mention that I want to have the time to
 review
 this code more closely.

 Sorry Sri, this isn't your fault.

 Hans,

 I know that you're rushing to convert all drivers to the new model, but
 you
 should give time to time. Even with Kernel's fast development cycle, we
 should
 take care to not depreciate things faster than developers can track (btw,
 lwn.net already complained that V4L subsystem changes their APIs faster
 than
 usual).

Mauro, you did not answer the question why this driver was just merged
without going through a public review? If I'd seen it beforehand I'd have
worked together with Sri to get it fixed first. I don't expect him to know
about this, but I didn't even get a chance to discuss it and help with it.
Everyone else has to go through the normal review channels, but apparently
this was just fast-tracked and merged. That's not the way to do it.

Please back out this driver, put it in a separate tree and let me 1)
review this driver first, and 2) help Sri implementing the
v4l2_device/v4l2_subdev stuff.

 First of all, except for ivtv drivers, the first conversion to the new
 model
 occurred just few weeks ago. The new model will bring some gains, but this
 shouldn't stop the merge of the drivers whose development started before
 we
 port the drivers used as example by the developer.

 This is a new model, and we should give people some time to adapt to it.
 This
 is the way we worked in the past and it is the way we should keep working.

It's not a new model. The I2C core changes went in in 2.6.22. Jean is no
longer accepting new i2c drivers that use the old module, and neither
should we. And definitely NOT without discussing it first. The old i2c API
has been marked deprecated in 2.6.29, and that's for a reason. There are
good alternatives for this and I'm available to help with the conversion.
Not to mention that this will make Jean quite unhappy.

And please note that the use of the old API isn't the only question I
have, there are more oddities with the i2c handling that I'd like to have
more information about. Writing i2c registers directly from the adapter
driver doesn't look good to me at first sight.

 For
 example, video_ioctl2 were added several Kernel releases before merging
 uvc
 driver. Yet, we've accepted uvc driver without using the new model,
 because its
 development that occurred before video_ioctl2.

 The second point is that there's nothing at
 Documentation/feature-removal-schedule.txt informing that those stuff is
 deprecated.

Yes it is, see this from the 2.6.29 kernel:

What:   i2c_attach_client(), i2c_detach_client(), i2c_driver-detach_client()
When:   2.6.29 (ideally) or 2.6.30 (more likely)
Why:Deprecated by the new (standard) device driver binding model. Use
i2c_driver-probe() and -remove() instead.
Who:Jean Delvare kh...@linux-fr.org

 So, we should still accept new drivers without the conversion at least
 until
 the end of 2.6.30 window, and add some notice at
 feature-removal-schedule.txt
 on 2.6.30 clearly stating what's deprecated and when, before generating
 penalty
 over the developers that are using the current drivers as their model of
 development.

 In the specific case of cx231xx driver, I've explained to Sri, there are
 still
 some issues to be fixed at the driver. Although the driver works, It is
 not
 ready for 2.6.30 yet.

 However, keeping this on a separate tree will just create more mess
 (according
 with Sri, he already had to rebase this driver 4 times during 2.6.29-rc
 cycle,
 due to the high speed of internal API changes).

 Since his driver seems to be based on em28xx, he had no sample on how to
 convert it to
 v4l2_device/v4l2_subdev/new_i2c model.

Again, if I'd known about it I'd be happy to help with it. Why didn't you
put me in contact with him? You know I'm spending a lot of time on this.

 After committing Devin's Austek patches (also seemed to be based on
 em28xx), it will
 probably be easier for Uri to convert his driver to the new approach.

That depends. As I said, there are other i2c 

[PATCH 0/5] V2: soc-camera: setting the buswidth of camera sensors

2009-03-12 Thread Sascha Hauer
Take 2: I hope I addressed all comments I receive in the first round.

The following patches change the handling of the bus width
for camera sensors so that a board can overwrite a sensors
native bus width

Sascha Hauer (5):
  soc-camera: add board hook to specify the buswidth for camera sensors
  pcm990 baseboard: add camera bus width switch setting
  mt9m001: allow setting of bus width from board code
  mt9v022: allow setting of bus width from board code
  soc-camera: remove now unused gpio member of struct soc_camera_link

 arch/arm/mach-pxa/pcm990-baseboard.c |   49 ++--
 drivers/media/video/Kconfig  |   14 
 drivers/media/video/mt9m001.c|  143 ++
 drivers/media/video/mt9v022.c|  141 ++---
 include/media/soc_camera.h   |9 ++-
 5 files changed, 129 insertions(+), 227 deletions(-)

--
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 2/5] pcm990 baseboard: add camera bus width switch setting

2009-03-12 Thread Sascha Hauer
Some Phytec cameras have a I2C GPIO expander which allows it to
switch between different sensor bus widths. This was previously
handled in the camera driver. Since handling of this switch
varies on several boards the cameras are used on, the board
support seems a better place to handle the switch

Signed-off-by: Sascha Hauer s.ha...@pengutronix.de
---
 arch/arm/mach-pxa/pcm990-baseboard.c |   49 +++--
 1 files changed, 40 insertions(+), 9 deletions(-)

diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c 
b/arch/arm/mach-pxa/pcm990-baseboard.c
index 34841c7..8b01565 100644
--- a/arch/arm/mach-pxa/pcm990-baseboard.c
+++ b/arch/arm/mach-pxa/pcm990-baseboard.c
@@ -381,14 +381,45 @@ static struct pca953x_platform_data pca9536_data = {
.gpio_base  = NR_BUILTIN_GPIO + 1,
 };
 
-static struct soc_camera_link iclink[] = {
-   {
-   .bus_id = 0, /* Must match with the camera ID above */
-   .gpio   = NR_BUILTIN_GPIO + 1,
-   }, {
-   .bus_id = 0, /* Must match with the camera ID above */
-   .gpio   = -ENXIO,
+static int gpio_bus_switch;
+
+static int pcm990_camera_set_bus_param(struct soc_camera_link *link,
+   unsigned long flags)
+{
+   if (gpio_bus_switch = 0)
+   return 0;
+
+   if (flags  SOCAM_DATAWIDTH_8)
+   gpio_set_value(gpio_bus_switch, 1);
+   else
+   gpio_set_value(gpio_bus_switch, 0);
+
+   return 0;
+}
+
+static unsigned long pcm990_camera_query_bus_param(struct soc_camera_link 
*link)
+{
+   int ret;
+
+   if (!gpio_bus_switch) {
+   ret = gpio_request(NR_BUILTIN_GPIO + 1, camera);
+   if (!ret) {
+   gpio_bus_switch = NR_BUILTIN_GPIO + 1;
+   gpio_direction_output(gpio_bus_switch, 0);
+   } else
+   gpio_bus_switch = -EINVAL;
}
+
+   if (gpio_bus_switch  0)
+   return SOCAM_DATAWIDTH_8 | SOCAM_DATAWIDTH_10;
+   else
+   return SOCAM_DATAWIDTH_10;
+}
+
+static struct soc_camera_link iclink = {
+   .bus_id = 0, /* Must match with the camera ID above */
+   .query_bus_param = pcm990_camera_query_bus_param,
+   .set_bus_param = pcm990_camera_set_bus_param,
 };
 
 /* Board I2C devices. */
@@ -399,10 +430,10 @@ static struct i2c_board_info __initdata 
pcm990_i2c_devices[] = {
.platform_data = pca9536_data,
}, {
I2C_BOARD_INFO(mt9v022, 0x48),
-   .platform_data = iclink[0], /* With extender */
+   .platform_data = iclink, /* With extender */
}, {
I2C_BOARD_INFO(mt9m001, 0x5d),
-   .platform_data = iclink[0], /* With extender */
+   .platform_data = iclink, /* With extender */
},
 };
 #endif /* CONFIG_VIDEO_PXA27x ||CONFIG_VIDEO_PXA27x_MODULE */
-- 
1.5.6.5

--
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 1/5] soc-camera: add board hook to specify the buswidth for camera sensors

2009-03-12 Thread Sascha Hauer
Camera sensors have a native bus width say support, but on some
boards not all sensor data lines are connected to the image
interface and thus support a different bus width than the sensors
native one. Some boards even have a bus driver which dynamically
switches between different bus widths with a GPIO.

This patch adds a hook which board code can use to support different
bus widths.

Signed-off-by: Sascha Hauer s.ha...@pengutronix.de
---
 include/media/soc_camera.h |7 +++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h
index 7440d92..62f07db 100644
--- a/include/media/soc_camera.h
+++ b/include/media/soc_camera.h
@@ -100,6 +100,13 @@ struct soc_camera_link {
/* Optional callbacks to power on or off and reset the sensor */
int (*power)(struct device *, int);
int (*reset)(struct device *);
+   /*
+* some platforms may support different data widths than the sensors
+* native ones due to different data line routing. Let the board code
+* overwrite the width flags.
+*/
+   int (*set_bus_param)(struct soc_camera_link *, unsigned long flags);
+   unsigned long (*query_bus_param)(struct soc_camera_link *);
 };
 
 static inline struct soc_camera_device *to_soc_camera_dev(struct device *dev)
-- 
1.5.6.5

--
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 3/5] mt9m001: allow setting of bus width from board code

2009-03-12 Thread Sascha Hauer
This patch removes the phytec specific setting of the bus width
and switches to the more generic query_bus_param/set_bus_param
hooks

Signed-off-by: Sascha Hauer s.ha...@pengutronix.de
---
 drivers/media/video/Kconfig   |7 --
 drivers/media/video/mt9m001.c |  143 +++-
 2 files changed, 40 insertions(+), 110 deletions(-)

diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
index 19cf3b8..5fc1531 100644
--- a/drivers/media/video/Kconfig
+++ b/drivers/media/video/Kconfig
@@ -728,13 +728,6 @@ config SOC_CAMERA_MT9M001
  This driver supports MT9M001 cameras from Micron, monochrome
  and colour models.
 
-config MT9M001_PCA9536_SWITCH
-   bool pca9536 datawidth switch for mt9m001
-   depends on SOC_CAMERA_MT9M001  GENERIC_GPIO
-   help
- Select this if your MT9M001 camera uses a PCA9536 I2C GPIO
- extender to switch between 8 and 10 bit datawidth modes
-
 config SOC_CAMERA_MT9M111
tristate mt9m111 and mt9m112 support
depends on SOC_CAMERA  I2C
diff --git a/drivers/media/video/mt9m001.c b/drivers/media/video/mt9m001.c
index c1bf75e..d3bc84c 100644
--- a/drivers/media/video/mt9m001.c
+++ b/drivers/media/video/mt9m001.c
@@ -12,7 +12,6 @@
 #include linux/slab.h
 #include linux/i2c.h
 #include linux/log2.h
-#include linux/gpio.h
 
 #include media/v4l2-common.h
 #include media/v4l2-chip-ident.h
@@ -73,9 +72,7 @@ struct mt9m001 {
struct i2c_client *client;
struct soc_camera_device icd;
int model;  /* V4L2_IDENT_MT9M001* codes from v4l2-chip-ident.h */
-   int switch_gpio;
unsigned char autoexposure;
-   unsigned char datawidth;
 };
 
 static int reg_read(struct soc_camera_device *icd, const u8 reg)
@@ -181,92 +178,28 @@ static int mt9m001_stop_capture(struct soc_camera_device 
*icd)
return 0;
 }
 
-static int bus_switch_request(struct mt9m001 *mt9m001,
- struct soc_camera_link *icl)
-{
-#ifdef CONFIG_MT9M001_PCA9536_SWITCH
-   int ret;
-   unsigned int gpio = icl-gpio;
-
-   if (gpio_is_valid(gpio)) {
-   /* We have a data bus switch. */
-   ret = gpio_request(gpio, mt9m001);
-   if (ret  0) {
-   dev_err(mt9m001-client-dev, Cannot get GPIO %u\n,
-   gpio);
-   return ret;
-   }
-
-   ret = gpio_direction_output(gpio, 0);
-   if (ret  0) {
-   dev_err(mt9m001-client-dev,
-   Cannot set GPIO %u to output\n, gpio);
-   gpio_free(gpio);
-   return ret;
-   }
-   }
-
-   mt9m001-switch_gpio = gpio;
-#else
-   mt9m001-switch_gpio = -EINVAL;
-#endif
-   return 0;
-}
-
-static void bus_switch_release(struct mt9m001 *mt9m001)
-{
-#ifdef CONFIG_MT9M001_PCA9536_SWITCH
-   if (gpio_is_valid(mt9m001-switch_gpio))
-   gpio_free(mt9m001-switch_gpio);
-#endif
-}
-
-static int bus_switch_act(struct mt9m001 *mt9m001, int go8bit)
-{
-#ifdef CONFIG_MT9M001_PCA9536_SWITCH
-   if (!gpio_is_valid(mt9m001-switch_gpio))
-   return -ENODEV;
-
-   gpio_set_value_cansleep(mt9m001-switch_gpio, go8bit);
-   return 0;
-#else
-   return -ENODEV;
-#endif
-}
-
-static int bus_switch_possible(struct mt9m001 *mt9m001)
-{
-#ifdef CONFIG_MT9M001_PCA9536_SWITCH
-   return gpio_is_valid(mt9m001-switch_gpio);
-#else
-   return 0;
-#endif
-}
-
 static int mt9m001_set_bus_param(struct soc_camera_device *icd,
 unsigned long flags)
 {
struct mt9m001 *mt9m001 = container_of(icd, struct mt9m001, icd);
-   unsigned int width_flag = flags  SOCAM_DATAWIDTH_MASK;
-   int ret;
+   struct soc_camera_link *icl = mt9m001-client-dev.platform_data;
+   unsigned long width_flag = flags  SOCAM_DATAWIDTH_MASK;
 
-   /* Flags validity verified in test_bus_param */
+   /* Only one width bit may be set */
+   if (!is_power_of_2(width_flag))
+   return -EINVAL;
 
-   if ((mt9m001-datawidth != 10  (width_flag == SOCAM_DATAWIDTH_10)) ||
-   (mt9m001-datawidth != 9   (width_flag == SOCAM_DATAWIDTH_9)) ||
-   (mt9m001-datawidth != 8   (width_flag == SOCAM_DATAWIDTH_8))) {
-   /* Well, we actually only can do 10 or 8 bits... */
-   if (width_flag == SOCAM_DATAWIDTH_9)
-   return -EINVAL;
-   ret = bus_switch_act(mt9m001,
-width_flag == SOCAM_DATAWIDTH_8);
-   if (ret  0)
-   return ret;
+   if (icl-set_bus_param)
+   return icl-set_bus_param(icl, width_flag);
 
-   mt9m001-datawidth = width_flag == SOCAM_DATAWIDTH_8 ? 8 : 10;
-   }
+   /*
+* Without board specific bus width settings we only support the
+* 

[PATCH 1/1] sdio: add low level i/o functions for workarounds

2009-03-12 Thread Uri Shkolnik

sdio: add low level i/o functions for workarounds

From: Pierre Ossman drz...@drzeus.cx

Some shoddy hardware doesn't properly adhere to the register model
of SDIO, but treats the system like a series of transaction. That means
that the drivers must have full control over what goes the bus (and the
core cannot optimize transactions or work around problems in host
controllers).
This commit adds some low level functions that gives SDIO drivers the
ability to send specific register access commands. They should only be
used when the hardware is truly broken though.

This patch has been created on August 2008, and re-generated against 2.6.29-rc7 
.

Signed-off-by: Pierre Ossman drz...@drzeus.cx
Signed-off-by: Uri Shkolnik u...@siano-ms.com


diff -uNr linux-2.6.29-rc7.prestine/drivers/mmc/core/sdio_io.c 
linux-2.6.29-rc7/drivers/mmc/core/sdio_io.c
--- linux-2.6.29-rc7.prestine/drivers/mmc/core/sdio_io.c2009-03-04 
03:05:22.0 +0200
+++ linux-2.6.29-rc7/drivers/mmc/core/sdio_io.c 2009-03-12 12:22:42.0 
+0200
@@ -635,3 +635,252 @@
*err_ret = ret;
 }
 EXPORT_SYMBOL_GPL(sdio_f0_writeb);
+
+/**
+ * sdio_read_bytes - low level byte mode transfer from an SDIO function
+ * @func: SDIO function to access
+ * @dst: buffer to store the data
+ * @addr: address to begin reading from
+ * @bytes: number of bytes to read
+ *
+ * Performs a byte mode transfer from the address space of the given
+ * SDIO function. The address is increased for each byte. Return
+ * value indicates if the transfer succeeded or not.
+ *
+ * Note: This is a low level function that should only be used as a
+ * workaround when the hardware has a crappy register abstraction
+ * that relies on specific SDIO operations.
+ */
+int sdio_read_bytes(struct sdio_func *func, void *dst,
+   unsigned int addr, int bytes)
+{
+   if (bytes  sdio_max_byte_size(func))
+   return -EINVAL;
+
+   return mmc_io_rw_extended(func-card, 0, func-num, addr, 1,
+   dst, 1, bytes);
+}
+EXPORT_SYMBOL_GPL(sdio_read_bytes);
+
+/**
+ * sdio_read_bytes_noincr - low level byte mode transfer from an SDIO 
function
+ * @func: SDIO function to access
+ * @dst: buffer to store the data
+ * @addr: address to begin reading from
+ * @bytes: number of bytes to read
+ *
+ * Performs a byte mode transfer from the address space of the given
+ * SDIO function. The address is NOT increased for each byte. Return
+ * value indicates if the transfer succeeded or not.
+ *
+ * Note: This is a low level function that should only be used as a
+ * workaround when the hardware has a crappy register abstraction
+ * that relies on specific SDIO operations.
+ */
+int sdio_read_bytes_noincr(struct sdio_func *func, void *dst,
+   unsigned int addr, int bytes)
+{
+   if (bytes  sdio_max_byte_size(func))
+   return -EINVAL;
+
+   return mmc_io_rw_extended(func-card, 0, func-num, addr, 0,
+   dst, 1, bytes);
+}
+EXPORT_SYMBOL_GPL(sdio_read_bytes_noincr);
+
+/**
+ * sdio_read_blocks - low level block mode transfer from an SDIO function
+ * @func: SDIO function to access
+ * @dst: buffer to store the data
+ * @addr: address to begin reading from
+ * @block: number of blocks to read
+ *
+ * Performs a block mode transfer from the address space of the given
+ * SDIO function. The address is increased for each byte. Return
+ * value indicates if the transfer succeeded or not.
+ *
+ * The block size needs to be explicitly changed by calling
+ * sdio_set_block_size().
+ *
+ * Note: This is a low level function that should only be used as a
+ * workaround when the hardware has a crappy register abstraction
+ * that relies on specific SDIO operations.
+ */
+int sdio_read_blocks(struct sdio_func *func, void *dst,
+   unsigned int addr, int blocks)
+{
+   if (!func-card-cccr.multi_block)
+   return -EINVAL;
+
+   if (blocks  func-card-host-max_blk_count)
+   return -EINVAL;
+   if (blocks  (func-card-host-max_seg_size / func-cur_blksize))
+   return -EINVAL;
+   if (blocks  511)
+   return -EINVAL;
+
+   return mmc_io_rw_extended(func-card, 0, func-num, addr, 1,
+   dst, blocks, func-cur_blksize);
+}
+EXPORT_SYMBOL_GPL(sdio_read_blocks);
+
+/**
+ * sdio_read_blocks_noincr - low level block mode transfer from an SDIO 
function
+ * @func: SDIO function to access
+ * @dst: buffer to store the data
+ * @addr: address to begin reading from
+ * @block: number of blocks to read
+ *
+ * Performs a block mode transfer from the address space of the given
+ * SDIO function. The address is NOT increased for each byte. Return
+ * value indicates if the transfer succeeded or not.
+ *
+ * The block size needs to be explicitly changed by calling
+ * 

[PULL] Rhttp://linuxtv.org/hg/~mkrufky/lgdt3305 ( was - e: null pointer access in error path of lgdt3305 driver )

2009-03-12 Thread Michael Krufky

Matthias Schwarzott wrote:

Hi Michael!

Looking at your new lgdt3305 driver, I noticed that the error path of 
lgdt3305_attach, that is also jumped to kzalloc errors, sets  
state-frontend.demodulator_priv to NULL.


That will oops in case state is NULL. So you either need two goto labels for 
failures or just return in case kzalloc fails.


Regards
Matthias
  

Matthias,

Thank you for pointing this out -- I am pushing up a fix right now.

Mauro,

Please pull from:

http://linuxtv.org/hg/~mkrufky/lgdt3305

for the following fix, thanks to Matthias:

- lgdt3305: avoid OOPS in error path of lgdt3305_attach

lgdt3305.c |1 -
1 file changed, 1 deletion(-)

Regards,

Mike
--
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: [linuxtv-commits] [hg:v4l-dvb] Add cx231xx USB driver

2009-03-12 Thread Mauro Carvalho Chehab

On Thu, 12 Mar 2009 12:14:22 +0100 (CET)
Hans Verkuil hverk...@xs4all.nl wrote:

 Mauro, you did not answer the question why this driver was just merged
 without going through a public review? If I'd seen it beforehand I'd have
 worked together with Sri to get it fixed first. I don't expect him to know
 about this, but I didn't even get a chance to discuss it and help with it.
 Everyone else has to go through the normal review channels, but apparently
 this was just fast-tracked and merged. That's not the way to do it.

It were added one week ago on a temporary public tree, at linuxtv.

 Please back out this driver, put it in a separate tree and let me 1)
 review this driver first, and 2) help Sri implementing the
 v4l2_device/v4l2_subdev stuff.

It is better to review it at the tree. I won't merge it upstream until the
remaining bugs would be fixed. Until then, it will wait on my staging -git tree
(the pending tree).

  First of all, except for ivtv drivers, the first conversion to the new
  model
  occurred just few weeks ago. The new model will bring some gains, but this
  shouldn't stop the merge of the drivers whose development started before
  we
  port the drivers used as example by the developer.
 
  This is a new model, and we should give people some time to adapt to it.
  This
  is the way we worked in the past and it is the way we should keep working.
 
 It's not a new model.

It is. The first changeset were committed on Nov, 30, and the last internal API
changes, according with the docs, happened on Feb, 14. So, if we don't touch on
it, the first stable version of the framework will be available upstream on
2.6.30. 

If we keep it stable during 2.6.30, convert the drivers merged on 2.6.30 to the
new framework, and mark the legacy approach as a feature to be removed on a
patch applied at 2.6.30, then we can remove the previous support for 2.6.31.

$ hg log linux/Documentation/video4linux/v4l2-framework.txt 

changeset:   10648:e471b963bef6
parent:  10640:4f6c3f9efa58
parent:  10647:63256532f5a7
user:Mauro Carvalho Chehab mche...@redhat.com
date:Tue Feb 17 23:44:45 2009 -0300
summary: merge: http://www.linuxtv.org/hg/~hverkuil/v4l-dvb

changeset:   10644:44b5df81ab02
user:Hans Verkuil hverk...@xs4all.nl
date:Sat Feb 14 16:00:53 2009 +0100
summary: v4l2-subdev: rename dev field to v4l2_dev

changeset:   10643:9eb2f6220a18
user:Hans Verkuil hverk...@xs4all.nl
date:Sat Feb 14 15:54:23 2009 +0100
summary: v4l2-device: allow a NULL parent device when registering.

changeset:   10573:b73e7bdad8c4
user:Mauro Carvalho Chehab mche...@redhat.com
date:Mon Feb 16 15:54:29 2009 -0300
summary: v4l2-framework.txt: Whitespace clenups

changeset:   10571:12a10f808bfd
user:Mauro Carvalho Chehab mche...@redhat.com
date:Sat Feb 14 08:51:28 2009 -0200
summary: v4l2-framework.txt: Fixes the videobuf init functions

changeset:   10570:6f4cff0e7f16
user:Mauro Carvalho Chehab mche...@redhat.com
date:Sat Feb 14 08:29:07 2009 -0200
summary: v4l2-framework: documments videobuf usage on drivers

changeset:   10489:c84416787a43
user:Mauro Carvalho Chehab mche...@redhat.com
date:Sat Feb 07 11:07:04 2009 +0100
summary: doc: use consistent naming conventions for vdev and v4l2_dev.

changeset:   10252:09cabe4f0c63
user:Hans Verkuil hverk...@xs4all.nl
date:Thu Jan 15 10:09:05 2009 +0100
summary: v4l2 doc: explain why v4l2_device_unregister_subdev() has to be 
called.

changeset:   10141:4cc8ed11e2e0
user:Hans Verkuil hverk...@xs4all.nl
date:Tue Dec 30 11:14:19 2008 +0100
summary: v4l2: debugging API changed to match against driver name instead 
of ID.

changeset:   10136:ffe112f306a3
user:Hans Verkuil hverk...@xs4all.nl
date:Tue Dec 23 17:42:25 2008 +0100
summary: v4l2 doc: update v4l2-framework.txt

changeset:   10134:a11cf6774c04
user:Hans Verkuil hverk...@xs4all.nl
date:Tue Dec 23 16:17:23 2008 +0100
summary: v4l2 doc: set v4l2_dev instead of parent.

changeset:   10133:f03ab4ab3f87
user:Hans Verkuil hverk...@xs4all.nl
date:Mon Dec 22 13:13:11 2008 +0100
summary: v4l2-framework: use correct comment style.

changeset:   9943:2e680d8a3b2f
user:Hans Verkuil hverk...@xs4all.nl
date:Fri Dec 19 14:20:22 2008 +0100
summary: v4l2: document video_device.

changeset:   9820:5611723c9512
parent:  9767:7100e78482d7
user:Hans Verkuil hverk...@xs4all.nl
date:Sun Nov 30 01:36:58 2008 +0100
summary: v4l2: add v4l2_device and v4l2_subdev structs to the v4l2 
framework.

 The I2C core changes went in in 2.6.22.

I'm not referring to i2c core changes, but to v4l2 dev/subdev stuff.

 And please note that the use of the old API isn't the only question I
 have, there are more oddities with the i2c handling that I'd like to have
 more information about. Writing 

Re: [PATCH 0/5] V2: soc-camera: setting the buswidth of camera sensors

2009-03-12 Thread Guennadi Liakhovetski
On Thu, 12 Mar 2009, Sascha Hauer wrote:

 Take 2: I hope I addressed all comments I receive in the first round.
 
 The following patches change the handling of the bus width
 for camera sensors so that a board can overwrite a sensors
 native bus width
 
 Sascha Hauer (5):
   soc-camera: add board hook to specify the buswidth for camera sensors
   pcm990 baseboard: add camera bus width switch setting
   mt9m001: allow setting of bus width from board code
   mt9v022: allow setting of bus width from board code
   soc-camera: remove now unused gpio member of struct soc_camera_link

Ok, the rest look good to me. So, after you fix or explain 2/5 I'll be 
pulling them.

 
  arch/arm/mach-pxa/pcm990-baseboard.c |   49 ++--
  drivers/media/video/Kconfig  |   14 
  drivers/media/video/mt9m001.c|  143 
 ++
  drivers/media/video/mt9v022.c|  141 ++---
  include/media/soc_camera.h   |9 ++-
  5 files changed, 129 insertions(+), 227 deletions(-)
 

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
--
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: [PULL] http://linuxtv.org/hg/~dheitmueller/hvr950q-analog2

2009-03-12 Thread Michael Krufky
On Thu, Mar 12, 2009 at 5:19 AM, Hans Verkuil hverk...@xs4all.nl wrote:

 On Wed, 11 Mar 2009 11:25:20 -0400
 Devin Heitmueller devin.heitmuel...@gmail.com wrote:

 Hello Mauro,

 Please pull from:

 http://linuxtv.org/hg/~dheitmueller/hvr950q-analog2

 for the following:

 xc5000: fix bug for hybrid xc5000 devices with IF other than 5380
 au8522: rename the au8522.c source file
 au8522: move shared state and common functions into a separate header
 files
 au8522: fix register read/write high bits
 au8522: power down the digital demod when not in use
 au8522: make use of hybrid framework so analog/digital demod can share
 state
 au8522: add support for analog side of demodulator
 au0828: add support for analog functionality in bridge
 au0828: workaround a bug in the au0828 i2c handling
 au0828: add analog profile for the HVR-850
 au8522: add mutex protecting use of hybrid state
 au0828: Rework the way the analog video binding occurs
 tveeprom: add the xc5000 tuner to the tveeprom definition
 au0828: advertise only NTSC-M (as opposed to all NTSC standards)
 au0828: disable VBI code since it doesn't yet work
 au0828: fix i2c enumeration bug
 au0828: make register debug lines easier to read
 au0828: make g_chip_ident call work properly
 au0828: properly handle missing analog USB endpoint
 au0828: properly handle non-existent analog inputs
 au0828: fix panic on disconnect if analog initialization failed
 au0828: Convert to use v4l2_device/subdev framework

 Hi Devin,

 Can you also do the last bit of the v4l2_device/subdev conversion by
 actually using the subdev callbacks (replace au0828_call_i2c_clients with
 v4l2_device_call_all), removing attach_inform and detach_inform (already
 deprecated in 2.6.29) and in au8522_decoder.c replacing
 v4l2-i2c-drv-legacy.h by v4l2-i2c-drv.h and removing the au8522_command.

 Basically, when you compile against 2.6.29 you shouldn't see any
 'deprecated' warnings!

 I also suggest renaming au8522_decoder.c to just au8522.c, like all the
 other i2c modules.


Hans,

There was already a au8522.c in the master branch before Devin's
patches -- au8522.c is located in drivers/media/dvb/frontends -- it is
an ATSC/QAM demodulator modulator.  Devin had renamed au8522.c to
au8522_dig.c , so that it can be built with au8522_decoder.c into a
single module.

It is important that this remain a single module, because there is
state being shared between the analog and digitial sides of this
device.

This is a hybrid demodulator, the first of it's kind within our codebase.

Regards,

Mike
--
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 1/1] siano: add high level SDIO interface driver for SMS based cards

2009-03-12 Thread Uri Shkolnik

# HG changeset patch
# User Uri Shkolnik u...@siano-ms.com
# Date 1236865697 -7200
# Node ID 7352ee1288f651d19d58c7bb479a98f070ad98e6
# Parent  3392722cc5b687586c4d898b73050ab6e59bf401
siano: add high level SDIO interface driver for SMS based cards

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

This patch provides SDIO interface driver for
SMS (Siano Mobile Silicon) based devices.
The patch includes SMS high level SDIO driver and
requires patching the kernel SDIO stack, 
those stack patches had been provided previously.

I would like to thank Pierre Ossman, MMC maintainer,
who wrote this driver.

Priority: normal

Signed-off-by: Pierre Ossman drz...@drzeus.cx
Signed-off-by: Uri Shkolnik u...@siano-ms.com

diff -r 3392722cc5b6 -r 7352ee1288f6 linux/drivers/media/dvb/siano/smssdio.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +
+++ b/linux/drivers/media/dvb/siano/smssdio.c   Thu Mar 12 15:48:17 2009 +0200
@@ -0,0 +1,356 @@
+/*
+ *  smssdio.c - Siano 1xxx SDIO interface driver
+ *
+ *  Copyright 2008 Pierre Ossman
+ *
+ * Based on code by Siano Mobile Silicon, Inc.,
+ * Copyright (C) 2006-2008, Uri Shkolnik
+ *
+ * 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.
+ *
+ *
+ * This hardware is a bit odd in that all transfers should be done
+ * to/from the SMSSDIO_DATA register, yet the increase address bit
+ * always needs to be set.
+ *
+ * Also, buffers from the card are always aligned to 128 byte
+ * boundaries.
+ */
+
+/*
+ * General cleanup notes:
+ *
+ * - only typedefs should be name *_t
+ *
+ * - use ERR_PTR and friends for smscore_register_device()
+ *
+ * - smscore_getbuffer should zero fields
+ *
+ * Fix stop command
+ */
+
+#include linux/moduleparam.h
+#include linux/firmware.h
+#include linux/delay.h
+#include linux/mmc/card.h
+#include linux/mmc/sdio_func.h
+#include linux/mmc/sdio_ids.h
+
+#include smscoreapi.h
+#include sms-cards.h
+
+/* Registers */
+
+#define SMSSDIO_DATA   0x00
+#define SMSSDIO_INT0x04
+
+static const struct sdio_device_id smssdio_ids[] = {
+   {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_STELLAR),
+.driver_data = SMS1XXX_BOARD_SIANO_STELLAR},
+   {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_NOVA_A0),
+.driver_data = SMS1XXX_BOARD_SIANO_NOVA_A},
+   {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_NOVA_B0),
+.driver_data = SMS1XXX_BOARD_SIANO_NOVA_B},
+   {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_VEGA_A0),
+.driver_data = SMS1XXX_BOARD_SIANO_VEGA},
+   {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_VENICE),
+.driver_data = SMS1XXX_BOARD_SIANO_VEGA},
+   { /* end: all zeroes */ },
+};
+
+MODULE_DEVICE_TABLE(sdio, smssdio_ids);
+
+struct smssdio_device {
+   struct sdio_func *func;
+
+   struct smscore_device_t *coredev;
+
+   struct smscore_buffer_t *split_cb;
+};
+
+/***/
+/* Siano core callbacks*/
+/***/
+
+static int smssdio_sendrequest(void *context, void *buffer, size_t size)
+{
+   int ret;
+   struct smssdio_device *smsdev;
+
+   smsdev = context;
+
+   sdio_claim_host(smsdev-func);
+
+   while (size = smsdev-func-cur_blksize) {
+   ret = sdio_write_blocks(smsdev-func, SMSSDIO_DATA, buffer, 1);
+   if (ret)
+   goto out;
+
+   buffer += smsdev-func-cur_blksize;
+   size -= smsdev-func-cur_blksize;
+   }
+
+   if (size) {
+   ret = sdio_write_bytes(smsdev-func, SMSSDIO_DATA,
+  buffer, size);
+   if (ret)
+   goto out;
+   }
+
+out:
+   sdio_release_host(smsdev-func);
+
+   return ret;
+}
+
+/***/
+/* SDIO callbacks  */
+/***/
+
+static void smssdio_interrupt(struct sdio_func *func)
+{
+   int ret, isr;
+
+   struct smssdio_device *smsdev;
+   struct smscore_buffer_t *cb;
+   struct SmsMsgHdr_ST *hdr;
+   size_t size;
+
+   smsdev = sdio_get_drvdata(func);
+
+   /*
+* The interrupt register has no defined meaning. It is just
+* a way of turning of the level triggered interrupt.
+*/
+   isr = sdio_readb(func, SMSSDIO_INT, ret);
+   if (ret) {
+   dev_err(smsdev-func-dev,
+   Unable to read interrupt register!\n);
+   return;
+   }
+
+   if (smsdev-split_cb == NULL) {
+   cb = 

Re: [PULL] http://linuxtv.org/hg/~dheitmueller/hvr950q-analog2

2009-03-12 Thread Hans Verkuil

 On Thu, Mar 12, 2009 at 5:19 AM, Hans Verkuil hverk...@xs4all.nl wrote:

 On Wed, 11 Mar 2009 11:25:20 -0400
 Devin Heitmueller devin.heitmuel...@gmail.com wrote:

 Hello Mauro,

 Please pull from:

 http://linuxtv.org/hg/~dheitmueller/hvr950q-analog2

 for the following:

 xc5000: fix bug for hybrid xc5000 devices with IF other than 5380
 au8522: rename the au8522.c source file
 au8522: move shared state and common functions into a separate header
 files
 au8522: fix register read/write high bits
 au8522: power down the digital demod when not in use
 au8522: make use of hybrid framework so analog/digital demod can share
 state
 au8522: add support for analog side of demodulator
 au0828: add support for analog functionality in bridge
 au0828: workaround a bug in the au0828 i2c handling
 au0828: add analog profile for the HVR-850
 au8522: add mutex protecting use of hybrid state
 au0828: Rework the way the analog video binding occurs
 tveeprom: add the xc5000 tuner to the tveeprom definition
 au0828: advertise only NTSC-M (as opposed to all NTSC standards)
 au0828: disable VBI code since it doesn't yet work
 au0828: fix i2c enumeration bug
 au0828: make register debug lines easier to read
 au0828: make g_chip_ident call work properly
 au0828: properly handle missing analog USB endpoint
 au0828: properly handle non-existent analog inputs
 au0828: fix panic on disconnect if analog initialization failed
 au0828: Convert to use v4l2_device/subdev framework

 Hi Devin,

 Can you also do the last bit of the v4l2_device/subdev conversion by
 actually using the subdev callbacks (replace au0828_call_i2c_clients
 with
 v4l2_device_call_all), removing attach_inform and detach_inform (already
 deprecated in 2.6.29) and in au8522_decoder.c replacing
 v4l2-i2c-drv-legacy.h by v4l2-i2c-drv.h and removing the au8522_command.

 Basically, when you compile against 2.6.29 you shouldn't see any
 'deprecated' warnings!

 I also suggest renaming au8522_decoder.c to just au8522.c, like all the
 other i2c modules.


 Hans,

 There was already a au8522.c in the master branch before Devin's
 patches -- au8522.c is located in drivers/media/dvb/frontends -- it is
 an ATSC/QAM demodulator modulator.  Devin had renamed au8522.c to
 au8522_dig.c , so that it can be built with au8522_decoder.c into a
 single module.

 It is important that this remain a single module, because there is
 state being shared between the analog and digitial sides of this
 device.

 This is a hybrid demodulator, the first of it's kind within our codebase.

Ah, thank you for the explanation. No need for a rename then :-)

Thanks,

   Hans

-- 
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


Re: [PULL] http://linuxtv.org/hg/~dheitmueller/hvr950q-analog2

2009-03-12 Thread Devin Heitmueller
On Thu, Mar 12, 2009 at 4:54 AM, Mauro Carvalho Chehab
mche...@infradead.org wrote:
 Hi Devin,

 There's a bug on your patch series: see this:

 Those are the locations of au8522 files at Kernel's tree:
        drivers/media/dvb/frontends/au8522.h
        drivers/media/dvb/frontends/au8522_dig.c
        drivers/media/dvb/frontends/au8522_priv.h
        drivers/media/video/au8522_decoder.c

 And those are the Makefile rules for au8522.h on 
 drivers/media/dvb/frontends/Makefile:

 au8522-objs = au8522_dig.o au8522_decoder.o
 obj-$(CONFIG_DVB_AU8522) += au8522.o

 When you're compiling the out-of-tree version, everything works OK, but, for
 in-tree compilation, au8522_decoder won't be compiled, since the file will be
 in the wrong dir.

 If I'm understanding well, this chip has two functions: it is a dvb frontend
 and an analog video/audio demodulator, right?

 One solution would be to have all those files in the same directory. However,
 au8522_decoder doesn't fit well on dvb/frontends. It is also not a tuner,
 otherwise common/tuners would be another better place.

 Another alternative would be to create two kconfig rules (and two separate
 modules), being one for au8522_decoder and another for the frontend, since 
 they
 are, in fact, two different things.

 I suspect,however, that compiling just one or another would break compilation.
 So, we need to create some sort of rules that will warrant that both modules
 will be compiled at the same time. This is not an easy task, since we cannot
 add depends on, since frontends are compiled by using select. So, we will
 need to re-design the Kconfig rules to use depends on instead of select (well,
 this is something good, anyway, since the usage of select is something that
 should be avoided, according with Kbuild docs).

 I'll keep reviewing the patch series. Maybe I'll merge it, but, in this case,
 I'll need to blacklist the module until we found a solution, or find a way to
 allow my -git trees to compile.

 Cheers,
 Mauro


Hello Mauro,

Both files are required, as they share certain functions (such as the
i2c transfer functions).  Also, they share a common state mechanism,
which is why both files end up in the same .ko file.

This case is a little unique since it is the first case where we have
a single chip that acts as a digital demod, an analog demod, and an
analog video/audio decoder.

I can certainly put the au8522_decoder.c into dvb/frontends even
though this probably violates some rule about analog stuff being in
the DVB section of the tree.  Would that resolve your concern?

I really don't want to make redesigning the KConfig rules a
prerequisite to getting this rather large patch series merged.  I
would suggest we do what is required to get the code in (such as
moving the _decoder.c to frontends), and then we can tune the solution
to be something more optimal in terms of how the tree is structured.

Devin

-- 
Devin J. Heitmueller
http://www.devinheitmueller.com
AIM: devinheitmueller
--
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 2/5] pcm990 baseboard: add camera bus width switch setting

2009-03-12 Thread Sascha Hauer
On Thu, Mar 12, 2009 at 02:12:09PM +0100, Guennadi Liakhovetski wrote:
 On Thu, 12 Mar 2009, Sascha Hauer wrote:
 
  Some Phytec cameras have a I2C GPIO expander which allows it to
  switch between different sensor bus widths. This was previously
  handled in the camera driver. Since handling of this switch
  varies on several boards the cameras are used on, the board
  support seems a better place to handle the switch
  
  Signed-off-by: Sascha Hauer s.ha...@pengutronix.de
  ---
   arch/arm/mach-pxa/pcm990-baseboard.c |   49 
  +++--
   1 files changed, 40 insertions(+), 9 deletions(-)
  
  diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c 
  b/arch/arm/mach-pxa/pcm990-baseboard.c
  index 34841c7..8b01565 100644
  --- a/arch/arm/mach-pxa/pcm990-baseboard.c
  +++ b/arch/arm/mach-pxa/pcm990-baseboard.c
  @@ -381,14 +381,45 @@ static struct pca953x_platform_data pca9536_data = {
  .gpio_base  = NR_BUILTIN_GPIO + 1,
   };
   
  -static struct soc_camera_link iclink[] = {
  -   {
  -   .bus_id = 0, /* Must match with the camera ID above */
  -   .gpio   = NR_BUILTIN_GPIO + 1,
  -   }, {
  -   .bus_id = 0, /* Must match with the camera ID above */
  -   .gpio   = -ENXIO,
  +static int gpio_bus_switch;
  +
  +static int pcm990_camera_set_bus_param(struct soc_camera_link *link,
  +   unsigned long flags)
  +{
  +   if (gpio_bus_switch = 0)
  +   return 0;
 
 Are you really sure you don't want to return an error here? In 
 query_bus_param() below, if you fail to get the GPIO, you set 
 gpio_bus_switch to -EINVAL and return only 10 bit. Now if a buggy host 
 driver still requests 8 bits, mt9m001 will call -set_bus_param and you 
 will happily return 0...
 

Of course there are no buggy host drivers ;)

Ok, changed it to support only ten bit without gpio switch and return
-EINVAL for any other width.

Sasche


From 58485f136579273d4da41d65974ce6ed02ba877a Mon Sep 17 00:00:00 2001
From: Sascha Hauer s.ha...@pengutronix.de
Date: Tue, 10 Mar 2009 16:45:58 +0100
Subject: [PATCH 2/5] pcm990 baseboard: add camera bus width switch setting

Some Phytec cameras have a I2C GPIO expander which allows it to
switch between different sensor bus widths. This was previously
handled in the camera driver. Since handling of this switch
varies on several boards the cameras are used on, the board
support seems a better place to handle the switch

Signed-off-by: Sascha Hauer s.ha...@pengutronix.de
---
 arch/arm/mach-pxa/pcm990-baseboard.c |   53 --
 1 files changed, 44 insertions(+), 9 deletions(-)

diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c 
b/arch/arm/mach-pxa/pcm990-baseboard.c
index 34841c7..fd8f786 100644
--- a/arch/arm/mach-pxa/pcm990-baseboard.c
+++ b/arch/arm/mach-pxa/pcm990-baseboard.c
@@ -381,14 +381,49 @@ static struct pca953x_platform_data pca9536_data = {
.gpio_base  = NR_BUILTIN_GPIO + 1,
 };
 
-static struct soc_camera_link iclink[] = {
-   {
-   .bus_id = 0, /* Must match with the camera ID above */
-   .gpio   = NR_BUILTIN_GPIO + 1,
-   }, {
-   .bus_id = 0, /* Must match with the camera ID above */
-   .gpio   = -ENXIO,
+static int gpio_bus_switch;
+
+static int pcm990_camera_set_bus_param(struct soc_camera_link *link,
+   unsigned long flags)
+{
+   if (gpio_bus_switch = 0) {
+   if (flags == SOCAM_DATAWIDTH_10)
+   return 0;
+   else
+   return -EINVAL;
+   }
+
+   if (flags  SOCAM_DATAWIDTH_8)
+   gpio_set_value(gpio_bus_switch, 1);
+   else
+   gpio_set_value(gpio_bus_switch, 0);
+
+   return 0;
+}
+
+static unsigned long pcm990_camera_query_bus_param(struct soc_camera_link 
*link)
+{
+   int ret;
+
+   if (!gpio_bus_switch) {
+   ret = gpio_request(NR_BUILTIN_GPIO + 1, camera);
+   if (!ret) {
+   gpio_bus_switch = NR_BUILTIN_GPIO + 1;
+   gpio_direction_output(gpio_bus_switch, 0);
+   } else
+   gpio_bus_switch = -EINVAL;
}
+
+   if (gpio_bus_switch  0)
+   return SOCAM_DATAWIDTH_8 | SOCAM_DATAWIDTH_10;
+   else
+   return SOCAM_DATAWIDTH_10;
+}
+
+static struct soc_camera_link iclink = {
+   .bus_id = 0, /* Must match with the camera ID above */
+   .query_bus_param = pcm990_camera_query_bus_param,
+   .set_bus_param = pcm990_camera_set_bus_param,
 };
 
 /* Board I2C devices. */
@@ -399,10 +434,10 @@ static struct i2c_board_info __initdata 
pcm990_i2c_devices[] = {
.platform_data = pca9536_data,
}, {
I2C_BOARD_INFO(mt9v022, 0x48),
-   .platform_data = iclink[0], /* With extender */
+   .platform_data = iclink, /* With extender */
}, {
I2C_BOARD_INFO(mt9m001, 0x5d),
-  

Re: [PATCH 0/5] V2: soc-camera: setting the buswidth of camera sensors

2009-03-12 Thread Sascha Hauer
On Thu, Mar 12, 2009 at 02:31:17PM +0100, Guennadi Liakhovetski wrote:
 On Thu, 12 Mar 2009, Sascha Hauer wrote:
 
  Take 2: I hope I addressed all comments I receive in the first round.
  
  The following patches change the handling of the bus width
  for camera sensors so that a board can overwrite a sensors
  native bus width
  
  Sascha Hauer (5):
soc-camera: add board hook to specify the buswidth for camera sensors
pcm990 baseboard: add camera bus width switch setting
mt9m001: allow setting of bus width from board code
mt9v022: allow setting of bus width from board code
soc-camera: remove now unused gpio member of struct soc_camera_link
 
 Ok, the rest look good to me. So, after you fix or explain 2/5 I'll be 
 pulling them.

If by pulling you mean 'git pull' you can do it here:

git://git.pengutronix.de/git/sha/linux-2.6.git soc-camera-bus-switch

Thanks
  Sascha

-- 
Pengutronix e.K.   | |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
--
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: [PULL] http://linuxtv.org/hg/~dheitmueller/hvr950q-analog2

2009-03-12 Thread Hans Verkuil

 On Thu, Mar 12, 2009 at 5:19 AM, Hans Verkuil hverk...@xs4all.nl wrote:
 Hi Devin,

 Can you also do the last bit of the v4l2_device/subdev conversion by
 actually using the subdev callbacks (replace au0828_call_i2c_clients
 with
 v4l2_device_call_all), removing attach_inform and detach_inform (already
 deprecated in 2.6.29) and in au8522_decoder.c replacing
 v4l2-i2c-drv-legacy.h by v4l2-i2c-drv.h and removing the au8522_command.

 Basically, when you compile against 2.6.29 you shouldn't see any
 'deprecated' warnings!

 I also suggest renaming au8522_decoder.c to just au8522.c, like all the
 other i2c modules.

 Hello Hans,

 I am certainly in favor of what you have proposed.  However, I would
 like to do it as an incremental improvement over what the series
 currently contains.

 Any chance you can allow the current series to go in as-is, and I can
 work on this over the next couple of days (as I will need to retest
 everything)?  The patch series has gotten kind of unwieldy.

No problem. It's fairly trivial to do since you're 90% there already :-)

Regards,

Hans

-- 
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


Re: [PULL] http://linuxtv.org/hg/~dheitmueller/hvr950q-analog2

2009-03-12 Thread Devin Heitmueller
Hello Mauro,

Thank you for reviewing.  See comments inline.

On Thu, Mar 12, 2009 at 6:06 AM, Mauro Carvalho Chehab
mche...@infradead.org wrote:
 +static int vidioc_querycap(struct file *file, void  *priv,
 +                          struct v4l2_capability *cap)
 +{
 +       struct au0828_fh *fh  = priv;
 +       struct au0828_dev *dev = fh-dev;
 +
 +       memset(cap, 0, sizeof(*cap));

 Please remove all memsets for input/output arguments on vidioc_foo at 
 au0828-video.c.
 The V4L2 core warrants that the non-input fields are zeroed.

Ok.

 +static int vidioc_enum_fmt_vid_cap(struct file *file, void  *priv,
 +                                       struct v4l2_fmtdesc *f)
 +{
 +       if(f-index)
 +               return -EINVAL;
 +
 +       memset(f, 0, sizeof(*f));
 +       f-type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 +       strcpy(f-description, Packed YUV2);
 +
 +       f-flags = 0;
 +       f-pixelformat = V4L2_PIX_FMT_UYVY;
 +
 +       memset(f-reserved, 0, sizeof(f-reserved));
 +       return 0;
 +}

 hmm.. you are cleaning up f-reserved three times: at v4l2-ioctl, at the
 memset(f) and at memset(f-reserved).

 You really wanted to make sure that you've cleaned it, don't you? ;)

Well, I wanted to be *extra* sure.  ;-)  Yeah, I'll yank the duplicate code.

 hmm...

 +#ifdef VBI_NOT_YET_WORKING
 +       .vidioc_g_fmt_vbi_cap       = vidioc_g_fmt_vbi_cap,
 +       .vidioc_try_fmt_vbi_cap     = vidioc_s_fmt_vbi_cap,
 +       .vidioc_s_fmt_vbi_cap       = vidioc_s_fmt_vbi_cap,
 +#endif

 I don't see any reference of this macro. If VBI is working, please cleanup the
 driver. Btw, your logic seems to be inverted on some cases. Why are you adding
 VBI macros, if it is not working yet?

 On the other hand, if VBI is broken we'll need some rules for removing vbi 
 code
 from upstream, at gentree.pl.

Here's the situation with VBI:  I did all the groundwork, but it
doesn't work yet.  I am hoping on getting it working over the next
couple of weeks.  I believed that #ifdef'ing out the code was the
safest way to ensure that the code does not get called, while not
having to remove it from the tree entirely.

If this is important to you that the code not appear in the source
tree at all until it works entirely, then I will remove the VBI code
entirely.

 +enum au0828_itype {
 +       AU0828_VMUX_UNDEFINED = 0,
 +       AU0828_VMUX_COMPOSITE,
 +       AU0828_VMUX_SVIDEO,
 +       AU0828_VMUX_CABLE,
 +       AU0828_VMUX_TELEVISION,
 +       AU0828_VMUX_DVB,
 +       AU0828_VMUX_DEBUG
 +};

 ...

 +static int vidioc_enum_input(struct file *file, void *priv,
 +                               struct v4l2_input *input)
 +{
 +       struct au0828_fh *fh = priv;
 +       struct au0828_dev *dev = fh-dev;
 +       unsigned int tmp;
 +
 +       static const char *inames[] = {
 +               [AU0828_VMUX_COMPOSITE] = Composite,
 +               [AU0828_VMUX_SVIDEO] = S-Video,
 +               [AU0828_VMUX_CABLE] = Cable TV,
 +               [AU0828_VMUX_TELEVISION] = Television,
 +               [AU0828_VMUX_DVB] = DVB,
 +               [AU0828_VMUX_DEBUG] = tv debug
 +       };

 If the user enumerates an entry marked as UNDEFINED, it will print NULL. Is it
 what you really wanted? I would, instead, assign another value for
 AU0828_VMUX_UNDEFINED, like -1.

Yeah, printing NULL is bad and I can obviously fix that.  The real
reason for the addition of the UNDEFINED entry is I use that to
detect if there are *any* analog inputs defined, which dictates
whether the analog subsystem is initialized.  Because the .input
section is a member of the au0828_dev struct, and not a pointer, I
needed some way to tell if it was populated with anything.

 +       switch(AUVI_INPUT(index).type) {
 +       case AU0828_VMUX_SVIDEO:
 +       {
 +               dev-input_type = AU0828_VMUX_SVIDEO;
 +               break;
 +       }
 +       case AU0828_VMUX_COMPOSITE:
 +       {
 +               dev-input_type = AU0828_VMUX_COMPOSITE;
 +               break;
 +       }
 +       case AU0828_VMUX_TELEVISION:
 +       {
 +               dev-input_type = AU0828_VMUX_TELEVISION;
 +               break;
 +       }
 +       default:
 +               ;
 +       }

 You don't need all those braces.

I will remove the braces.

 Also, the default rule is missing. I don't see why you would preserve the same
 dev-input_type if the user selects an undefined entry, or a DVB or a debug.

I will fix that.

 Ah, finally, there are a number of CodingStyle fun. I've enclosed what it got,
 from the final code. Please, always use make checkpatch before committing a 
 patch.

I rather foolishly assumed that make commit ran make checkpatch.
I looked at the list and all of these issues are easy to fix, and I
will do that tonight.

Please let me know if you have any other concerns (and what you want
me to do regarding the VBI stuff), since I would like to avoid having
do redo the tree again.

Thanks,

Devin

-- 
Devin J. Heitmueller
http://www.devinheitmueller.com
AIM: 

Re: [PATCH 1/1] siano: add high level SDIO interface driver for SMS based cards

2009-03-12 Thread Uri Shkolnik

Mauro and all,

I submitted 3 patches, two modifications for the SDIO generic stack, and one 
new high level SDIO interface driver for Siano based devices.

This concludes SDIO related changes, with one exception, which is explained 
below.

However this explanation requires some overview about Siano's module inner 
architecture.

The Siano kernel module architecture is composed from:
1) SMS Core - This main component holds all Siano's host-device protocol 
logic, and any logic needed to bind the other module's components, interface 
and adapters.
2) Interfaces drivers (SDIO, USB, TS, SPP, HIF, ...) - At lease one interface 
driver must be compiled and linked, but multiple interfaces are supported. This 
feature enables platforms like the Asus UMPC series to use SMS based USB dongle 
and SMS based SDIO dongle simultaneously. 
3) Client adapters (DVB API v3, DVB API v5, others) - Similar to the interfaces 
drivers, at least one client adapter must be linked, but multiple are supported.
4) SMS cards - This component contains any hardware target specific 
information (like LEDs locations, antenna configuration, alternative firmware 
names, and much more), leaving any other component target-independent.


And now back to SDIO

True all SDIO related sources files are now updated (after these 3 patches), 
but since the build system (Kconfig  Makefile) and smscore component are yet 
to be updated, the SDIO interface driver can not be linked into the module.
The option to link and use the SDIO interface driver, will be available after 
those files will be updated (hope it'll happen shortly).


One question: Should I continue submit patches (I have them ready), or should I 
wait till the 3 previous submission will be reviewed and committed?


Regards,

Uri





  
--
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: [PULL] http://linuxtv.org/hg/~dheitmueller/hvr950q-analog2

2009-03-12 Thread Mauro Carvalho Chehab
On Thu, 12 Mar 2009 10:24:02 -0400
Devin Heitmueller devin.heitmuel...@gmail.com wrote:

  hmm.. you are cleaning up f-reserved three times: at v4l2-ioctl, at the
  memset(f) and at memset(f-reserved).
 
  You really wanted to make sure that you've cleaned it, don't you? ;)
 
 Well, I wanted to be *extra* sure.  ;-)  Yeah, I'll yank the duplicate code.

LOL
 
  hmm...
 
  +#ifdef VBI_NOT_YET_WORKING
  +       .vidioc_g_fmt_vbi_cap       = vidioc_g_fmt_vbi_cap,
  +       .vidioc_try_fmt_vbi_cap     = vidioc_s_fmt_vbi_cap,
  +       .vidioc_s_fmt_vbi_cap       = vidioc_s_fmt_vbi_cap,
  +#endif
 
  I don't see any reference of this macro. If VBI is working, please cleanup 
  the
  driver. Btw, your logic seems to be inverted on some cases. Why are you 
  adding
  VBI macros, if it is not working yet?
 
  On the other hand, if VBI is broken we'll need some rules for removing vbi 
  code
  from upstream, at gentree.pl.
 
 Here's the situation with VBI:  I did all the groundwork, but it
 doesn't work yet.  I am hoping on getting it working over the next
 couple of weeks.  I believed that #ifdef'ing out the code was the
 safest way to ensure that the code does not get called, while not
 having to remove it from the tree entirely.
 
 If this is important to you that the code not appear in the source
 tree at all until it works entirely, then I will remove the VBI code
 entirely.

Hmm... So, I understood just the opposite ;)

you wrote if VBI_IS_NOT_WORKING, when you should have written if
VBI_IS_WORKING.

Just rename it. I'll add it at gentree.pl to remove this symbol.

 
  +enum au0828_itype {
  +       AU0828_VMUX_UNDEFINED = 0,
  +       AU0828_VMUX_COMPOSITE,
  +       AU0828_VMUX_SVIDEO,
  +       AU0828_VMUX_CABLE,
  +       AU0828_VMUX_TELEVISION,
  +       AU0828_VMUX_DVB,
  +       AU0828_VMUX_DEBUG
  +};
 
  ...
 
  +static int vidioc_enum_input(struct file *file, void *priv,
  +                               struct v4l2_input *input)
  +{
  +       struct au0828_fh *fh = priv;
  +       struct au0828_dev *dev = fh-dev;
  +       unsigned int tmp;
  +
  +       static const char *inames[] = {
  +               [AU0828_VMUX_COMPOSITE] = Composite,
  +               [AU0828_VMUX_SVIDEO] = S-Video,
  +               [AU0828_VMUX_CABLE] = Cable TV,
  +               [AU0828_VMUX_TELEVISION] = Television,
  +               [AU0828_VMUX_DVB] = DVB,
  +               [AU0828_VMUX_DEBUG] = tv debug
  +       };
 
  If the user enumerates an entry marked as UNDEFINED, it will print NULL. Is 
  it
  what you really wanted? I would, instead, assign another value for
  AU0828_VMUX_UNDEFINED, like -1.
 
 Yeah, printing NULL is bad and I can obviously fix that.  The real
 reason for the addition of the UNDEFINED entry is I use that to
 detect if there are *any* analog inputs defined, which dictates
 whether the analog subsystem is initialized.  Because the .input
 section is a member of the au0828_dev struct, and not a pointer, I
 needed some way to tell if it was populated with anything.

if you attribute it to -1, the userspace calls will never set it to undefined.
You should take some care to avoid reading outside some array though.

  Ah, finally, there are a number of CodingStyle fun. I've enclosed what it 
  got,
  from the final code. Please, always use make checkpatch before committing a 
  patch.
 
 I rather foolishly assumed that make commit ran make checkpatch.

It runs, and outputs its result at the commit comments.

 I looked at the list and all of these issues are easy to fix, and I
 will do that tonight.

Ok.

 Please let me know if you have any other concerns (and what you want
 me to do regarding the VBI stuff), since I would like to avoid having
 do redo the tree again.

No, just the above. Please, instead of redo the tree, just add some patches
fixing those issues. This allows me to review faster your series.



Cheers,
Mauro
--
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: [PULL] http://linuxtv.org/hg/~dheitmueller/hvr950q-analog2

2009-03-12 Thread Devin Heitmueller
On Thu, Mar 12, 2009 at 11:06 AM, Mauro Carvalho Chehab
mche...@infradead.org wrote:
 Yeah, printing NULL is bad and I can obviously fix that.  The real
 reason for the addition of the UNDEFINED entry is I use that to
 detect if there are *any* analog inputs defined, which dictates
 whether the analog subsystem is initialized.  Because the .input
 section is a member of the au0828_dev struct, and not a pointer, I
 needed some way to tell if it was populated with anything.

 if you attribute it to -1, the userspace calls will never set it to undefined.
 You should take some care to avoid reading outside some array though.

The problem is that I check for UNDEFINED so that the .input section
of the au0828 board definition can be left uninitialized.  Otherwise,
I would have to add something like num_inputs to the board
definition and worry about the value matching the actual number of
inputs defined.

 I looked at the list and all of these issues are easy to fix, and I
 will do that tonight.

 Ok.

 Please let me know if you have any other concerns (and what you want
 me to do regarding the VBI stuff), since I would like to avoid having
 do redo the tree again.

 No, just the above. Please, instead of redo the tree, just add some patches
 fixing those issues. This allows me to review faster your series.

Do you mean the checkpatch fixes should be done as a separate patch
too?  I assumed you wanted me to fix the original patch to pass make
checkpatch.  Is there a way to do the equivalent of make checkpatch
against particular hg revisions or source files?  I'm just trying to
understand the best way to ensure that all of the issues actually get
fixed.

Devin

-- 
Devin J. Heitmueller
http://www.devinheitmueller.com
AIM: devinheitmueller
--
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] mt9t031 bugfix

2009-03-12 Thread Guennadi Liakhovetski
On Fri, 6 Mar 2009, Philippe Rétornaz wrote:

 - The video device is not allocated when mt9t031_init() is called, don't use 
 it in debug printk.
 
 - The clock polarity is inverted in mt9t031_set_bus_param(), use the correct 
 one.
 
 
 Signed-off-by: Philippe Rétornaz philippe.retor...@epfl.ch
 
 ---
 
 diff --git a/drivers/media/video/mt9t031.c b/drivers/media/video/mt9t031.c
 index acc1fa9..d846110 100644
 --- a/drivers/media/video/mt9t031.c
 +++ b/drivers/media/video/mt9t031.c
 @@ -144,8 +144,6 @@ static int mt9t031_init(struct soc_camera_device *icd)
   int ret;
  
   /* Disable chip output, synchronous option update */
 - dev_dbg(icd-vdev-parent, %s\n, __func__);
 -
   ret = reg_write(icd, MT9T031_RESET, 1);
   if (ret = 0)
   ret = reg_write(icd, MT9T031_RESET, 0);
 @@ -186,9 +184,9 @@ static int mt9t031_set_bus_param(struct soc_camera_device 
 *icd,
   return -EINVAL;
  
   if (flags  SOCAM_PCLK_SAMPLE_FALLING)
 - reg_set(icd, MT9T031_PIXEL_CLOCK_CONTROL, 0x8000);
 - else
   reg_clear(icd, MT9T031_PIXEL_CLOCK_CONTROL, 0x8000);
 + else
 + reg_set(icd, MT9T031_PIXEL_CLOCK_CONTROL, 0x8000);

Why do you think this is the correct one? According to the Pin 
Description Table (Table 3 on page 8 in my copy), indeed, it says

quote
Pixel clock: pixel data outputs are valid during falling edge of this 
clock.
/quote

which _probably_ should refer to the default configuration, which is 
R10=0, i.e., non-inverted pixclk. In this case you are right. However, in 
Figure Pixel Color Pattern Detail (Top Right Corner) (Figure 5 on page 
10) you see the first pixel green in a red row, and this is what I seem to 
be getting with the current driver, after applying your patch I'm getting 
a red pixel at the start. Are you basing your patch only on Table 3 or you 
verified it practically somehow?

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.

DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: off...@denx.de
--
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


[PULL] gspca

2009-03-12 Thread Jean-Francois Moine
Hi Mauro,

Is there any problem with these changesets from
http://linuxtv.org/hg/~jfrancois/v4l-dvb/ ?

changeset:   10789:57bfe95f2ac1
gspca - most jpeg subdrivers: Change the JPEG header creation.

changeset:   10790:2a1b8f88f331
gspca - most jpeg subdrivers: Have the JPEG quality settable.

Cheers.

-- 
Ken ar c'hentañ | ** Breizh ha Linux atav! **
Jef |   http://moinejf.free.fr/
--
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-03-12 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:Thu Mar 12 19:00:05 CET 2009
path:http://www.linuxtv.org/hg/v4l-dvb
changeset:   10979:0475dee8dab8
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-rc7-armv5: OK
linux-2.6.27-armv5-ixp: WARNINGS
linux-2.6.28-armv5-ixp: OK
linux-2.6.29-rc7-armv5-ixp: OK
linux-2.6.27-armv5-omap2: OK
linux-2.6.28-armv5-omap2: OK
linux-2.6.29-rc7-armv5-omap2: OK
linux-2.6.22.19-i686: ERRORS
linux-2.6.23.12-i686: OK
linux-2.6.24.7-i686: OK
linux-2.6.25.11-i686: OK
linux-2.6.26-i686: OK
linux-2.6.27-i686: OK
linux-2.6.28-i686: OK
linux-2.6.29-rc7-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-rc7-m32r: OK
linux-2.6.26-mips: OK
linux-2.6.27-mips: OK
linux-2.6.28-mips: OK
linux-2.6.29-rc7-mips: WARNINGS
linux-2.6.27-powerpc64: OK
linux-2.6.28-powerpc64: OK
linux-2.6.29-rc7-powerpc64: WARNINGS
linux-2.6.22.19-x86_64: ERRORS
linux-2.6.23.12-x86_64: OK
linux-2.6.24.7-x86_64: OK
linux-2.6.25.11-x86_64: OK
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-rc7-x86_64: WARNINGS
fw/apps: OK
sparse (linux-2.6.28): ERRORS
sparse (linux-2.6.29-rc7): ERRORS

Detailed results are available here:

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

Full logs are available here:

http://www.xs4all.nl/~hverkuil/logs/Thursday.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 2/5] pcm990 baseboard: add camera bus width switch setting

2009-03-12 Thread Sascha Hauer
On Thu, Mar 12, 2009 at 08:11:27PM +0100, Guennadi Liakhovetski wrote:
 ...one more thing. I noticed, that after patch 2 the cameras would stop 
 work, because iclink-gpio would be set to 0. Which would break bisection. 
 Ok, this is rather theoretical, still I modified the patches a bit. 
 Please, have a look, if you're ok with these changes, that's how I'm going 
 to commit them. Affected are patches 2/5 and 5/5. I'm just quoting them 
 below.

Yes, I was aware of this bisection problem. I just wanted to avoid
having patch 5/5 touch arch/arm and include/media or even split this
up further.
Anyway, I'm fine with the change.

Sascha


 
 Thanks
 Guennadi
 ---
 Guennadi Liakhovetski, Ph.D.
 Freelance Open-Source Software Developer
 
 From 80912f8e2bbbf0f81318c68e1bd5f69fc9537795 Mon Sep 17 00:00:00 2001
 From: Sascha Hauer s.ha...@pengutronix.de
 Date: Thu, 12 Mar 2009 20:04:43 +0100
 Subject: [PATCH] pcm990 baseboard: add camera bus width switch setting
 
 Some Phytec cameras have a I2C GPIO expander which allows it to
 switch between different sensor bus widths. This was previously
 handled in the camera driver. Since handling of this switch
 varies on several boards the cameras are used on, the board
 support seems a better place to handle the switch
 
 Signed-off-by: Sascha Hauer s.ha...@pengutronix.de
 Signed-off-by: Guennadi Liakhovetski g.liakhovet...@gmx.de
 ---
  arch/arm/mach-pxa/pcm990-baseboard.c |   54 -
  1 files changed, 45 insertions(+), 9 deletions(-)
 
 diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c 
 b/arch/arm/mach-pxa/pcm990-baseboard.c
 index f46698e..90a3990 100644
 --- a/arch/arm/mach-pxa/pcm990-baseboard.c
 +++ b/arch/arm/mach-pxa/pcm990-baseboard.c
 @@ -380,14 +380,50 @@ static struct pca953x_platform_data pca9536_data = {
   .gpio_base  = NR_BUILTIN_GPIO + 1,
  };
  
 -static struct soc_camera_link iclink[] = {
 - {
 - .bus_id = 0, /* Must match with the camera ID above */
 - .gpio   = NR_BUILTIN_GPIO + 1,
 - }, {
 - .bus_id = 0, /* Must match with the camera ID above */
 - .gpio   = -ENXIO,
 +static int gpio_bus_switch;
 +
 +static int pcm990_camera_set_bus_param(struct soc_camera_link *link,
 + unsigned long flags)
 +{
 + if (gpio_bus_switch = 0) {
 + if (flags == SOCAM_DATAWIDTH_10)
 + return 0;
 + else
 + return -EINVAL;
 + }
 +
 + if (flags  SOCAM_DATAWIDTH_8)
 + gpio_set_value(gpio_bus_switch, 1);
 + else
 + gpio_set_value(gpio_bus_switch, 0);
 +
 + return 0;
 +}
 +
 +static unsigned long pcm990_camera_query_bus_param(struct soc_camera_link 
 *link)
 +{
 + int ret;
 +
 + if (!gpio_bus_switch) {
 + ret = gpio_request(NR_BUILTIN_GPIO + 1, camera);
 + if (!ret) {
 + gpio_bus_switch = NR_BUILTIN_GPIO + 1;
 + gpio_direction_output(gpio_bus_switch, 0);
 + } else
 + gpio_bus_switch = -EINVAL;
   }
 +
 + if (gpio_bus_switch  0)
 + return SOCAM_DATAWIDTH_8 | SOCAM_DATAWIDTH_10;
 + else
 + return SOCAM_DATAWIDTH_10;
 +}
 +
 +static struct soc_camera_link iclink = {
 + .bus_id = 0, /* Must match with the camera ID above */
 + .gpio = NR_BUILTIN_GPIO + 1,
 + .query_bus_param = pcm990_camera_query_bus_param,
 + .set_bus_param = pcm990_camera_set_bus_param,
  };
  
  /* Board I2C devices. */
 @@ -398,10 +434,10 @@ static struct i2c_board_info __initdata 
 pcm990_i2c_devices[] = {
   .platform_data = pca9536_data,
   }, {
   I2C_BOARD_INFO(mt9v022, 0x48),
 - .platform_data = iclink[0], /* With extender */
 + .platform_data = iclink, /* With extender */
   }, {
   I2C_BOARD_INFO(mt9m001, 0x5d),
 - .platform_data = iclink[0], /* With extender */
 + .platform_data = iclink, /* With extender */
   },
  };
  #endif /* CONFIG_VIDEO_PXA27x ||CONFIG_VIDEO_PXA27x_MODULE */
 -- 
 1.5.4
 
 
 From 2d9b3eb219c391f9d626ae63835c8224ea8ef10e Mon Sep 17 00:00:00 2001
 From: Sascha Hauer s.ha...@pengutronix.de
 Date: Thu, 12 Mar 2009 20:06:01 +0100
 Subject: [PATCH] soc-camera: remove now unused gpio member of struct 
 soc_camera_link
 
 Signed-off-by: Sascha Hauer s.ha...@pengutronix.de
 Signed-off-by: Guennadi Liakhovetski g.liakhovet...@gmx.de
 ---
  arch/arm/mach-pxa/pcm990-baseboard.c |1 -
  include/media/soc_camera.h   |2 --
  2 files changed, 0 insertions(+), 3 deletions(-)
 
 diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c 
 b/arch/arm/mach-pxa/pcm990-baseboard.c
 index 90a3990..6112740 100644
 --- a/arch/arm/mach-pxa/pcm990-baseboard.c
 +++ b/arch/arm/mach-pxa/pcm990-baseboard.c
 @@ -421,7 +421,6 @@ static unsigned long pcm990_camera_query_bus_param(struct 
 soc_camera_link *link)
  
  static struct soc_camera_link 

Fwd: [stable] [PATCH] 2.6.27.y: fix NULL ptr deref in cx23885 video_open

2009-03-12 Thread Michael Krufky
Can we have this merged into -stable?  Jarod Wilson sent this last
month, but he left off the cc to sta...@kernel.org

Signed-off-by: Michael Krufky mkru...@linuxtv.org


-- Forwarded message --
From: Jarod Wilson ja...@redhat.com
Date: Tue, Feb 24, 2009 at 6:00 PM
Subject: [stable] [PATCH] 2.6.27.y: fix NULL ptr deref in cx23885 video_open
To: linux-ker...@vger.kernel.org
Cc: Mike Krufky mkru...@linuxtv.org


From: Mark Jenks
https://www.redhat.com/mailman/private/video4linux-list/2009-January/msg00041.html

The Hauppauge WinTV HVR-1800 tv tuner card has both digital and analog
abilities, both of which are supported by v4l/dvb under 2.6.27.y. The analog
side also features a hardware mpeg2 encoder. The HVR-1250 tv tuner card
has both digital and analog abilities, but analog isn't currently supported
under any kernel. These cards both utilize the cx23885 driver, but with
slightly different usage. When the code paths for each card is executed,
they wind up poking a cx23885_devlist, which contains devices from both
of the cards, and access attempts are made to portions of 'struct
cx23885_dev' that aren't valid for that device. Simply add some extra
checks before trying to access these structs.

More gory details:
 http://article.gmane.org/gmane.linux.drivers.dvb/46630

This was triggering on my own system at home w/both cards in it, and
no longer happens with this patch included.

Signed-off-by: Jarod Wilson ja...@redhat.com
Reviewed-by: Michael Krufky mkru...@linuxtv.org

---

 drivers/media/video/cx23885/cx23885-417.c   |    2 +-
 drivers/media/video/cx23885/cx23885-video.c |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/video/cx23885/cx23885-417.c
b/drivers/media/video/cx23885/cx23885-417.c
index 7b0e8c0..19154b6 100644
--- a/drivers/media/video/cx23885/cx23885-417.c
+++ b/drivers/media/video/cx23885/cx23885-417.c
@@ -1585,7 +1585,7 @@ static int mpeg_open(struct inode *inode, struct
file *file)

       list_for_each(list, cx23885_devlist) {
               h = list_entry(list, struct cx23885_dev, devlist);
-               if (h-v4l_device-minor == minor) {
+               if (h-v4l_device  h-v4l_device-minor == minor) {
                       dev = h;
                       break;
               }
diff --git a/drivers/media/video/cx23885/cx23885-video.c
b/drivers/media/video/cx23885/cx23885-video.c
index 6047c78..a2b5a0c 100644
--- a/drivers/media/video/cx23885/cx23885-video.c
+++ b/drivers/media/video/cx23885/cx23885-video.c
@@ -733,7 +733,7 @@ static int video_open(struct inode *inode, struct
file *file)

       list_for_each(list, cx23885_devlist) {
               h = list_entry(list, struct cx23885_dev, devlist);
-               if (h-video_dev-minor == minor) {
+               if (h-video_dev  h-video_dev-minor == minor) {
                       dev  = h;
                       type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
               }


--
Jarod Wilson
ja...@redhat.com
--
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


[PULL] http://www.linuxtv.org/hg/~hverkuil/v4l-dvb

2009-03-12 Thread Hans Verkuil
Hi Mauro,

Please pull from http://www.linuxtv.org/hg/~hverkuil/v4l-dvb for the 
following:

- doc: improve the v4l2-framework documentation.
- cx231xx: prevent building it on kernels  2.6.23.
- cx231xx: fix compile warning
- v4l2-common: add missing i2c_unregister_device.

Thanks,

Hans

diffstat:
 linux/Documentation/video4linux/v4l2-framework.txt |   12 --
 linux/drivers/media/video/cx231xx/cx231xx-cards.c  |2 -
 linux/drivers/media/video/v4l2-common.c|   25 
-
 v4l/versions.txt   |4 +++
 4 files changed, 35 insertions(+), 8 deletions(-)

-- 
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


[linux-dvb] getting started

2009-03-12 Thread Rolf Schumacher
I once had my TechnoTrend DVB-C driver working with linux, looking tv.
However, completely forgot how I managed that.

I think I was following the wiki

How to Obtain, Build and Install V4L-DVB Device Driver

I checked out the v4l-dvb sources using Mercurial.
However, a make failed immediately:


make -C /home/rsc/src/v4l-dvb/v4l
make[1]: Entering directory `/home/rsc/src/v4l-dvb/v4l'
Updating/Creating .config
Preparing to compile for kernel version 2.6.28
File not found: /lib/modules/2.6.28-7.slh.3-sidux-686/build/.config at
./scripts/make_kconfig.pl line 32, IN line 4.
make[1]: *** Keine Regel vorhanden, um das Target ».myconfig«,
  benötigt von »config-compat.h«, zu erstellen.  Schluss.
make[1]: Leaving directory `/home/rsc/src/v4l-dvb/v4l'
make: *** [all] Fehler 2
---

Am I on the right track?
If so, what is missing?

ngong

___
linux-dvb users mailing list
For V4L/DVB development, please use instead linux-media@vger.kernel.org
linux-...@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

--
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 1/1] siano: add high level SDIO interface driver for SMS based cards

2009-03-12 Thread Alexey Klimov
Hello, Uri

On Thu, 2009-03-12 at 06:52 -0700, Uri Shkolnik wrote:
 # HG changeset patch
 # User Uri Shkolnik u...@siano-ms.com
 # Date 1236865697 -7200
 # Node ID 7352ee1288f651d19d58c7bb479a98f070ad98e6
 # Parent  3392722cc5b687586c4d898b73050ab6e59bf401
 siano: add high level SDIO interface driver for SMS based cards
 
 From: Uri Shkolnik u...@siano-ms.com
 
 This patch provides SDIO interface driver for
 SMS (Siano Mobile Silicon) based devices.
 The patch includes SMS high level SDIO driver and
 requires patching the kernel SDIO stack, 
 those stack patches had been provided previously.
 
 I would like to thank Pierre Ossman, MMC maintainer,
 who wrote this driver.
 
 Priority: normal
 
 Signed-off-by: Pierre Ossman drz...@drzeus.cx
 Signed-off-by: Uri Shkolnik u...@siano-ms.com
 
 diff -r 3392722cc5b6 -r 7352ee1288f6 linux/drivers/media/dvb/siano/smssdio.c
 --- /dev/null Thu Jan 01 00:00:00 1970 +
 +++ b/linux/drivers/media/dvb/siano/smssdio.c Thu Mar 12 15:48:17 2009 +0200
 @@ -0,0 +1,356 @@
 +/*
 + *  smssdio.c - Siano 1xxx SDIO interface driver
 + *
 + *  Copyright 2008 Pierre Ossman

I'm sorry, but may be 2009 ?

 + *
 + * Based on code by Siano Mobile Silicon, Inc.,
 + * Copyright (C) 2006-2008, Uri Shkolnik
 + *
 + * 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.
 + *
 + *
 + * This hardware is a bit odd in that all transfers should be done
 + * to/from the SMSSDIO_DATA register, yet the increase address bit
 + * always needs to be set.
 + *
 + * Also, buffers from the card are always aligned to 128 byte
 + * boundaries.
 + */
 +
 +/*
 + * General cleanup notes:
 + *
 + * - only typedefs should be name *_t
 + *
 + * - use ERR_PTR and friends for smscore_register_device()
 + *
 + * - smscore_getbuffer should zero fields
 + *
 + * Fix stop command
 + */
 +
 +#include linux/moduleparam.h
 +#include linux/firmware.h
 +#include linux/delay.h
 +#include linux/mmc/card.h
 +#include linux/mmc/sdio_func.h
 +#include linux/mmc/sdio_ids.h
 +
 +#include smscoreapi.h
 +#include sms-cards.h
 +
 +/* Registers */
 +
 +#define SMSSDIO_DATA 0x00
 +#define SMSSDIO_INT  0x04
 +
 +static const struct sdio_device_id smssdio_ids[] = {
 + {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_STELLAR),
 +  .driver_data = SMS1XXX_BOARD_SIANO_STELLAR},
 + {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_NOVA_A0),
 +  .driver_data = SMS1XXX_BOARD_SIANO_NOVA_A},
 + {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_NOVA_B0),
 +  .driver_data = SMS1XXX_BOARD_SIANO_NOVA_B},
 + {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_VEGA_A0),
 +  .driver_data = SMS1XXX_BOARD_SIANO_VEGA},
 + {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_VENICE),
 +  .driver_data = SMS1XXX_BOARD_SIANO_VEGA},
 + { /* end: all zeroes */ },
 +};
 +
 +MODULE_DEVICE_TABLE(sdio, smssdio_ids);
 +
 +struct smssdio_device {
 + struct sdio_func *func;
 +
 + struct smscore_device_t *coredev;
 +
 + struct smscore_buffer_t *split_cb;
 +};
 +
 +/***/
 +/* Siano core callbacks*/
 +/***/
 +
 +static int smssdio_sendrequest(void *context, void *buffer, size_t size)
 +{
 + int ret;
 + struct smssdio_device *smsdev;
 +
 + smsdev = context;
 +
 + sdio_claim_host(smsdev-func);
 +
 + while (size = smsdev-func-cur_blksize) {
 + ret = sdio_write_blocks(smsdev-func, SMSSDIO_DATA, buffer, 1);
 + if (ret)
 + goto out;
 +
 + buffer += smsdev-func-cur_blksize;
 + size -= smsdev-func-cur_blksize;
 + }
 +
 + if (size) {
 + ret = sdio_write_bytes(smsdev-func, SMSSDIO_DATA,
 +buffer, size);
 + if (ret)
 + goto out;
 + }

Do you really need this check and goto ?
Without them, as i see, the algorithm will do the same.

 +
 +out:
 + sdio_release_host(smsdev-func);
 +
 + return ret;
 +}
 +
 +/***/
 +/* SDIO callbacks  */
 +/***/
 +
 +static void smssdio_interrupt(struct sdio_func *func)
 +{
 + int ret, isr;
 +
 + struct smssdio_device *smsdev;
 + struct smscore_buffer_t *cb;
 + struct SmsMsgHdr_ST *hdr;
 + size_t size;
 +
 + smsdev = sdio_get_drvdata(func);
 +
 + /*
 +  * The interrupt register has no defined meaning. It is just
 +  * a way of turning of the level triggered interrupt.
 +  */
 + isr = 

Re: [linux-dvb] getting started

2009-03-12 Thread Rolf Schumacher
thank you, Antti, Thomas

kernel-headers are installed.
Why does make try to read the wrong file?

My kernel is named 2.6.28-7.slh.4-sidux-686, not 2.6.28-7.slh.3-sidux-686

-
r...@rolf9:~/src/v4l-dvb$ make
make -C /home/rsc/src/v4l-dvb/v4l
make[1]: Entering directory `/home/rsc/src/v4l-dvb/v4l'
Updating/Creating .config
Preparing to compile for kernel version 2.6.28
File not found: /lib/modules/2.6.28-7.slh.3-sidux-686/build/.config at
./scripts/make_kconfig.pl line 32, IN line 4.
make[1]: *** Keine Regel vorhanden, um das Target ?.myconfig?,
benotigt von ?config-compat.h?, zu erstellen. Schluss.
make[1]: Leaving directory `/home/rsc/src/v4l-dvb/v4l'
make: *** [all] Fehler 2
r...@rolf9:~/src/v4l-dvb$
r...@rolf9:~/src/v4l-dvb$ ls -la
/lib/modules/2.6.28-7.slh.3-sidux-686/build/.config
ls: Zugriff auf /lib/modules/2.6.28-7.slh.3-sidux-686/build/.config
nicht moglich: Datei oder Verzeichnis nicht gefunden
r...@rolf9:~/src/v4l-dvb$ ls -la
/lib/modules/2.6.28-7.slh.4-sidux-686/build/.config
-rw-r--r-- 1 root root 95158 12. Mar 00:30
/lib/modules/2.6.28-7.slh.4-sidux-686/build/.config
r...@rolf9:~/src/v4l-dvb$ hg update
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
r...@rolf9:~/src/v4l-dvb$



Antti Palosaari wrote:
 Rolf Schumacher wrote:
   
 File not found: /lib/modules/2.6.28-7.slh.3-sidux-686/build/.config at
 ./scripts/make_kconfig.pl line 32, IN line 4.
 

 kernel-devel, kernel-headers, linux-devel or linux-headers package is 
 missing. Package name varies from distribution to distribution...


   
--
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


[Fwd: Re: [linux-dvb] getting started]

2009-03-12 Thread Rolf Schumacher
ok, adapted the value in v4l/.version

make is doing fine now

 Original Message 
Subject:Re: [linux-dvb] getting started
Date:   Thu, 12 Mar 2009 23:47:24 +0100
From:   Rolf Schumacher mailingl...@august.de
To: linux-media@vger.kernel.org
References: 49b982a5.7010...@august.de 49b98677.9030...@iki.fi



thank you, Antti, Thomas

kernel-headers are installed.
Why does make try to read the wrong file?

My kernel is named 2.6.28-7.slh.4-sidux-686, not 2.6.28-7.slh.3-sidux-686

-
r...@rolf9:~/src/v4l-dvb$ make
make -C /home/rsc/src/v4l-dvb/v4l
make[1]: Entering directory `/home/rsc/src/v4l-dvb/v4l'
Updating/Creating .config
Preparing to compile for kernel version 2.6.28
File not found: /lib/modules/2.6.28-7.slh.3-sidux-686/build/.config at
./scripts/make_kconfig.pl line 32, IN line 4.
make[1]: *** Keine Regel vorhanden, um das Target ?.myconfig?,
benotigt von ?config-compat.h?, zu erstellen. Schluss.
make[1]: Leaving directory `/home/rsc/src/v4l-dvb/v4l'
make: *** [all] Fehler 2
r...@rolf9:~/src/v4l-dvb$
r...@rolf9:~/src/v4l-dvb$ ls -la
/lib/modules/2.6.28-7.slh.3-sidux-686/build/.config
ls: Zugriff auf /lib/modules/2.6.28-7.slh.3-sidux-686/build/.config
nicht moglich: Datei oder Verzeichnis nicht gefunden
r...@rolf9:~/src/v4l-dvb$ ls -la
/lib/modules/2.6.28-7.slh.4-sidux-686/build/.config
-rw-r--r-- 1 root root 95158 12. Mar 00:30
/lib/modules/2.6.28-7.slh.4-sidux-686/build/.config
r...@rolf9:~/src/v4l-dvb$ hg update
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
r...@rolf9:~/src/v4l-dvb$



Antti Palosaari wrote:
 Rolf Schumacher wrote:
   
 File not found: /lib/modules/2.6.28-7.slh.3-sidux-686/build/.config at
 ./scripts/make_kconfig.pl line 32, IN line 4.
 

 kernel-devel, kernel-headers, linux-devel or linux-headers package is 
 missing. Package name varies from distribution to distribution...


   


--
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] Add support for ProVideo PV-183 to bttv

2009-03-12 Thread Alan McIvor
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.

This patch was generated against the V4L-DVB mercurial tree as of 12
March 2009.

Signed-off-by: Alan McIvor alan.mci...@reveal.co.nz

--- linux/drivers/media/video/bt8xx/bttv.h.orig 2009-03-13 10:12:09.0 
+1300
+++ linux/drivers/media/video/bt8xx/bttv.h  2009-03-13 10:18:46.0 
+1300
@@ -184,6 +184,7 @@
 #define BTTV_BOARD_IVCE8784   0x9c
 #define BTTV_BOARD_GEOVISION_GV800S   0x9d
 #define BTTV_BOARD_GEOVISION_GV800S_SL0x9e
+#define BTTV_BOARD_PV183   0x9f
 
 
 /* more card-specific defines */
--- linux/drivers/media/video/bt8xx/bttv-cards.c.orig   2009-03-13 
10:12:19.0 +1300
+++ linux/drivers/media/video/bt8xx/bttv-cards.c2009-03-13 
10:24:28.0 +1300
@@ -321,6 +321,16 @@ static struct CARD {
{ 0x763d800b, BTTV_BOARD_GEOVISION_GV800S_SL,   GeoVision GV-800(S) 
(slave) },
{ 0x763d800c, BTTV_BOARD_GEOVISION_GV800S_SL,   GeoVision GV-800(S) 
(slave) },
{ 0x763d800d, BTTV_BOARD_GEOVISION_GV800S_SL,   GeoVision GV-800(S) 
(slave) },
+
+{ 0x15401830, BTTV_BOARD_PV183, Provideo PV183-1 },
+{ 0x15401831, BTTV_BOARD_PV183, Provideo PV183-2 },
+{ 0x15401832, BTTV_BOARD_PV183, Provideo PV183-3 },
+{ 0x15401833, BTTV_BOARD_PV183, Provideo PV183-4 },
+{ 0x15401834, BTTV_BOARD_PV183, Provideo PV183-5 },
+{ 0x15401835, BTTV_BOARD_PV183, Provideo PV183-6 },
+{ 0x15401836, BTTV_BOARD_PV183, Provideo PV183-7 },
+{ 0x15401837, BTTV_BOARD_PV183, Provideo PV183-8 },
+   
{ 0, -1, NULL }
 };
 
@@ -2910,6 +2920,20 @@ struct tvcard bttv_tvcards[] = {
.no_tda9875 = 1,
.muxsel_hook= gv800s_muxsel,
},
+   [BTTV_BOARD_PV183] = {
+   .name   = ProVideo PV183, /* 0x9f */
+   .video_inputs   = 2,
+   /* .audio_inputs= 0, */
+   .svhs   = NO_SVHS,
+   .gpiomask   = 0,
+   .muxsel = MUXSEL(2, 3),
+   .gpiomux= { 0 },
+   .needs_tvaudio  = 0,
+   .no_msp34xx = 1,
+   .pll= PLL_28,
+   .tuner_type = TUNER_ABSENT,
+   .tuner_addr = ADDR_UNSET,
+   },
 };
 
 static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards);
--
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: Fwd: [stable] [PATCH] 2.6.27.y: fix NULL ptr deref in cx23885 video_open

2009-03-12 Thread Andy Walls
On Thu, 2009-03-12 at 16:24 -0400, Michael Krufky wrote:
 Can we have this merged into -stable?  Jarod Wilson sent this last
 month, but he left off the cc to sta...@kernel.org
 
 Signed-off-by: Michael Krufky mkru...@linuxtv.org

Mike,

A version of this is already in the v4l-dvb hg development repository:

hg log -vp --limit 1 linux/drivers/media/video/cx23885/cx23885-417.c
hg log -vp --limit 2 linux/drivers/media/video/cx23885/cx23885-video.c 

I helped Mark work through the solution: I coded some of it, he coded
some of it and he also tested it.

Regards,
Andy


 
 -- Forwarded message --
 From: Jarod Wilson ja...@redhat.com
 Date: Tue, Feb 24, 2009 at 6:00 PM
 Subject: [stable] [PATCH] 2.6.27.y: fix NULL ptr deref in cx23885 video_open
 To: linux-ker...@vger.kernel.org
 Cc: Mike Krufky mkru...@linuxtv.org
 
 
 From: Mark Jenks
 https://www.redhat.com/mailman/private/video4linux-list/2009-January/msg00041.html
 
 The Hauppauge WinTV HVR-1800 tv tuner card has both digital and analog
 abilities, both of which are supported by v4l/dvb under 2.6.27.y. The analog
 side also features a hardware mpeg2 encoder. The HVR-1250 tv tuner card
 has both digital and analog abilities, but analog isn't currently supported
 under any kernel. These cards both utilize the cx23885 driver, but with
 slightly different usage. When the code paths for each card is executed,
 they wind up poking a cx23885_devlist, which contains devices from both
 of the cards, and access attempts are made to portions of 'struct
 cx23885_dev' that aren't valid for that device. Simply add some extra
 checks before trying to access these structs.
 
 More gory details:
  http://article.gmane.org/gmane.linux.drivers.dvb/46630
 
 This was triggering on my own system at home w/both cards in it, and
 no longer happens with this patch included.
 
 Signed-off-by: Jarod Wilson ja...@redhat.com
 Reviewed-by: Michael Krufky mkru...@linuxtv.org
 
 ---
 
  drivers/media/video/cx23885/cx23885-417.c   |2 +-
  drivers/media/video/cx23885/cx23885-video.c |2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/media/video/cx23885/cx23885-417.c
 b/drivers/media/video/cx23885/cx23885-417.c
 index 7b0e8c0..19154b6 100644
 --- a/drivers/media/video/cx23885/cx23885-417.c
 +++ b/drivers/media/video/cx23885/cx23885-417.c
 @@ -1585,7 +1585,7 @@ static int mpeg_open(struct inode *inode, struct
 file *file)
 
list_for_each(list, cx23885_devlist) {
h = list_entry(list, struct cx23885_dev, devlist);
 -   if (h-v4l_device-minor == minor) {
 +   if (h-v4l_device  h-v4l_device-minor == minor) {
dev = h;
break;
}
 diff --git a/drivers/media/video/cx23885/cx23885-video.c
 b/drivers/media/video/cx23885/cx23885-video.c
 index 6047c78..a2b5a0c 100644
 --- a/drivers/media/video/cx23885/cx23885-video.c
 +++ b/drivers/media/video/cx23885/cx23885-video.c
 @@ -733,7 +733,7 @@ static int video_open(struct inode *inode, struct
 file *file)
 
list_for_each(list, cx23885_devlist) {
h = list_entry(list, struct cx23885_dev, devlist);
 -   if (h-video_dev-minor == minor) {
 +   if (h-video_dev  h-video_dev-minor == minor) {
dev  = h;
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
}
 
 
 --
 Jarod Wilson
 ja...@redhat.com
 --
 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
 

--
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: Fwd: [stable] [PATCH] 2.6.27.y: fix NULL ptr deref in cx23885 video_open

2009-03-12 Thread Michael Krufky

Andy Walls wrote:

On Thu, 2009-03-12 at 16:24 -0400, Michael Krufky wrote:
  

Can we have this merged into -stable?  Jarod Wilson sent this last
month, but he left off the cc to sta...@kernel.org

Signed-off-by: Michael Krufky mkru...@linuxtv.org



Mike,

A version of this is already in the v4l-dvb hg development repository:

hg log -vp --limit 1 linux/drivers/media/video/cx23885/cx23885-417.c
hg log -vp --limit 2 linux/drivers/media/video/cx23885/cx23885-video.c 


I helped Mark work through the solution: I coded some of it, he coded
some of it and he also tested it.

Regards,
Andy


I'm aware of that, Andy -- That's why I am sending this off to the 
-stable team for 2.6.27.y


Thanks  regards,

Mike
--
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


cx231xx review of i2c handling

2009-03-12 Thread Hans Verkuil
Hi Sri,

Here is a review of the i2c part of this driver, together with pointers on 
how to proceed to convert it to v4l2_device/v4l2_subdev.

Time permitting I hope to look at the v4l2 implementation in the driver as 
well over the weekend, but the i2c part is for me the most urgent issue at 
the moment as you've no doubt guessed by now :-)

Although I couldn't help noticing this typo:

cx231xx-cards.c:cx231xx_info(Board is Conexnat RDE 250\n);
cx231xx-cards.c:cx231xx_info(Board is Conexnat RDU 250\n);

:-)

Looking at cx231xx-i2c.c I see it has the following devices:

0x32: Geminit III
0x02: Acquarius
0xa0: eeprom
0x60: Colibri
0x8e: IR
0x80/0x88: Hammerhead

And it also uses an external tuner.

It is my understanding that these devices are integrated on the cx231xx and 
so are completely internal to it:

Geminit III, Acquarius, Colibri, Hammerhead.

Is the eeprom also internal, or is it external?

Why can Hammerhead be at two addresses? Since it is an integral device I'd 
expect that the address would be fixed. Or are there two Hammerheads? 
Looking at the source I'd say that it can only be at address 0x88.

A general note: please add a description in the cx231xx.h header or in 
another suitable place for each of these devices. The codenames themselves 
do not give much of an idea of what the device actually does.

I have 'decoded' that Hammerhead is the cx231xx version of the cx25843. You 
are loading the cx25840 module to handle this (good), but you also write 
directly to the i2c device from the cx231xx driver (bad). You have to make 
a choice here: either handle it completely from inside cx231xx, or add full 
support for it to the cx25840 module and call that.

The rule is that parent drivers of an i2c module should never attempt to set 
registers directly as that breaks reusability. In this case, suppose a 
change is made in cx25840 that overwrites a register you've set from 
without cx231xx. Now the cx231xx is broken, and that is because there is no 
way of knowing when you edit the cx25840 sources that it is used like that.

Whereas if all the code that reads and writes registers is fully within the 
cx25840 module, then whoever needs to modify that driver can see the whole 
picture.

It is much preferred to keep using cx25840 and just add the missing pieces 
to that driver, rather than moving all the code inside cx231xx.

Since the i2c addresses for the integral i2c devices are hardwired (I 
assume), I recommend making some simple inline functions like this:

static int inline colibri_read_byte(struct cx231xx *dev, int reg, u8 *byte)
{
return cx231xx_read_i2c_data(dev, Colibri_DEVICE_ADDRESS,
 reg, 2, byte, 1);
}

That will make the code much more readable.

A note on the cx231xx_usb_disconnect: this can be simplified without needing 
user counts and complicated code. Read the section on video_device cleanup 
in the v4l2-framework.txt. The release() callback is guaranteed to be 
called when the last user disappears, so you can do your cleanup there. 
This is a fairly recent change. Before this was implemented each USB driver 
had to do their own reference counting.

Anyway, none of the points above is really urgent. What is urgent is that 
the new i2c API should be used. The background for this is that currently 
you just load an i2c module (e.g. tuner or cx25840) and it magically probes 
the i2c bus and attaches itself when it finds a suitable i2c device. The 
problem with that is that not all i2c devices can be uniquely identified, 
so that can lead to misdetections and that can cause lots of problems, 
including cases of corrupted eeproms.

A new i2c API was created for this and at the moment both old and new 
co-exist. However, the intention is to remove support for the old i2c API 
from the i2c core in 2.6.30.

Rather than just switching to the new API I've taken the opportunity to 
integrate it into a bigger v4l2 framework, based around new v4l2_device and 
v4l2_subdev structs. Currently the sole purpose is to aid in the migration 
to the new i2c API, basically hiding all the details from the driver. A 
major advantage of v4l2_subdev is also that it is not limited to i2c 
devices, instead you can model just about any type of device around it. 
This is particularly useful for highly integrated devices and it might be 
interesting to consider their use for the integrated devices that cx231xx 
has.

Please read v4l2-framework.txt. Let me know if something is not clear as 
that might indicate that I need to improve it.

This driver luckily doesn't need a lot of work. The first step is to 
introduce struct v4l2_device. Just stick it in struct cx231xx, register it 
in cx231xx_usb_probe and unregister it when cleaning up.

One thing you need to be aware of is that you should set i2c_set_adapdata to 
the v4l2_device pointer instead of the cx231xx_i2c bus.

The second step is to load the i2c modules through v4l2_i2c_new_subdev or 

Re: disable v4l2-ctl logging --log-status in /var/log/messages

2009-03-12 Thread Andy Walls
On Thu, 2009-03-12 at 10:49 +0100, Gregor Fuis wrote:
 On Thu, Mar 12, 2009 at 10:28 AM, Hans Verkuil hverk...@xs4all.nl wrote:
 
  Hello,
 
  Is it possible to disable v4l2-ctl aplication logging into
  /var/log/messages.
  I am using it to control and monitor my PVR 150 cards and every time I
  run v4l2-ctl -d /dev/video0 --log-status all output is logged into
  /var/log/messages and some other linux log files.
 
  All --log-status does is to tell the driver to show it's status in the
  kernel log for debugging purposes. It cannot and should not be relied upon
  for monitoring/controlling a driver.
 
  What do you need it for anyway?
 
 I am just monitoring if signal is present on tuner, and what signal
 format is detected.
 These two lines:
 cx25840 1-0044: Video signal:  not present
 cx25840 1-0044: Detected format:   PAL-Nc
 I run this every minute and it is really annoying to have all this in
 my system logs.
 Is it possible to modify v4l2-ctl source to disable system logging?

$ v4l2-ctl -d /dev/video0 -T

which calls the VIDIOC_G_TUNER ioctl(), can be used to tell you if a
signal is present:

Tuner:
Name : cx18 TV Tuner
Capabilities : 62.5 kHz multi-standard stereo lang1 lang2 
Frequency range  : 44.0 MHz - 958.0 MHz
Signal strength/AFC  : 0%/-187500
Current audio mode   : lang1
Available subchannels: mono 

Signal strength will be 0% or 100% - both the cx18 driver and the
cx25840 driver behave the same in this regard.

AFAICT, other than --log-status (the VIDIOC_LOG_STATUS ioctl()) which
always writes to the system logs, there is no way for a non-root user to
read out the Video standard detected by the CX25843 hardware.  That
would require a change to the driver(s) and maybe an API change (I'm not
sure).

Regards,
Andy




 
 Regards,
 Gregor

--
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: disable v4l2-ctl logging --log-status in /var/log/messages

2009-03-12 Thread Hans Verkuil
On Friday 13 March 2009 00:34:43 Andy Walls wrote:
 On Thu, 2009-03-12 at 10:49 +0100, Gregor Fuis wrote:
  On Thu, Mar 12, 2009 at 10:28 AM, Hans Verkuil hverk...@xs4all.nl 
wrote:
   Hello,
  
   Is it possible to disable v4l2-ctl aplication logging into
   /var/log/messages.
   I am using it to control and monitor my PVR 150 cards and every time
   I run v4l2-ctl -d /dev/video0 --log-status all output is logged into
   /var/log/messages and some other linux log files.
  
   All --log-status does is to tell the driver to show it's status in
   the kernel log for debugging purposes. It cannot and should not be
   relied upon for monitoring/controlling a driver.
  
   What do you need it for anyway?
 
  I am just monitoring if signal is present on tuner, and what signal
  format is detected.
  These two lines:
  cx25840 1-0044: Video signal:  not present
  cx25840 1-0044: Detected format:   PAL-Nc
  I run this every minute and it is really annoying to have all this in
  my system logs.
  Is it possible to modify v4l2-ctl source to disable system logging?

 $ v4l2-ctl -d /dev/video0 -T

 which calls the VIDIOC_G_TUNER ioctl(), can be used to tell you if a
 signal is present:

 Tuner:
   Name : cx18 TV Tuner
   Capabilities : 62.5 kHz multi-standard stereo lang1 lang2
   Frequency range  : 44.0 MHz - 958.0 MHz
   Signal strength/AFC  : 0%/-187500
   Current audio mode   : lang1
   Available subchannels: mono

 Signal strength will be 0% or 100% - both the cx18 driver and the
 cx25840 driver behave the same in this regard.

 AFAICT, other than --log-status (the VIDIOC_LOG_STATUS ioctl()) which
 always writes to the system logs, there is no way for a non-root user to
 read out the Video standard detected by the CX25843 hardware.  That
 would require a change to the driver(s) and maybe an API change (I'm not
 sure).

There is a VIDIOC_QUERYSTD ioctl. However, neither ivtv nor cx25840 supports 
that. I've always thought that that would be a useful addition, but never 
got around to implementing it. You are the first one for whom such an ioctl 
would actually be useful, Gregor :-)

It should be fairly easy to add this, but I really don't have the time for 
this I'm afraid.

Regards,

Hans

-- 
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


Re: Fwd: [stable] [PATCH] 2.6.27.y: fix NULL ptr deref in cx23885 video_open

2009-03-12 Thread Andy Walls
On Thu, 2009-03-12 at 19:18 -0400, Michael Krufky wrote:
 Andy Walls wrote:
  On Thu, 2009-03-12 at 16:24 -0400, Michael Krufky wrote:

  Can we have this merged into -stable?  Jarod Wilson sent this last
  month, but he left off the cc to sta...@kernel.org
 
  Signed-off-by: Michael Krufky mkru...@linuxtv.org
  
 
  Mike,
 
  A version of this is already in the v4l-dvb hg development repository:
 
  hg log -vp --limit 1 linux/drivers/media/video/cx23885/cx23885-417.c
  hg log -vp --limit 2 linux/drivers/media/video/cx23885/cx23885-video.c 
 
  I helped Mark work through the solution: I coded some of it, he coded
  some of it and he also tested it.
 
  Regards,
  Andy
 
 I'm aware of that, Andy -- That's why I am sending this off to the 
 -stable team for 2.6.27.y

Ooops. Sorry for my cluelessness. :)

Regards,
Andy


 Thanks  regards,
 
 Mike
 --
 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
 

--
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: [PULL] http://linuxtv.org/hg/~dheitmueller/hvr950q-analog2

2009-03-12 Thread Mauro Carvalho Chehab
On Thu, 12 Mar 2009 10:11:12 -0400
Devin Heitmueller devin.heitmuel...@gmail.com wrote:

 On Thu, Mar 12, 2009 at 4:54 AM, Mauro Carvalho Chehab
 mche...@infradead.org wrote:
  Hi Devin,
 
  There's a bug on your patch series: see this:
 
  Those are the locations of au8522 files at Kernel's tree:
         drivers/media/dvb/frontends/au8522.h
         drivers/media/dvb/frontends/au8522_dig.c
         drivers/media/dvb/frontends/au8522_priv.h
         drivers/media/video/au8522_decoder.c
 
  And those are the Makefile rules for au8522.h on 
  drivers/media/dvb/frontends/Makefile:
 
  au8522-objs = au8522_dig.o au8522_decoder.o
  obj-$(CONFIG_DVB_AU8522) += au8522.o
 
  When you're compiling the out-of-tree version, everything works OK, but, for
  in-tree compilation, au8522_decoder won't be compiled, since the file will 
  be
  in the wrong dir.
 
  If I'm understanding well, this chip has two functions: it is a dvb frontend
  and an analog video/audio demodulator, right?
 
  One solution would be to have all those files in the same directory. 
  However,
  au8522_decoder doesn't fit well on dvb/frontends. It is also not a tuner,
  otherwise common/tuners would be another better place.
 
  Another alternative would be to create two kconfig rules (and two separate
  modules), being one for au8522_decoder and another for the frontend, since 
  they
  are, in fact, two different things.
 
  I suspect,however, that compiling just one or another would break 
  compilation.
  So, we need to create some sort of rules that will warrant that both modules
  will be compiled at the same time. This is not an easy task, since we cannot
  add depends on, since frontends are compiled by using select. So, we 
  will
  need to re-design the Kconfig rules to use depends on instead of select 
  (well,
  this is something good, anyway, since the usage of select is something 
  that
  should be avoided, according with Kbuild docs).
 
  I'll keep reviewing the patch series. Maybe I'll merge it, but, in this 
  case,
  I'll need to blacklist the module until we found a solution, or find a way 
  to
  allow my -git trees to compile.
 
  Cheers,
  Mauro
 
 
 Hello Mauro,
 
 Both files are required, as they share certain functions (such as the
 i2c transfer functions).  Also, they share a common state mechanism,
 which is why both files end up in the same .ko file.
 
 This case is a little unique since it is the first case where we have
 a single chip that acts as a digital demod, an analog demod, and an
 analog video/audio decoder.
 
 I can certainly put the au8522_decoder.c into dvb/frontends even
 though this probably violates some rule about analog stuff being in
 the DVB section of the tree.  Would that resolve your concern?
 
 I really don't want to make redesigning the KConfig rules a
 prerequisite to getting this rather large patch series merged.  I
 would suggest we do what is required to get the code in (such as
 moving the _decoder.c to frontends), and then we can tune the solution
 to be something more optimal in terms of how the tree is structured.

I don't like much the idea of moving decoder to frontends, but we may do this
as an intermediate step. To make things easier for future changes, IMO, it
would be better to create a separate dir for this driver, inside dvb/frontends.
This will help to move it elsewhere.

Cheers,
Mauro.


Cheers,
Mauro
--
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] Add support for ProVideo PV-183 to bttv

2009-03-12 Thread Trent Piepho
On Fri, 13 Mar 2009, Alan McIvor wrote:
 +
 +{ 0x15401830, BTTV_BOARD_PV183, Provideo PV183-1 },
 +{ 0x15401831, BTTV_BOARD_PV183, Provideo PV183-2 },
 +{ 0x15401832, BTTV_BOARD_PV183, Provideo PV183-3 },
 +{ 0x15401833, BTTV_BOARD_PV183, Provideo PV183-4 },
 +{ 0x15401834, BTTV_BOARD_PV183, Provideo PV183-5 },
 +{ 0x15401835, BTTV_BOARD_PV183, Provideo PV183-6 },
 +{ 0x15401836, BTTV_BOARD_PV183, Provideo PV183-7 },
 +{ 0x15401837, BTTV_BOARD_PV183, Provideo PV183-8 },
 +
   { 0, -1, NULL }
  };

Looks like you used spaces here instead of tabs.  If you run make commit
from the v4l-dvb tree it will fix these things.
--
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 1/1] siano: add high level SDIO interface driver for SMS based cards

2009-03-12 Thread Uri Shkolnik

Hi Alexey,


I numbered your comments and append all answers to the end of this email.


--- On Fri, 3/13/09, Alexey Klimov klimov.li...@gmail.com wrote:

 From: Alexey Klimov klimov.li...@gmail.com
 Subject: Re: [PATCH 1/1] siano: add high level SDIO interface driver for SMS 
 based cards
 To: Uri Shkolnik uri...@yahoo.com
 Cc: Mauro Carvalho Chehab mche...@infradead.org, Michael Krufky 
 mkru...@linuxtv.org, linux-media@vger.kernel.org
 Date: Friday, March 13, 2009, 12:46 AM
 Hello, Uri
 
 On Thu, 2009-03-12 at 06:52 -0700, Uri Shkolnik wrote:
  # HG changeset patch
  # User Uri Shkolnik u...@siano-ms.com
  # Date 1236865697 -7200
  # Node ID 7352ee1288f651d19d58c7bb479a98f070ad98e6
  # Parent 
 3392722cc5b687586c4d898b73050ab6e59bf401
  siano: add high level SDIO interface driver for SMS
 based cards
  
  From: Uri Shkolnik u...@siano-ms.com
  
  This patch provides SDIO interface driver for
  SMS (Siano Mobile Silicon) based devices.
  The patch includes SMS high level SDIO driver and
  requires patching the kernel SDIO stack, 
  those stack patches had been provided previously.
  
  I would like to thank Pierre Ossman, MMC maintainer,
  who wrote this driver.
  
  Priority: normal
  
  Signed-off-by: Pierre Ossman drz...@drzeus.cx
  Signed-off-by: Uri Shkolnik u...@siano-ms.com
  
  diff -r 3392722cc5b6 -r 7352ee1288f6
 linux/drivers/media/dvb/siano/smssdio.c
  --- /dev/null    Thu Jan 01 00:00:00
 1970 +
  +++
 b/linux/drivers/media/dvb/siano/smssdio.c   
 Thu Mar 12 15:48:17 2009 +0200
  @@ -0,0 +1,356 @@
  +/*
  + *  smssdio.c - Siano 1xxx SDIO interface
 driver
  + *
  + *  Copyright 2008 Pierre Ossman
 
 I'm sorry, but may be 2009 ?
[ #1 ]

 
  + *
  + * Based on code by Siano Mobile Silicon, Inc.,
  + * Copyright (C) 2006-2008, Uri Shkolnik
  + *
  + * 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.
  + *
  + *
  + * This hardware is a bit odd in that all transfers
 should be done
  + * to/from the SMSSDIO_DATA register, yet the
 increase address bit
  + * always needs to be set.
  + *
  + * Also, buffers from the card are always aligned to
 128 byte
  + * boundaries.
  + */
  +
  +/*
  + * General cleanup notes:
  + *
  + * - only typedefs should be name *_t
  + *
  + * - use ERR_PTR and friends for
 smscore_register_device()
  + *
  + * - smscore_getbuffer should zero fields
  + *
  + * Fix stop command
  + */
  +
  +#include linux/moduleparam.h
  +#include linux/firmware.h
  +#include linux/delay.h
  +#include linux/mmc/card.h
  +#include linux/mmc/sdio_func.h
  +#include linux/mmc/sdio_ids.h
  +
  +#include smscoreapi.h
  +#include sms-cards.h
  +
  +/* Registers */
  +
  +#define SMSSDIO_DATA   
     0x00
  +#define SMSSDIO_INT   
     0x04
  +
  +static const struct sdio_device_id smssdio_ids[] = {
  +    {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO,
 SDIO_DEVICE_ID_SIANO_STELLAR),
  + .driver_data =
 SMS1XXX_BOARD_SIANO_STELLAR},
  +    {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO,
 SDIO_DEVICE_ID_SIANO_NOVA_A0),
  + .driver_data =
 SMS1XXX_BOARD_SIANO_NOVA_A},
  +    {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO,
 SDIO_DEVICE_ID_SIANO_NOVA_B0),
  + .driver_data =
 SMS1XXX_BOARD_SIANO_NOVA_B},
  +    {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO,
 SDIO_DEVICE_ID_SIANO_VEGA_A0),
  + .driver_data =
 SMS1XXX_BOARD_SIANO_VEGA},
  +    {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO,
 SDIO_DEVICE_ID_SIANO_VENICE),
  + .driver_data =
 SMS1XXX_BOARD_SIANO_VEGA},
  +    { /* end: all zeroes */ },
  +};
  +
  +MODULE_DEVICE_TABLE(sdio, smssdio_ids);
  +
  +struct smssdio_device {
  +    struct sdio_func *func;
  +
  +    struct smscore_device_t *coredev;
  +
  +    struct smscore_buffer_t
 *split_cb;
  +};
  +
 
 +/***/
  +/* Siano core callbacks       
                
                
     */
 
 +/***/
  +
  +static int smssdio_sendrequest(void *context, void
 *buffer, size_t size)
  +{
  +    int ret;
  +    struct smssdio_device *smsdev;
  +
  +    smsdev = context;
  +
  +    sdio_claim_host(smsdev-func);
  +
  +    while (size =
 smsdev-func-cur_blksize) {
  +        ret =
 sdio_write_blocks(smsdev-func, SMSSDIO_DATA, buffer,
 1);
  +        if (ret)
  +       
     goto out;
  +
  +        buffer +=
 smsdev-func-cur_blksize;
  +        size -=
 smsdev-func-cur_blksize;
  +    }
  +
  +    if (size) {
  +        ret =
 sdio_write_bytes(smsdev-func, SMSSDIO_DATA,
  +       
            
    buffer, size);
  +        if (ret)
  +       
     goto out;
  +    }
 
 Do you really need this check and goto ?
 Without them, as i see, the algorithm will do the same.
 

[ #2 ]

  +
  +out:
  +   
 sdio_release_host(smsdev-func);
  +
  +    return ret;
  +}
  +
 
 

Re: [PULL] http://linuxtv.org/hg/~dheitmueller/hvr950q-analog2

2009-03-12 Thread Mauro Carvalho Chehab
On Thu, 12 Mar 2009 11:26:15 -0400
Devin Heitmueller devin.heitmuel...@gmail.com wrote:

 On Thu, Mar 12, 2009 at 11:06 AM, Mauro Carvalho Chehab
 mche...@infradead.org wrote:
  Yeah, printing NULL is bad and I can obviously fix that.  The real
  reason for the addition of the UNDEFINED entry is I use that to
  detect if there are *any* analog inputs defined, which dictates
  whether the analog subsystem is initialized.  Because the .input
  section is a member of the au0828_dev struct, and not a pointer, I
  needed some way to tell if it was populated with anything.
 
  if you attribute it to -1, the userspace calls will never set it to 
  undefined.
  You should take some care to avoid reading outside some array though.
 
 The problem is that I check for UNDEFINED so that the .input section
 of the au0828 board definition can be left uninitialized.  Otherwise,
 I would have to add something like num_inputs to the board
 definition and worry about the value matching the actual number of
 inputs defined.

num_inputs is a really bad thing. Maybe you can just test if input type is 
UNDEFINED and return -EINVAL.

  I looked at the list and all of these issues are easy to fix, and I
  will do that tonight.
 
  Ok.
 
  Please let me know if you have any other concerns (and what you want
  me to do regarding the VBI stuff), since I would like to avoid having
  do redo the tree again.
 
  No, just the above. Please, instead of redo the tree, just add some patches
  fixing those issues. This allows me to review faster your series.
 
 Do you mean the checkpatch fixes should be done as a separate patch
 too?  I assumed you wanted me to fix the original patch to pass make
 checkpatch.  Is there a way to do the equivalent of make checkpatch
 against particular hg revisions or source files?  I'm just trying to
 understand the best way to ensure that all of the issues actually get
 fixed.

There are two ways:

1) v4l/check.pl file
This accepts just one file each time;

2) hg diff -r the last review before your patch series file
   v4l/check.pl file

The check.pl script is just a wrapper for the checkpatch.pl. Its output is
equal to an standard C compiler. So, you can use it on a C error parser for
some gui. Also, the wrapper removes some checks that are ok (the ones for
the lines that adds kernel version checks - since this will be removed anyway
by the submit script).

Cheers,
Mauro
--
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: [stable] Fwd: [PATCH] 2.6.27.y: fix NULL ptr deref in cx23885 video_open

2009-03-12 Thread Greg KH
On Thu, Mar 12, 2009 at 04:24:38PM -0400, Michael Krufky wrote:
 Can we have this merged into -stable?  Jarod Wilson sent this last
 month, but he left off the cc to sta...@kernel.org

What is the git commit id of the patch in Linus's tree that matches up
with this?

thanks,

greg k-h
--
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


kernel oops in dvb_net

2009-03-12 Thread Ang Way Chuang

Hi linux-tver,
Not sure whether this is the right mailing list or not. I've
encountered a kernel oops in dvb_net. My receiver card is HVR-4000 Lite.
I'm running a rawhide kernel on Fedora 10. Attached is the syslog just
before when nuts. I tested with rawhide kernel version 
2.6.29-0.124.rc5.fc10.i586 and vanilla kernel 2.6.28.7.


I'm using the receiver card for ULE decapsulation. Should you need more
information, please drop me a mail. Attached are the kernel oops message 
of the 2 kernels just before the system freeze.


Thanks.

Regards,
Ang Way Chuang

Mar  9 16:18:44 localhost kernel: dvb0_0: no ts feed to stop
Mar  9 16:18:44 localhost kernel: dvb_net: removed network interface dvb0_0
Mar  9 16:18:44 localhost kernel: 1802201963: Expected 1802201963 more SNDU 
bytes, but got PUSI (pf 0, ts_remain 183).  Flushing incomplete payload.
Mar  9 16:18:44 localhost kernel: BUG: unable to handle kernel paging request 
at 6b6b6c1f
Mar  9 16:18:44 localhost kernel: IP: [c065c31f] kfree_skb+0x9/0x32
Mar  9 16:18:44 localhost kernel: *pde =  
Mar  9 16:18:44 localhost kernel: Oops:  [#1] SMP 
Mar  9 16:18:44 localhost kernel: last sysfs file: 
/sys/devices/virtual/net/dvb0_0/flags
Mar  9 16:18:44 localhost kernel: Modules linked in: sco bridge stp llc bnep 
l2cap bluetooth ip6t_REJECT nf_conntrack_ipv6 ip6table_filter ip6_tables ipv6 
cpufreq_ondemand acpi_cpufreq dm_multipath uinput isl6421 cx24116 
snd_hda_codec_realtek cx88_dvb cx88_vp3054_i2c snd_hda_intel videobuf_dvb 
dvb_core tuner cx8802 cx8800 cx88_alsa snd_hda_codec snd_hwdep cx88xx 
snd_seq_dummy snd_seq_oss ir_common tveeprom snd_seq_midi_event v4l2_common 
snd_seq videodev snd_seq_device snd_pcm_oss snd_mixer_oss snd_pcm v4l1_compat 
videobuf_dma_sg videobuf_core iTCO_wdt btcx_risc iTCO_vendor_support ppdev 
floppy pcspkr snd_timer snd i2c_i801 r8169 soundcore parport_pc via_velocity 
parport snd_page_alloc mii crc_ccitt ata_generic pata_acpi i915 drm 
i2c_algo_bit i2c_core [last unloaded: microcode]
Mar  9 16:18:44 localhost kernel:
Mar  9 16:18:44 localhost kernel: Pid: 4024, comm: cx88[0] dvb Tainted: G   
 W  (2.6.29-0.124.rc5.fc10.i586 #1) Prime Series
Mar  9 16:18:44 localhost kernel: EIP: 0060:[c065c31f] EFLAGS: 00010002 CPU: 1
Mar  9 16:18:44 localhost kernel: EIP is at kfree_skb+0x9/0x32
Mar  9 16:18:44 localhost kernel: EAX: 6b6b6b6b EBX: fa4ca301 ECX: 6b6b6b6b 
EDX: 01a2c000
Mar  9 16:18:44 localhost kernel: ESI: f4d415e0 EDI: f4d41060 EBP: f4e09ec4 
ESP: f4e09ec4
Mar  9 16:18:44 localhost kernel: DS: 007b ES: 007b FS: 00d8 GS:  SS: 0068
Mar  9 16:18:44 localhost kernel: Process cx88[0] dvb (pid: 4024, ti=f4e09000 
task=f4f029e0 task.ti=f4e09000)
Mar  9 16:18:44 localhost kernel: Stack:
Mar  9 16:18:44 localhost kernel: f4e09f40 f81939fd f81973d1 6b6b6b6b 6b6b6b6b 
 00b7 f4c0d3c0
Mar  9 16:18:44 localhost kernel: f4d415e0 fa4ca318 f4d41060 b7a5b100 fa4ca31d 
fa4ca3d4 f4d411c4 f4d4162c
Mar  9 16:18:44 localhost kernel: b4b6ba84 0be6 f4e09f20  f4d022a4 
f4d022a4 f4d02294 0293
Mar  9 16:18:44 localhost kernel: Call Trace:
Mar  9 16:18:44 localhost kernel: [f81939fd] ? 
dvb_net_ts_callback+0x340/0xa57 [dvb_core]
Mar  9 16:18:44 localhost kernel: [f818ce97] ? 
dvb_dmx_swfilter_packet+0x122/0x300 [dvb_core]
Mar  9 16:18:44 localhost kernel: [c06e66b2] ? _spin_lock_irqsave+0x63/0x6d
Mar  9 16:18:44 localhost kernel: [f818e073] ? dvb_dmx_swfilter+0xce/0x10d 
[dvb_core]
Mar  9 16:18:44 localhost kernel: [f80e25f2] ? videobuf_dvb_thread+0xad/0x12f 
[videobuf_dvb]
Mar  9 16:18:44 localhost kernel: [f80e2545] ? videobuf_dvb_thread+0x0/0x12f 
[videobuf_dvb]
Mar  9 16:18:44 localhost kernel: [c043fe95] ? kthread+0x3b/0x61
Mar  9 16:18:44 localhost kernel: [c043fe5a] ? kthread+0x0/0x61
Mar  9 16:18:44 localhost kernel: [c04046f7] ? kernel_thread_helper+0x7/0x10
Mar  9 16:18:44 localhost kernel: Code: 00 00 88 4b 65 f0 ff 0a 0f 94 c0 84 c0 
74 10 8d 93 48 ff ff ff a1 34 37 8b c0 e8 1f 44 e4 ff 5b 5d c3 55 85 c0 89 e5 
89 c1 74 27 8b 80 b4 00 00 00 48 75 07 0f ae e8 89 f6 eb 10 8d 81 b4 00 00 
Mar  9 16:18:44 localhost kernel: EIP: [c065c31f] kfree_skb+0x9/0x32 SS:ESP 
0068:f4e09ec4
Mar  9 16:18:44 localhost kernel: ---[ end trace 265db78d6888b949 ]---
Mar  9 16:18:44 localhost kernel: 
=
Mar  9 16:18:44 localhost kernel: BUG kmalloc-2048 (Tainted: G  D W ): 
Poison overwritten
Mar  9 16:18:44 localhost kernel: 
-
Mar  9 16:18:44 localhost kernel:
Mar  9 16:18:44 localhost kernel: INFO: 0xf4d410c0-0xf4d416bc. First byte 0x6c 
instead of 0x6b
Mar  9 16:18:44 localhost kernel: INFO: Allocated in alloc_netdev_mq+0x3d/0x11c 
age=1499438 cpu=1 pid=3815
Mar  9 16:18:44 localhost kernel: INFO: Freed in netdev_release+0x2f/0x32 
age=126 cpu=1 pid=4277
Mar  9 16:18:44 localhost kernel: INFO: Slab 0xc1f66b00 objects=15 used=0 
fp=0xf4d4 

Re: [stable] Fwd: [PATCH] 2.6.27.y: fix NULL ptr deref in cx23885 video_open

2009-03-12 Thread Jarod Wilson

Greg KH wrote:

On Thu, Mar 12, 2009 at 04:24:38PM -0400, Michael Krufky wrote:

Can we have this merged into -stable?  Jarod Wilson sent this last
month, but he left off the cc to sta...@kernel.org


What is the git commit id of the patch in Linus's tree that matches up
with this?

thanks,

greg k-h



Now that I look closer, seems there's an even more complete patch 
already in linus' tree, commit id:


cd8f894eacf13996d920fdd2aef1afc55156b191

Shoulda just forwarded that along, but I was under the impression that 
area of code had changed significantly in 2.6.28 and the patch was no 
longer applicable. Maybe that was the v4l/dvb hg tree though... So I'd 
just grab that, and add:


Signed-off-by: Jarod Wilson ja...@redhat.com


--jarod
--
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: [stable] Fwd: [PATCH] 2.6.27.y: fix NULL ptr deref in cx23885 video_open

2009-03-12 Thread Greg KH
On Thu, Mar 12, 2009 at 11:00:11PM -0400, Jarod Wilson wrote:
 Greg KH wrote:
 On Thu, Mar 12, 2009 at 04:24:38PM -0400, Michael Krufky wrote:
 Can we have this merged into -stable?  Jarod Wilson sent this last
 month, but he left off the cc to sta...@kernel.org
 What is the git commit id of the patch in Linus's tree that matches up
 with this?
 thanks,
 greg k-h


 Now that I look closer, seems there's an even more complete patch already 
 in linus' tree, commit id:

 cd8f894eacf13996d920fdd2aef1afc55156b191

 Shoulda just forwarded that along, but I was under the impression that area 
 of code had changed significantly in 2.6.28 and the patch was no longer 
 applicable. Maybe that was the v4l/dvb hg tree though... So I'd just grab 
 that, and add:

 Signed-off-by: Jarod Wilson ja...@redhat.com

Ok, will do that.

thanks,

greg k-h
--
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: The right way to interpret the content of SNR, signal strength and BER from HVR 4000 Lite

2009-03-12 Thread Ang Way Chuang

VDR User wrote:

On Thu, Mar 12, 2009 at 6:53 PM, Ang Way Chuang wc...@nav6.org wrote:

Hi all,
   I've looked through the mailing list and there seems to be no
standard
way to interpret to content of SNR, signal strength and BER returned
from the DVB API. So, I wonder if someone knows how to interpret these
values at least for HVR 4000 Lite? Thanks.


I've seen talk about converting everything to report SNR/STR in dB
which is a great idea if it ever happens.  I know a lot of guys not on
the mailing list who've been waiting for that.


Yes, please :)


--
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



--
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