Re: [PATCH/RFC 7/9 v2] v4l: add an image-bus API for configuring v4l2 subdev pixel and frame formats

2009-11-12 Thread Guennadi Liakhovetski
Hi Hans

Thanks for the review

On Wed, 11 Nov 2009, Hans Verkuil wrote:

 Hi Guennadi,
 
 OK, I've looked at this again. See my comments below.
 
 On Friday 30 October 2009 15:01:27 Guennadi Liakhovetski wrote:
  Video subdevices, like cameras, decoders, connect to video bridges over
  specialised busses. Data is being transferred over these busses in various
  formats, which only loosely correspond to fourcc codes, describing how video
  data is stored in RAM. This is not a one-to-one correspondence, therefore we
  cannot use fourcc codes to configure subdevice output data formats. This 
  patch
  adds codes for several such on-the-bus formats and an API, similar to the
  familiar .s_fmt(), .g_fmt(), .try_fmt(), .enum_fmt() API for configuring 
  those
  codes. After all users of the old API in struct v4l2_subdev_video_ops are
  converted, the API will be removed.
  
  Signed-off-by: Guennadi Liakhovetski g.liakhovet...@gmx.de
  ---
   drivers/media/video/Makefile|2 +-
   drivers/media/video/v4l2-imagebus.c |  218 
  +++
   include/media/v4l2-imagebus.h   |   84 ++
   include/media/v4l2-subdev.h |   10 ++-
   4 files changed, 312 insertions(+), 2 deletions(-)
   create mode 100644 drivers/media/video/v4l2-imagebus.c
   create mode 100644 include/media/v4l2-imagebus.h
  
  diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
  index 7a2dcc3..62d8907 100644
  --- a/drivers/media/video/Makefile
  +++ b/drivers/media/video/Makefile
  @@ -10,7 +10,7 @@ stkwebcam-objs:=  stk-webcam.o stk-sensor.o
   
   omap2cam-objs  :=  omap24xxcam.o omap24xxcam-dma.o
   
  -videodev-objs  :=  v4l2-dev.o v4l2-ioctl.o v4l2-device.o
  +videodev-objs  :=  v4l2-dev.o v4l2-ioctl.o v4l2-device.o 
  v4l2-imagebus.o
   
   # V4L2 core modules
   
  diff --git a/drivers/media/video/v4l2-imagebus.c 
  b/drivers/media/video/v4l2-imagebus.c
  new file mode 100644
  index 000..e0a3a83
  --- /dev/null
  +++ b/drivers/media/video/v4l2-imagebus.c
  @@ -0,0 +1,218 @@
  +/*
  + * Image Bus API
  + *
  + * Copyright (C) 2009, Guennadi Liakhovetski g.liakhovet...@gmx.de
  + *
  + * This program is free software; you can redistribute it and/or modify
  + * it under the terms of the GNU General Public License version 2 as
  + * published by the Free Software Foundation.
  + */
  +
  +#include linux/kernel.h
  +#include linux/module.h
  +
  +#include media/v4l2-device.h
  +#include media/v4l2-imagebus.h
  +
  +static const struct v4l2_imgbus_pixelfmt imgbus_fmt[] = {
  +   [V4L2_IMGBUS_FMT_YUYV] = {
  +   .fourcc = V4L2_PIX_FMT_YUYV,
  +   .colorspace = V4L2_COLORSPACE_JPEG,
  +   .name   = YUYV,
  +   .bits_per_sample= 8,
  +   .packing= V4L2_IMGBUS_PACKING_2X8_PADHI,
  +   .order  = V4L2_IMGBUS_ORDER_LE,
  +   }, [V4L2_IMGBUS_FMT_YVYU] = {
  +   .fourcc = V4L2_PIX_FMT_YVYU,
  +   .colorspace = V4L2_COLORSPACE_JPEG,
  +   .name   = YVYU,
  +   .bits_per_sample= 8,
  +   .packing= V4L2_IMGBUS_PACKING_2X8_PADHI,
  +   .order  = V4L2_IMGBUS_ORDER_LE,
  +   }, [V4L2_IMGBUS_FMT_UYVY] = {
  +   .fourcc = V4L2_PIX_FMT_UYVY,
  +   .colorspace = V4L2_COLORSPACE_JPEG,
  +   .name   = UYVY,
  +   .bits_per_sample= 8,
  +   .packing= V4L2_IMGBUS_PACKING_2X8_PADHI,
  +   .order  = V4L2_IMGBUS_ORDER_LE,
  +   }, [V4L2_IMGBUS_FMT_VYUY] = {
  +   .fourcc = V4L2_PIX_FMT_VYUY,
  +   .colorspace = V4L2_COLORSPACE_JPEG,
  +   .name   = VYUY,
  +   .bits_per_sample= 8,
  +   .packing= V4L2_IMGBUS_PACKING_2X8_PADHI,
  +   .order  = V4L2_IMGBUS_ORDER_LE,
  +   }, [V4L2_IMGBUS_FMT_VYUY_SMPTE170M_8] = {
  +   .fourcc = V4L2_PIX_FMT_VYUY,
  +   .colorspace = V4L2_COLORSPACE_SMPTE170M,
  +   .name   = VYUY in SMPTE170M,
  +   .bits_per_sample= 8,
  +   .packing= V4L2_IMGBUS_PACKING_2X8_PADHI,
  +   .order  = V4L2_IMGBUS_ORDER_LE,
  +   }, [V4L2_IMGBUS_FMT_VYUY_SMPTE170M_16] = {
  +   .fourcc = V4L2_PIX_FMT_VYUY,
  +   .colorspace = V4L2_COLORSPACE_SMPTE170M,
  +   .name   = VYUY in SMPTE170M, 16bit,
  +   .bits_per_sample= 16,
  +   .packing= V4L2_IMGBUS_PACKING_NONE,
  +   .order  = V4L2_IMGBUS_ORDER_LE,
  +   }, [V4L2_IMGBUS_FMT_RGB555] = {
  +   .fourcc   

Re: [PATCH] v4l2-dbg: report fail reason to the user

2009-11-12 Thread Németh Márton
From: Márton Németh nm...@freemail.hu

Report the fail reason to the user when writing a register even if
the verbose mode is switched off.

Remove duplicated code ioctl() call which may cause different ioctl()
function call in case of verbose and non verbose if not handled carefully.

Signed-off-by: Márton Németh nm...@freemail.hu
---
diff -r 60f784aa071d v4l2-apps/util/v4l2-dbg.cpp
--- a/v4l2-apps/util/v4l2-dbg.cpp   Wed Nov 11 18:28:53 2009 +0100
+++ b/v4l2-apps/util/v4l2-dbg.cpp   Thu Nov 12 09:15:17 2009 +0100
@@ -354,13 +354,14 @@
 {
int retVal;

-   if (!options[OptVerbose]) return ioctl(fd, request, parm);
retVal = ioctl(fd, request, parm);
-   printf(%s: , name);
-   if (retVal  0)
-   printf(failed: %s\n, strerror(errno));
-   else
-   printf(ok\n);
+   if (options[OptVerbose]) {
+   printf(%s: , name);
+   if (retVal  0)
+   printf(failed: %s\n, strerror(errno));
+   else
+   printf(ok\n);
+   }

return retVal;
 }
@@ -586,8 +587,8 @@

printf( set to 0x%llx\n, set_reg.val);
} else {
-   printf(Failed to set register 0x%08llx value 
0x%llx\n,
-   set_reg.reg, set_reg.val);
+   printf(Failed to set register 0x%08llx value 
0x%llx: %s\n,
+   set_reg.reg, set_reg.val, 
strerror(errno));
}
set_reg.reg++;
}

--
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: [RFC] Global video buffers pool / Samsung SoC's

2009-11-12 Thread Marek Szyprowski
Hello,

On Wednesday, November 11, 2009 8:13 AM Harald Welte wrote:

 Hi Guennadi and others,
 
 first of all sorry for breaking the thread, but I am new to this list
 and could not find the message-id of the original mails nor a .mbox
 format archive for the list :(
 
 As I was one of the people giving comments to Guennadi's talk at ELCE,
 let me give some feedback here, too.
 
 I'm currently helping the Samsung System LSI Linux kernel team with
 bringing their various ports for their ARM SoCs mainline.  So far we
 have excluded much of the multimedia related parts due to the complexity
 and lack of kernel infrastructure.
 
 Let me briefly describe the SoCs in question: They have an ARM9, ARM11
 or Cortex-A8 core and multiple video input and output paths, such as
 * camera interface
 * 2d acceleration engine
 * 3d acceleration engine
 * post-processor (colorspace conversion, scaling, rotating)
 * LCM output for classic digital RGB+sync interfaces
 * TV scaler
 * TV encoder
 * HDMI interface (simple serial-HDMI with DMA from/to system memory)
 * Transport Stream interface (MPEG-transport stream input with PID
   filter which can DMA to system memory
 * MIPI-HSI LCM output device
 * Multi-Function codec for H.264 and other stuff
 * Hardware JPEG codec.
 plus even some more that I might have missed.
 
 One of the issues is that, at least in many current and upcoming
 products, all those integrated peripherals can only use physically
 contiguous memory.
 
 For the classic output path (e.g. Xorg+EXA+XAA+3D), that is fine.  The
 framebuffer driver can simply allocate some large chunk of physical
 system memory at boot time, map that into userspace and be happy.  This
 includes things like Xvideo support in the Xserver.  Also, HDMI output
 and TV output can be handled inside X or switch to a new KMS model.
 
 However, the input side looks quite different,  On the one hand, we have
 the camera driver, but possibly HDMI input and transport stream input,
 are less easy.
 
 also, given the plethora of such subsytems in a device, you definitely
 don't want to have one static big boot-time allocation for each of those
 devices.  You don't want to waste that much memory all the time just in
 case at some time you start an application that actually needs this.
 Also, it is unlikely that all of the subsystems will operate at the same
 time.
 
 So having an in-kernel allocator for physically contiguous memory is
 something that is needed to properly support this hardware.  At boot
 time you allocate one big pool, from which you then on-demand allocate
 and free physically contiguous buffers, even at much later time.
 
 Furthermore, think of something like the JPEG codec acceleration, which
 you also want to use zero-copy from userspace.  So userpsace (like
 libjpeg for decode, or a camera application for encode)would also need
 to be able to allocate such a buffer inside the kernel for input and
 output data of the codec, mmap it, put its jpeg data into it and then
 run the actual codec.
 
 How would that relate to the proposed global video buffers pool? Well,
 I think before thinking strictly about video buffers for camera chips,
 we have to think much more generically!

We have been working on multimedia drivers for Samsung SoCs for a while
and we already got through all these problems.

The current version of our drivers use private ioctls, zero-copy user
space memory access and our custom memory manager. Our solution is described
in the following thread: 
http://article.gmane.org/gmane.linux.ports.arm.kernel/66463
We posted it as a base (or reference) for the discussion on Global Video
Buffers Pool.

We also found that most of the multimedia devices (FIMC, JPEG, Rotator/Scaler,
MFC, Post Processor, TVOUT, maybe others) can be successfully wrapped into V4L2
framework. We only need to extend the framework a bit, but this is doable and
has been discussed on V4L2 mini summit on LPC 2009. 

The most important issue is how the device that only processes multimedia data
from one buffer in system memory to another should be implemented in V4L2
framework. Quite long, but successful discussion can be found here:
http://article.gmane.org/gmane.linux.drivers.video-input-infrastructure/10668/
We are currently implementing a reference test driver for v4l2 mem2mem device.

The other important issues that came up while preparing multimedia drivers
for v4l2 framework is the proper support for multi-plane buffers (like these
required by MFC on newer Samsung SoCs). Here are more details:
http://article.gmane.org/gmane.linux.drivers.video-input-infrastructure/11212/

Best regards
--
Marek Szyprowski
Samsung Poland RD Center


--
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] V4L/DVB: pt1: remove duplicated #include

2009-11-12 Thread Huang Weiyi
Remove duplicated #include('s) in
  drivers/media/dvb/pt1/pt1.c

Signed-off-by: Huang Weiyi weiyi.hu...@gmail.com
---
 drivers/media/dvb/pt1/pt1.c |1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/drivers/media/dvb/pt1/pt1.c b/drivers/media/dvb/pt1/pt1.c
index 1fd8306..81e623a 100644
--- a/drivers/media/dvb/pt1/pt1.c
+++ b/drivers/media/dvb/pt1/pt1.c
@@ -27,7 +27,6 @@
 #include linux/pci.h
 #include linux/kthread.h
 #include linux/freezer.h
-#include linux/vmalloc.h
 
 #include dvbdev.h
 #include dvb_demux.h
-- 
1.6.1.3

--
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: atmel v4l2 soc driver

2009-11-12 Thread Guennadi Liakhovetski
On Thu, 12 Nov 2009, Sedji Gaouaou wrote:

 Hi,
 
 Sorry to answer you so late about the driver.
 I have a working version which is based on 2.6.27. It is using the V4L2 API,
 but not the soc-video.
 I am not able to update it for the time being, even if it is something that we
 want to do.
 Are you still interested by the old driver?

Yes, it would be nice to have the latest version of your driver available, 
although I cannot tell when I will find time to do the conversion. So far 
I'm quite loaded with work, so, it won't happen soon. But please do make 
your latest version available, maybe upload it to some site, where 
everyone can download it from and update if you get newer versions?

Thanks
Guennadi

 
 Regards,
 Sedji
 
 Guennadi Liakhovetski a écrit :
  Hi Sedji,
  
  On Mon, 23 Mar 2009, Sedji Gaouaou wrote:
  
   Well I am confused now...Should I still convert the atmel ISI driver to a
   soc
   driver?
   My concern was not to release a driver for the ov9655, but to have one
   which
   is working so I could test my atmel-soc driver :)
   Because I only have an ov9655 sensor here...
  
  What's the status of the ISI driver porting? Any progress? Or any plans idea
  when you will be able to work on it? If you have no plans to do the porting
  in the near future, maybe you could send me your latest patch, so, I could
  have a look at it and _maybe_ see, if I find time to convert it myself (no
  promise though)?
  
  Thanks
  Guennadi
  ---
  Guennadi Liakhovetski, Ph.D.
  Freelance Open-Source Software Developer
  http://www.open-technology.de/
  
 
 

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.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


Re: [PATCH 1/3 v3] Add camera support for A780 and A910 EZX phones

2009-11-12 Thread Antonio Ospite
On Wed, 11 Nov 2009 19:02:11 +0100 (CET)
Guennadi Liakhovetski g.liakhovet...@gmx.de wrote:

 Hi Antonio
 
 Still one more nitpick:


Comments below.

 On Wed, 11 Nov 2009, Antonio Ospite wrote:
 
[...]
   
  +/* camera */
  +static int a780_camera_init(void)
 
 This function returns an error but...
 
  +{
  +   int err;
  +
  +   /*
  +* GPIO50_nCAM_EN is active low
  +* GPIO19_GEN1_CAM_RST is active on rising edge
  +*/
  +   err = gpio_request(GPIO50_nCAM_EN, nCAM_EN);
  +   if (err) {
  +   pr_err(%s: Failed to request nCAM_EN\n, __func__);
  +   goto fail;
  +   }
[...]
  +   return err;
  +}
  +
[...]
   static void __init a780_init(void)
  @@ -699,6 +782,9 @@ static void __init a780_init(void)
   
  pxa_set_keypad_info(a780_keypad_platform_data);
   
  +   a780_camera_init();
 
 ...it is not used. So, I would either make it void, or check the return 
 code, and maybe even not register the camera since it's going to be 
 useless anyway? Same for a910.


Actually I was keeping returning an error just in case there would be a
soc-camera .init() someday. But it's indeed a good idea to check the
return value once that we have it.

I am inlining here only the incremental change for a faster review,
I am going to send v4 of the patch separately for you ACK, hopefully :).

Note, now the return value of platform_device_register is ignored but
this is not grave, I guess.

Thanks for your time,
   Antonio

diff --git a/arch/arm/mach-pxa/ezx.c b/arch/arm/mach-pxa/ezx.c
index 74423a6..1a73b7b 100644
--- a/arch/arm/mach-pxa/ezx.c
+++ b/arch/arm/mach-pxa/ezx.c
@@ -767,7 +767,6 @@ static struct platform_device a780_camera = {
 
 static struct platform_device *a780_devices[] __initdata = {
a780_gpio_keys,
-   a780_camera,
 };
 
 static void __init a780_init(void)
@@ -782,8 +781,10 @@ static void __init a780_init(void)
 
pxa_set_keypad_info(a780_keypad_platform_data);
 
-   a780_camera_init();
-   pxa_set_camera_info(a780_pxacamera_platform_data);
+   if (a780_camera_init() == 0) {
+   pxa_set_camera_info(a780_pxacamera_platform_data);
+   platform_device_register(a780_camera);
+   }
 
platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
platform_add_devices(ARRAY_AND_SIZE(a780_devices));
@@ -1026,7 +1027,6 @@ static struct platform_device a910_camera = {
 
 static struct platform_device *a910_devices[] __initdata = {
a910_gpio_keys,
-   a910_camera,
 };
 
 static void __init a910_init(void)
@@ -1041,8 +1041,10 @@ static void __init a910_init(void)
 
pxa_set_keypad_info(a910_keypad_platform_data);
 
-   a910_camera_init();
-   pxa_set_camera_info(a910_pxacamera_platform_data);
+   if (a910_camera_init() == 0) {
+   pxa_set_camera_info(a910_pxacamera_platform_data);
+   platform_device_register(a910_camera);
+   }
 
platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
platform_add_devices(ARRAY_AND_SIZE(a910_devices));


-- 
Antonio Ospite
http://ao2.it

PGP public key ID: 0x4553B001

A: Because it messes up the order in which people normally read text.
   See http://en.wikipedia.org/wiki/Posting_style
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing in e-mail?


pgpAlWyH5WBg2.pgp
Description: PGP signature


[PATCH 1/3 v4] Add camera support for A780 and A910 EZX phones

2009-11-12 Thread Antonio Ospite
Signed-off-by: Bart Visscher ba...@thisnet.nl
Signed-off-by: Antonio Ospite osp...@studenti.unina.it
---
Changes since v3:
 - Check {a780,a910}_camera_init() return value, and register camera
   conditionally.

 arch/arm/mach-pxa/ezx.c |  174 +-
 1 files changed, 170 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-pxa/ezx.c b/arch/arm/mach-pxa/ezx.c
index 588b265..46c32cf 100644
--- a/arch/arm/mach-pxa/ezx.c
+++ b/arch/arm/mach-pxa/ezx.c
@@ -17,8 +17,11 @@
 #include linux/delay.h
 #include linux/pwm_backlight.h
 #include linux/input.h
+#include linux/gpio.h
 #include linux/gpio_keys.h
 
+#include media/soc_camera.h
+
 #include asm/setup.h
 #include asm/mach-types.h
 #include asm/mach/arch.h
@@ -29,6 +32,7 @@
 #include plat/i2c.h
 #include mach/hardware.h
 #include mach/pxa27x_keypad.h
+#include mach/camera.h
 
 #include devices.h
 #include generic.h
@@ -38,6 +42,9 @@
 #define GPIO15_A910_FLIP_LID   15
 #define GPIO12_E680_LOCK_SWITCH12
 #define GPIO15_E6_LOCK_SWITCH  15
+#define GPIO50_nCAM_EN 50
+#define GPIO19_GEN1_CAM_RST19
+#define GPIO28_GEN2_CAM_RST28
 
 static struct platform_pwm_backlight_data ezx_backlight_data = {
.pwm_id = 0,
@@ -191,8 +198,8 @@ static unsigned long gen1_pin_config[] __initdata = {
GPIO94_CIF_DD_5,
GPIO17_CIF_DD_6,
GPIO108_CIF_DD_7,
-   GPIO50_GPIO,/* CAM_EN */
-   GPIO19_GPIO,/* CAM_RST */
+   GPIO50_GPIO | MFP_LPM_DRIVE_HIGH,   /* CAM_EN */
+   GPIO19_GPIO | MFP_LPM_DRIVE_HIGH,   /* CAM_RST */
 
/* EMU */
GPIO120_GPIO,   /* EMU_MUX1 */
@@ -248,8 +255,8 @@ static unsigned long gen2_pin_config[] __initdata = {
GPIO48_CIF_DD_5,
GPIO93_CIF_DD_6,
GPIO12_CIF_DD_7,
-   GPIO50_GPIO,/* CAM_EN */
-   GPIO28_GPIO,/* CAM_RST */
+   GPIO50_GPIO | MFP_LPM_DRIVE_HIGH,   /* CAM_EN */
+   GPIO28_GPIO | MFP_LPM_DRIVE_HIGH,   /* CAM_RST */
GPIO17_GPIO,/* CAM_FLASH */
 };
 #endif
@@ -683,6 +690,81 @@ static struct platform_device a780_gpio_keys = {
},
 };
 
+/* camera */
+static int a780_camera_init(void)
+{
+   int err;
+
+   /*
+* GPIO50_nCAM_EN is active low
+* GPIO19_GEN1_CAM_RST is active on rising edge
+*/
+   err = gpio_request(GPIO50_nCAM_EN, nCAM_EN);
+   if (err) {
+   pr_err(%s: Failed to request nCAM_EN\n, __func__);
+   goto fail;
+   }
+
+   err = gpio_request(GPIO19_GEN1_CAM_RST, CAM_RST);
+   if (err) {
+   pr_err(%s: Failed to request CAM_RST\n, __func__);
+   goto fail_gpio_cam_rst;
+   }
+
+   gpio_direction_output(GPIO50_nCAM_EN, 1);
+   gpio_direction_output(GPIO19_GEN1_CAM_RST, 0);
+
+   return 0;
+
+fail_gpio_cam_rst:
+   gpio_free(GPIO50_nCAM_EN);
+fail:
+   return err;
+}
+
+static int a780_camera_power(struct device *dev, int on)
+{
+   gpio_set_value(GPIO50_nCAM_EN, !on);
+   return 0;
+}
+
+static int a780_camera_reset(struct device *dev)
+{
+   gpio_set_value(GPIO19_GEN1_CAM_RST, 0);
+   msleep(10);
+   gpio_set_value(GPIO19_GEN1_CAM_RST, 1);
+
+   return 0;
+}
+
+struct pxacamera_platform_data a780_pxacamera_platform_data = {
+   .flags  = PXA_CAMERA_MASTER | PXA_CAMERA_DATAWIDTH_8 |
+   PXA_CAMERA_PCLK_EN | PXA_CAMERA_MCLK_EN,
+   .mclk_10khz = 5000,
+};
+
+static struct i2c_board_info a780_camera_i2c_board_info = {
+   I2C_BOARD_INFO(mt9m111, 0x5d),
+};
+
+static struct soc_camera_link a780_iclink = {
+   .bus_id = 0,
+   .flags  = SOCAM_SENSOR_INVERT_PCLK,
+   .i2c_adapter_id = 0,
+   .board_info = a780_camera_i2c_board_info,
+   .module_name= mt9m111,
+   .power  = a780_camera_power,
+   .reset  = a780_camera_reset,
+};
+
+static struct platform_device a780_camera = {
+   .name   = soc-camera-pdrv,
+   .id = 0,
+   .dev= {
+   .platform_data = a780_iclink,
+   },
+};
+
 static struct platform_device *a780_devices[] __initdata = {
a780_gpio_keys,
 };
@@ -699,6 +781,11 @@ static void __init a780_init(void)
 
pxa_set_keypad_info(a780_keypad_platform_data);
 
+   if (a780_camera_init() == 0) {
+   pxa_set_camera_info(a780_pxacamera_platform_data);
+   platform_device_register(a780_camera);
+   }
+
platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
platform_add_devices(ARRAY_AND_SIZE(a780_devices));
 }
@@ -864,6 +951,80 @@ static struct platform_device a910_gpio_keys = {
},
 };
 
+/* camera */
+static int a910_camera_init(void)
+{
+   int err;
+
+   /*
+* GPIO50_nCAM_EN is active low
+

Re: Tuner drivers

2009-11-12 Thread hermann pitton
Hi,

Am Donnerstag, den 12.11.2009, 18:05 + schrieb Ruslan:
 Who is making or was making driver for Analog Aver Super 007 tuner?
 I wanted to ask why there is no sound?
 

http://linuxtv.org/hg/v4l-dvb/annotate/d480cd6efe5b/linux/drivers/media/video/saa7134/saa7134.h#249

hg export 6072 delivers the patch.

# HG changeset patch
# User Michael Krufky mkru...@linuxtv.org
# Date 1187630090 14400
# Node ID d480cd6efe5b50fb41c4e137f18ce4ae93ab096c
# Parent  db2a922a8498fdb5d759b1134566e19e7da30b68
saa7134: add DVB-T support for Avermedia Super 007

From: Edgar Simo bobb...@gmail.com

add DVB-T support for Avermedia Super 007

Analog television is untested.  The device lacks input adapters for radio,
svideo  composite -- seems to be a DVB-T ONLY device.

Signed-off-by: Edgar Simo bobb...@gmail.com
Acked-by: Hermann Pitton hermann-pit...@arcor.de
Signed-off-by: Michael Krufky mkru...@linuxtv.org

diff -r db2a922a8498 -r d480cd6efe5b 
linux/Documentation/video4linux/CARDLIST.saa7134
--- a/linux/Documentation/video4linux/CARDLIST.saa7134  Mon Aug 20 13:06:00 
2007 -0400
+++ b/linux/Documentation/video4linux/CARDLIST.saa7134  Mon Aug 20 13:14:50 
2007 -0400
@@ -115,3 +115,4 @@
 114 - KWorld DVB-T 210 [17de:7250]
 115 - Sabrent PCMCIA TV-PCB05  [0919:2003]
 116 - 10MOONS TM300 TV Card[1131:2304]
+117 - Avermedia Super 007  [1461:f01d]
diff -r db2a922a8498 -r d480cd6efe5b 
linux/drivers/media/video/saa7134/saa7134-cards.c
--- a/linux/drivers/media/video/saa7134/saa7134-cards.c Mon Aug 20 13:06:00 
2007 -0400
+++ b/linux/drivers/media/video/saa7134/saa7134-cards.c Mon Aug 20 13:14:50 
2007 -0400
@@ -3573,6 +3573,22 @@
.gpio = 0x3000,
},
},
+   [SAA7134_BOARD_AVERMEDIA_SUPER_007] = {
+   .name   = Avermedia Super 007,
+   .audio_clock= 0x00187de7,
+   .tuner_type = TUNER_PHILIPS_TDA8290,
+   .radio_type = UNSET,
+   .tuner_addr = ADDR_UNSET,
+   .radio_addr = ADDR_UNSET,
+   .tuner_config   = 0,
+   .mpeg   = SAA7134_MPEG_DVB,
+   .inputs = {{
+   .name   = name_tv, /* FIXME: analog tv untested */
+   .vmux   = 1,
+   .amux   = TV,
+   .tv = 1,
+   }},
+   },
 };
 
 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
@@ -4296,6 +4312,12 @@
.subdevice= 0x2304,
.driver_data  = SAA7134_BOARD_10MOONSTVMASTER3,
},{
+   .vendor   = PCI_VENDOR_ID_PHILIPS,
+   .device   = PCI_DEVICE_ID_PHILIPS_SAA7133,
+   .subvendor= 0x1461, /* Avermedia Technologies Inc */
+   .subdevice= 0xf01d, /* AVerTV DVB-T Super 007 */
+   .driver_data  = SAA7134_BOARD_AVERMEDIA_SUPER_007,
+   },{
/* --- boards without eeprom + subsystem ID --- */
.vendor   = PCI_VENDOR_ID_PHILIPS,
.device   = PCI_DEVICE_ID_PHILIPS_SAA7134,
@@ -4640,6 +4662,7 @@
break;
case SAA7134_BOARD_PHILIPS_TIGER:
case SAA7134_BOARD_PHILIPS_TIGER_S:
+   case SAA7134_BOARD_AVERMEDIA_SUPER_007:
{
u8 data[] = { 0x3c, 0x33, 0x60};
struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = 
sizeof(data)};
diff -r db2a922a8498 -r d480cd6efe5b 
linux/drivers/media/video/saa7134/saa7134-dvb.c
--- a/linux/drivers/media/video/saa7134/saa7134-dvb.c   Mon Aug 20 13:06:00 
2007 -0400
+++ b/linux/drivers/media/video/saa7134/saa7134-dvb.c   Mon Aug 20 13:14:50 
2007 -0400
@@ -763,6 +763,21 @@
.request_firmware = philips_tda1004x_request_firmware
 };
 
+static struct tda1004x_config avermedia_super_007_config = {
+   .demod_address = 0x08,
+   .invert= 1,
+   .invert_oclk   = 0,
+   .xtal_freq = TDA10046_XTAL_16M,
+   .agc_config= TDA10046_AGC_TDA827X,
+   .gpio_config   = TDA10046_GP01_I,
+   .if_freq   = TDA10046_FREQ_045,
+   .i2c_gate  = 0x4b,
+   .tuner_address = 0x60,
+   .tuner_config  = 0,
+   .antenna_switch= 1,
+   .request_firmware = philips_tda1004x_request_firmware
+};
+
 /* --
  * special case: this card uses saa713x GPIO22 for the mode switch
  */
@@ -1025,6 +1040,9 @@
case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA:
configure_tda827x_fe(dev, asus_p7131_hybrid_lna_config);
break;
+   case SAA7134_BOARD_AVERMEDIA_SUPER_007:
+   configure_tda827x_fe(dev, avermedia_super_007_config);
+   break;
default:
wprintk(Huh? unknown DVB card?\n);
break;
diff -r db2a922a8498 -r d480cd6efe5b 

Re: [PATCH 1/3 v4] Add camera support for A780 and A910 EZX phones

2009-11-12 Thread Guennadi Liakhovetski
On Thu, 12 Nov 2009, Antonio Ospite wrote:

 Signed-off-by: Bart Visscher ba...@thisnet.nl
 Signed-off-by: Antonio Ospite osp...@studenti.unina.it

Acked-by: Guennadi Liakhovetski g.liakhovet...@gmx.de

Thanks
Guennadi

 ---
 Changes since v3:
  - Check {a780,a910}_camera_init() return value, and register camera
conditionally.
 
  arch/arm/mach-pxa/ezx.c |  174 +-
  1 files changed, 170 insertions(+), 4 deletions(-)
 
 diff --git a/arch/arm/mach-pxa/ezx.c b/arch/arm/mach-pxa/ezx.c
 index 588b265..46c32cf 100644
 --- a/arch/arm/mach-pxa/ezx.c
 +++ b/arch/arm/mach-pxa/ezx.c
 @@ -17,8 +17,11 @@
  #include linux/delay.h
  #include linux/pwm_backlight.h
  #include linux/input.h
 +#include linux/gpio.h
  #include linux/gpio_keys.h
  
 +#include media/soc_camera.h
 +
  #include asm/setup.h
  #include asm/mach-types.h
  #include asm/mach/arch.h
 @@ -29,6 +32,7 @@
  #include plat/i2c.h
  #include mach/hardware.h
  #include mach/pxa27x_keypad.h
 +#include mach/camera.h
  
  #include devices.h
  #include generic.h
 @@ -38,6 +42,9 @@
  #define GPIO15_A910_FLIP_LID 15
  #define GPIO12_E680_LOCK_SWITCH  12
  #define GPIO15_E6_LOCK_SWITCH15
 +#define GPIO50_nCAM_EN   50
 +#define GPIO19_GEN1_CAM_RST  19
 +#define GPIO28_GEN2_CAM_RST  28
  
  static struct platform_pwm_backlight_data ezx_backlight_data = {
   .pwm_id = 0,
 @@ -191,8 +198,8 @@ static unsigned long gen1_pin_config[] __initdata = {
   GPIO94_CIF_DD_5,
   GPIO17_CIF_DD_6,
   GPIO108_CIF_DD_7,
 - GPIO50_GPIO,/* CAM_EN */
 - GPIO19_GPIO,/* CAM_RST */
 + GPIO50_GPIO | MFP_LPM_DRIVE_HIGH,   /* CAM_EN */
 + GPIO19_GPIO | MFP_LPM_DRIVE_HIGH,   /* CAM_RST */
  
   /* EMU */
   GPIO120_GPIO,   /* EMU_MUX1 */
 @@ -248,8 +255,8 @@ static unsigned long gen2_pin_config[] __initdata = {
   GPIO48_CIF_DD_5,
   GPIO93_CIF_DD_6,
   GPIO12_CIF_DD_7,
 - GPIO50_GPIO,/* CAM_EN */
 - GPIO28_GPIO,/* CAM_RST */
 + GPIO50_GPIO | MFP_LPM_DRIVE_HIGH,   /* CAM_EN */
 + GPIO28_GPIO | MFP_LPM_DRIVE_HIGH,   /* CAM_RST */
   GPIO17_GPIO,/* CAM_FLASH */
  };
  #endif
 @@ -683,6 +690,81 @@ static struct platform_device a780_gpio_keys = {
   },
  };
  
 +/* camera */
 +static int a780_camera_init(void)
 +{
 + int err;
 +
 + /*
 +  * GPIO50_nCAM_EN is active low
 +  * GPIO19_GEN1_CAM_RST is active on rising edge
 +  */
 + err = gpio_request(GPIO50_nCAM_EN, nCAM_EN);
 + if (err) {
 + pr_err(%s: Failed to request nCAM_EN\n, __func__);
 + goto fail;
 + }
 +
 + err = gpio_request(GPIO19_GEN1_CAM_RST, CAM_RST);
 + if (err) {
 + pr_err(%s: Failed to request CAM_RST\n, __func__);
 + goto fail_gpio_cam_rst;
 + }
 +
 + gpio_direction_output(GPIO50_nCAM_EN, 1);
 + gpio_direction_output(GPIO19_GEN1_CAM_RST, 0);
 +
 + return 0;
 +
 +fail_gpio_cam_rst:
 + gpio_free(GPIO50_nCAM_EN);
 +fail:
 + return err;
 +}
 +
 +static int a780_camera_power(struct device *dev, int on)
 +{
 + gpio_set_value(GPIO50_nCAM_EN, !on);
 + return 0;
 +}
 +
 +static int a780_camera_reset(struct device *dev)
 +{
 + gpio_set_value(GPIO19_GEN1_CAM_RST, 0);
 + msleep(10);
 + gpio_set_value(GPIO19_GEN1_CAM_RST, 1);
 +
 + return 0;
 +}
 +
 +struct pxacamera_platform_data a780_pxacamera_platform_data = {
 + .flags  = PXA_CAMERA_MASTER | PXA_CAMERA_DATAWIDTH_8 |
 + PXA_CAMERA_PCLK_EN | PXA_CAMERA_MCLK_EN,
 + .mclk_10khz = 5000,
 +};
 +
 +static struct i2c_board_info a780_camera_i2c_board_info = {
 + I2C_BOARD_INFO(mt9m111, 0x5d),
 +};
 +
 +static struct soc_camera_link a780_iclink = {
 + .bus_id = 0,
 + .flags  = SOCAM_SENSOR_INVERT_PCLK,
 + .i2c_adapter_id = 0,
 + .board_info = a780_camera_i2c_board_info,
 + .module_name= mt9m111,
 + .power  = a780_camera_power,
 + .reset  = a780_camera_reset,
 +};
 +
 +static struct platform_device a780_camera = {
 + .name   = soc-camera-pdrv,
 + .id = 0,
 + .dev= {
 + .platform_data = a780_iclink,
 + },
 +};
 +
  static struct platform_device *a780_devices[] __initdata = {
   a780_gpio_keys,
  };
 @@ -699,6 +781,11 @@ static void __init a780_init(void)
  
   pxa_set_keypad_info(a780_keypad_platform_data);
  
 + if (a780_camera_init() == 0) {
 + pxa_set_camera_info(a780_pxacamera_platform_data);
 + platform_device_register(a780_camera);
 + }
 +
   platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
   platform_add_devices(ARRAY_AND_SIZE(a780_devices));
  }
 @@ -864,6 +951,80 @@ static struct platform_device a910_gpio_keys 

DIB3000 DVB-USB device with Linux kernel 2.6.31

2009-11-12 Thread Matthias Niklas
Hello,

my DVB-T device (a Twinhan / DIB3000 compatible device) was working fine till 
kernel 2.6.28.
After upgrading to the new kernel this device is not working properly anymore.

The device has been recognized by the kernel. The dmesg excerpt please
find below: 

[   13.159468] dvb-usb: found a 'TwinhanDTV USB-Ter USB1.1 / Magic Box
I / HAMA USB1.1 DVB-T device' in warm state.
[   13.182663] dvb-usb: will use the device's hardware PID filter
(table count: 16).
[   13.564013] dvb-usb: schedule remote query interval to 150 msecs.
[   13.597164] dvb-usb: TwinhanDTV USB-Ter USB1.1 / Magic Box I / HAMA
USB1.1 DVB-T device successfully initialized and connected.
[   13.597292] usbcore: registered new interface driver
dvb_usb_dibusb_mb

But however - even with compiling and using the newest driver version
from linuxtv.org - I have still problems with it. Whenever I try to use
scan or tzap to tune to a channel with that device I only get tuning
errors.
Also the box's status LED's don't change as well (still switched) of. So
it seems that the box doesn't get the right commands for tuning.

Can somebody please have a look into that matter? I can give more
information if necessary.

Thank you very much.

kind regards.


Matthias Niklas

PS: I describe myself as an advanced linux user with basic compiling and
driver installation skills but if you need any specific information
please described detailed what and how to get those information.


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


How can I create a patch?

2009-11-12 Thread xwang1976

Hi to all,
I've a usb hybrid tuner which does not work with the main v4l driver.
I've found a way to use it modifying some lines in the em28xx-dvb.c and 
em28xx-cards.c files (thanks to Dainius Ridzevicius).

Can someone explain me how to create a diff between the main v4l
driver and the patched version so that I can share it in order to have 
it merged upstream?

Thank you,
Xwang
--
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: How can I create a patch?

2009-11-12 Thread Devin Heitmueller
On Thu, Nov 12, 2009 at 5:24 PM,  xwang1...@email.it wrote:
 Hi to all,
 I've a usb hybrid tuner which does not work with the main v4l driver.
 I've found a way to use it modifying some lines in the em28xx-dvb.c and
 em28xx-cards.c files (thanks to Dainius Ridzevicius).
 Can someone explain me how to create a diff between the main v4l
 driver and the patched version so that I can share it in order to have it
 merged upstream?
 Thank you,
 Xwang
 --
 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


Run the following:

hg diff  output.patch

Cheers,

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.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


Re: [PATCH 1/3] soc-camera: tw9910: modify V/H outpit pin setting to use VALID

2009-11-12 Thread Guennadi Liakhovetski
Hello Morimoto-san

On Tue, 10 Nov 2009, Kuninori Morimoto wrote:

 tw9910 driver assume that V/H data is active high.
 This is controlled by OUTCTR1 register.
 When we use VALID data with active high,
 the setting will be VSP_LO/HSP_LO.
 This setting is correct,
 because this register setting is based on SYNC.

Thanks for the patch. It is good to see magic values disappear and be 
replaced with proper algorithms, but please, let's do this properly. And 
this means let's advertise both supported HSYNC and VSYNC polarities in 
tw9910_query_bus_param() and configure the chip accordingly in 
tw9910_set_bus_param(). This will also guarantee, that when we switch to 
the new bus configuration API this information doesn't get lost.

Thanks
Guennadi

 
 Signed-off-by: Kuninori Morimoto morimoto.kunin...@renesas.com
 ---
  drivers/media/video/tw9910.c |   41 +
  1 files changed, 13 insertions(+), 28 deletions(-)
 
 diff --git a/drivers/media/video/tw9910.c b/drivers/media/video/tw9910.c
 index 6d8dede..426f6fc 100644
 --- a/drivers/media/video/tw9910.c
 +++ b/drivers/media/video/tw9910.c
 @@ -166,7 +166,7 @@
  #define VSSL_FIELD  0x20 /*   2 : FIELD  */
  #define VSSL_VVALID 0x30 /*   3 : VVALID */
  #define VSSL_ZERO   0x70 /*   7 : 0  */
 -#define HSP_LOW 0x00 /* 0 : HS pin output polarity is active low */
 +#define HSP_LO  0x00 /* 0 : HS pin output polarity is active low */
  #define HSP_HI  0x08 /* 1 : HS pin output polarity is active high.*/
/* HS pin output control */
  #define HSSL_HACT   0x00 /*   0 : HACT   */
 @@ -239,18 +239,6 @@ struct tw9910_priv {
   u32 revision;
  };
  
 -/*
 - * register settings
 - */
 -
 -#define ENDMARKER { 0xff, 0xff }
 -
 -static const struct regval_list tw9910_default_regs[] =
 -{
 - { OUTCTR1, VSP_LO | VSSL_VVALID | HSP_HI | HSSL_HSYNC },
 - ENDMARKER,
 -};
 -
  static const enum v4l2_imgbus_pixelcode tw9910_color_codes[] = {
   V4L2_IMGBUS_FMT_VYUY,
  };
 @@ -463,20 +451,6 @@ static int tw9910_set_hsync(struct i2c_client *client,
   return ret;
  }
  
 -static int tw9910_write_array(struct i2c_client *client,
 -   const struct regval_list *vals)
 -{
 - while (vals-reg_num != 0xff) {
 - int ret = i2c_smbus_write_byte_data(client,
 - vals-reg_num,
 - vals-value);
 - if (ret  0)
 - return ret;
 - vals++;
 - }
 - return 0;
 -}
 -
  static void tw9910_reset(struct i2c_client *client)
  {
   tw9910_mask_set(client, ACNTL1, SRESET, SRESET);
 @@ -681,7 +655,18 @@ static int tw9910_s_crop(struct v4l2_subdev *sd, struct 
 v4l2_crop *a)
* reset hardware
*/
   tw9910_reset(client);
 - ret = tw9910_write_array(client, tw9910_default_regs);
 +
 + /*
 +  * set OUTCTR1
 +  *
 +  * tw9910 use valid data on active high.
 +  * Then, VSP/HSP low seems strange here. But this is correct.
 +  * Because it is based on SYNC.
 +  * So, VSP/HSP low mean active high for valid data
 +  */
 + ret = i2c_smbus_write_byte_data(client, OUTCTR1,
 + VSP_LO | VSSL_VVALID |
 + HSP_LO | HSSL_DVALID);
   if (ret  0)
   goto tw9910_set_fmt_error;
  
 -- 
 1.6.3.3
 

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.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


Re: [XC3028] Terretec Cinergy T XS wrong firmware xc3028-v27.fw

2009-11-12 Thread Devin Heitmueller
On Thu, Nov 12, 2009 at 6:33 PM, Florent NOUVELLON
flonouvel...@gmail.com wrote:
 Sorry about that mistake... That was an em28xx-new trick.

 So my question is simply :
 Do you know how to disable compiling some drivers on v4l-dvb for faster
 compiling ?

Well, I typically disable firedtv because of the Ubuntu bug.  I
wouldn't recommend compiling out drivers to improve compile
performance (it's just too easy to screw up because of non-obvious
dependencies).  If you are recompiling regularly, I would suggest
installing ccache instead.

Cheers,

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.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


Re: [linux-dvb] Most stable DVB-S2 PCI Card?

2009-11-12 Thread Jonas Kvinge
Manu Abraham wrote:
 On Fri, May 22, 2009 at 9:23 PM, Bob Ingraham b...@brin.com wrote:
 Hello,

 What is the most stable DVB-S2 PCI card?

 I've read through the wiki DVB-2 PCI section, but am not confident after 
 reading this what the answer is.

 Running Fedora Core 10 at the moment, but am willing to upgrade to 11 or 
 perform custom patches to get something going.

 No need for CI or DiSEQ support, just highly stable/reliable DVB-2 
 tuning/reception under Linux.

 Any recommendations would be most appreciated!

 
 
 If you don't need the CI part, The TT S2-1600 is a 2nd generation DVB-S2 PCI
 card with great performance (supports Symbol rates upto 60MSPS), with support
 out of the box from the v4l-dvb tree.
 
 Regards,
 Manu

I think I will try that card. Is the card tested to be working by many?


Jonas
--
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: V4L/DVB (12859): go7007: semaphore - mutex conversion

2009-11-12 Thread Hans Verkuil
On Friday 13 November 2009 01:01:27 Stefan Lippers-Hollmann wrote:
 Hi
 
 On Friday 13 November 2009, Linux Kernel Mailing List wrote:
  Gitweb: 
  http://git.kernel.org/linus/fd9a40da1db372833e1af6397d2f6c94ceff3dad
  Commit: fd9a40da1db372833e1af6397d2f6c94ceff3dad
  Parent: 028d4c989ab9e839471739332d185f8f158b0043
  Author: Mauro Carvalho Chehab mche...@redhat.com
  AuthorDate: Tue Sep 15 11:07:59 2009 -0300
  Committer:  Mauro Carvalho Chehab mche...@redhat.com
  CommitDate: Sat Sep 19 00:13:37 2009 -0300
  
  V4L/DVB (12859): go7007: semaphore - mutex conversion
  
  Signed-off-by: Hans Verkuil hverk...@xs4all.nl
  Signed-off-by: Mauro Carvalho Chehab mche...@redhat.com
 
 As already noticed by Pascal Terjan pter...@gmail.com
   http://lkml.indiana.edu/hypermail/linux/kernel/0909.3/00062.html
 go7007 currently fails to build in 2.6.32-rc6-git5
 
   LD  drivers/staging/go7007/built-in.o   

   CC [M]  drivers/staging/go7007/go7007-v4l2.o

   CC [M]  drivers/staging/go7007/go7007-driver.o  

   CC [M]  drivers/staging/go7007/go7007-i2c.o 

   CC [M]  drivers/staging/go7007/go7007-fw.o  

   CC [M]  drivers/staging/go7007/snd-go7007.o 

   CC [M]  drivers/staging/go7007/s2250-board.o

 drivers/staging/go7007/s2250-board.c:24:26: error: s2250-loader.h: No such 
 file or directory 
 drivers/staging/go7007/s2250-board.c: In function 'read_reg_fp':  

 drivers/staging/go7007/s2250-board.c:264: warning: passing argument 1 of 
 'down_interruptible' from incompatible pointer type   

 drivers/staging/go7007/s2250-board.c:273: warning: passing argument 1 of 'up' 
 from incompatible pointer type
   
 drivers/staging/go7007/s2250-board.c: In function 's2250_init':   

 drivers/staging/go7007/s2250-board.c:670: error: implicit declaration of 
 function 's2250loader_init'   

 drivers/staging/go7007/s2250-board.c:676: error: implicit declaration of 
 function 's2250loader_cleanup'

 make[6]: *** [drivers/staging/go7007/s2250-board.o] Error 1   

 make[5]: *** [drivers/staging/go7007] Error 2 

 make[4]: *** [drivers/staging] Error 2

 make[3]: *** [drivers] Error 2
 
   drivers/staging/go7007/go7007-driver.c |   12 +++---
   drivers/staging/go7007/go7007-i2c.c|   12 +++---
   drivers/staging/go7007/go7007-priv.h   |6 +-
   drivers/staging/go7007/go7007-usb.c|   10 ++--
   drivers/staging/go7007/go7007-v4l2.c   |   66 
  
   drivers/staging/go7007/go7007.txt  |4 +-
   drivers/staging/go7007/s2250-board.c   |   18 -
   drivers/staging/go7007/s2250-loader.c  |8 ++--
   drivers/staging/go7007/snd-go7007.c|2 +-
   9 files changed, 68 insertions(+), 70 deletions(-)
 
 [...]
  diff --git a/drivers/staging/go7007/s2250-board.c 
  b/drivers/staging/go7007/s2250-board.c
  index b398db4..f35f077 100644
  --- a/drivers/staging/go7007/s2250-board.c
  +++ b/drivers/staging/go7007/s2250-board.c
  @@ -21,12 +21,10 @@
   #include linux/i2c.h
   #include linux/videodev2.h
   #include media/v4l2-common.h
  +#include s2250-loader.h
 
 s2250-loader.h is neither available in 
   git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
 nor
   git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 although it seems to have been included in Hans' initial pull request 
   http://www.mail-archive.com/linux-media@vger.kernel.org/msg09506.html
 
   #include go7007-priv.h
   #include wis-i2c.h
   
  -extern int s2250loader_init(void);
  -extern void s2250loader_cleanup(void);
  -
   #define TLV320_ADDRESS  0x34
   #define VPX322_ADDR_ANALOGCONTROL1 0x02
   #define VPX322_ADDR_BRIGHTNESS00x0127
 [...]
 
 This is a regression since 2.6.31.
 
 Regards
   Stefan Lippers-Hollmann
 

Thanks for reporting this. I have already received patches and will review
and queue them this weekend. I wasn't aware that 2.6.32 was also broken,
so this will be a high-prio item for me.

We should catch these things with the daily build process that we have, but
the daily build is effectively 

Re: [PATCH v2] soc-camera: tw9910: modify V/H outpit pin setting to use VALID

2009-11-12 Thread Guennadi Liakhovetski
Hello Morimoto-san

On Fri, 13 Nov 2009, Kuninori Morimoto wrote:

 
 Signed-off-by: Kuninori Morimoto morimoto.kunin...@renesas.com
 ---
 v1 - v2
 
 o remove un-understandable explain.
   - tw9910_query_bus_param need not modify now
 o move OUTCTR1 setting to tw9910_set_bus_param
 
  drivers/media/video/tw9910.c |   38 --
  1 files changed, 8 insertions(+), 30 deletions(-)
 
 diff --git a/drivers/media/video/tw9910.c b/drivers/media/video/tw9910.c
 index 6d8dede..82135f2 100644
 --- a/drivers/media/video/tw9910.c
 +++ b/drivers/media/video/tw9910.c
 @@ -239,18 +239,6 @@ struct tw9910_priv {
   u32 revision;
  };
  
 -/*
 - * register settings
 - */
 -
 -#define ENDMARKER { 0xff, 0xff }
 -
 -static const struct regval_list tw9910_default_regs[] =
 -{
 - { OUTCTR1, VSP_LO | VSSL_VVALID | HSP_HI | HSSL_HSYNC },
 - ENDMARKER,
 -};
 -
  static const enum v4l2_imgbus_pixelcode tw9910_color_codes[] = {
   V4L2_IMGBUS_FMT_VYUY,
  };
 @@ -463,20 +451,6 @@ static int tw9910_set_hsync(struct i2c_client *client,
   return ret;
  }
  
 -static int tw9910_write_array(struct i2c_client *client,
 -   const struct regval_list *vals)
 -{
 - while (vals-reg_num != 0xff) {
 - int ret = i2c_smbus_write_byte_data(client,
 - vals-reg_num,
 - vals-value);
 - if (ret  0)
 - return ret;
 - vals++;
 - }
 - return 0;
 -}
 -
  static void tw9910_reset(struct i2c_client *client)
  {
   tw9910_mask_set(client, ACNTL1, SRESET, SRESET);
 @@ -578,7 +552,14 @@ static int tw9910_s_stream(struct v4l2_subdev *sd, int 
 enable)
  static int tw9910_set_bus_param(struct soc_camera_device *icd,
   unsigned long flags)
  {
 - return 0;
 + struct v4l2_subdev *sd = soc_camera_to_subdev(icd);
 + struct i2c_client *client = sd-priv;
 +
 + /*
 +  * set OUTCTR1
 +  */
 + return i2c_smbus_write_byte_data(client, OUTCTR1,
 +  VSSL_VVALID | HSSL_DVALID);

In v1 you did

+   ret = i2c_smbus_write_byte_data(client, OUTCTR1,
+   VSP_LO | VSSL_VVALID |
+   HSP_LO | HSSL_DVALID);

now you dropped VSP_LO | HSP_LO, could you, please, explain, why? Also, 
sorry for not explaining properly. Yesterday I wrote

quote
let's advertise both supported HSYNC and VSYNC polarities in 
tw9910_query_bus_param() and configure the chip accordingly in 
tw9910_set_bus_param()
/quote

which means, in tw9910_query_bus_param() you'd do

unsigned long flags = SOCAM_PCLK_SAMPLE_RISING | SOCAM_MASTER |
SOCAM_VSYNC_ACTIVE_HIGH | SOCAM_HSYNC_ACTIVE_HIGH |
+   SOCAM_VSYNC_ACTIVE_LOW | SOCAM_HSYNC_ACTIVE_LOW |
SOCAM_DATA_ACTIVE_HIGH | priv-info-buswidth;

and in tw9910_set_bus_param() you'd check which polarity is set like

if (flags  SOCAM_VSYNC_ACTIVE_HIGH)
ret = i2c_smbus_write_byte_data(...);
else
ret = i2c_smbus_write_byte_data(...);

if (ret  0)
return ret;

if (flags  SOCAM_VSYNC_ACTIVE_HIGH)
ret = i2c_smbus_write_byte_data(...);
else
ret = i2c_smbus_write_byte_data(...);

Or are there any objections against this? I would really do this even if 
we cannot positively test opposite polarities now.

Thanks
Guennadi

  }
  
  static unsigned long tw9910_query_bus_param(struct soc_camera_device *icd)
 @@ -681,9 +662,6 @@ static int tw9910_s_crop(struct v4l2_subdev *sd, struct 
 v4l2_crop *a)
* reset hardware
*/
   tw9910_reset(client);
 - ret = tw9910_write_array(client, tw9910_default_regs);
 - if (ret  0)
 - goto tw9910_set_fmt_error;
  
   /*
* set bus width
 -- 
 1.6.3.3
 

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.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


Re: [PATCH] soc-camera: sh_mobile_ceu_camera: remove unused label

2009-11-12 Thread Guennadi Liakhovetski
Hi Mauro

here's one more patch for 2.6.32:

On Tue, 10 Nov 2009, Kuninori Morimoto wrote:

 Signed-off-by: Kuninori Morimoto morimoto.kunin...@renesas.com
 ---
  Guennadi
 
 I'm very very very sorry.
 I forgot remove this label in sh_mobile_ceu_camera: call pm_runtime_disable

Would it be possible to merge it with the previous one

http://linuxtv.org/hg/~gliakhovetski/v4l-dvb/rev/56fb79be71c8

in your git? Shall I just push it into my hg for you to pick up?

 
  drivers/media/video/sh_mobile_ceu_camera.c |1 -
  1 files changed, 0 insertions(+), 1 deletions(-)
 
 diff --git a/drivers/media/video/sh_mobile_ceu_camera.c 
 b/drivers/media/video/sh_mobile_ceu_camera.c
 index aa3e4af..bcfccc2 100644
 --- a/drivers/media/video/sh_mobile_ceu_camera.c
 +++ b/drivers/media/video/sh_mobile_ceu_camera.c
 @@ -1857,7 +1857,6 @@ static int __devinit sh_mobile_ceu_probe(struct 
 platform_device *pdev)
  
  exit_free_clk:
   pm_runtime_disable(pdev-dev);
 -exit_free_irq:
   free_irq(pcdev-irq, pcdev);
  exit_release_mem:
   if (platform_get_resource(pdev, IORESOURCE_MEM, 1))
 -- 
 1.6.3.3
 

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.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