Re: [PATCH/RFC 7/9 v2] v4l: add an image-bus API for configuring v4l2 subdev pixel and frame formats
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
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
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
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
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
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
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
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
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
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?
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?
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
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
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?
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
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
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
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