From: "Charles D. Krebs" <ckrebs@therealtimegroup.com>
To: "Guennadi Liakhovetski" <g.liakhovetski@gmx.de>
Cc: "Linux Media Mailing List" <linux-media@vger.kernel.org>,
"Magnus Damm" <magnus.damm@gmail.com>
Subject: Re: CEU / Camera Driver Question
Date: Mon, 3 May 2010 21:26:29 -0500 [thread overview]
Message-ID: <F528C77ECD244EC8ADEEE5DEF504EB88@RSI45> (raw)
In-Reply-To: <Pine.LNX.4.64.1004140827550.6386@axis700.grange>
Guennadi,
As per your recommendation I reviewed the "soc_camera_platform" driver, and
have chosen to implement the new camera by simply modifying it.
Sure enough, I can boot up and properly register a device under /dev/video0.
The camera provides 8-bit Grayscale data corresponding to pixel format
V4L2_PIX_FMT_GREY. I can't seem to find any example of a device driver that
uses this format, so I've been taking my best guess as how to setup
"soc_camera_platform_info". So far I have:
static struct soc_camera_platform_info mycam_camera_info = {
.format_name = "GREY",
.format_depth = 8,
.format = {
.code = V4L2_MBUS_FMT_YUYV8_2X8_BE,
.colorspace = V4L2_COLORSPACE_JPEG,
.field = V4L2_FIELD_NONE,
.width = 320,
.height = 240,
},
.bus_param = SOCAM_PCLK_SAMPLE_RISING | SOCAM_HSYNC_ACTIVE_HIGH |
SOCAM_VSYNC_ACTIVE_HIGH | SOCAM_MASTER | SOCAM_DATAWIDTH_8 |
SOCAM_DATA_ACTIVE_HIGH,
};
It looks like I'll need to modify "soc_camera_platform" it in a way to at
least add a "fourcc" field that can be interpreted by the ceu driver for the
"sh_mobile_ceu_set_bus_param" call to setup the hardware correctly.
But regardless of how I set this structure up, I don't see any direct
support for a Grayscale mode data capture in the ceu driver. For example,
"sh_mobile_ceu_set_bus_param" does not contain V4L2_PIX_FMT_GREY in its list
of fourcc formats. Yet based on the 7724 hardware manual, and from the
information I have received from Renesas, I'm not seeing any reason why this
format should not be supported.
Is grayscale somehow supported under the current CEU driver?
Any suggestions on how I might go about implementing support? I'm having
trouble seeing the dataflow through the driver at the moment...
Thank you!
Charles Krebs, Embedded Solutions Developer
The Realtime Group
--------------------------------------------------
From: "Guennadi Liakhovetski" <g.liakhovetski@gmx.de>
Sent: Wednesday, April 14, 2010 1:38 AM
To: "Charles D. Krebs" <ckrebs@therealtimegroup.com>
Cc: "Linux Media Mailing List" <linux-media@vger.kernel.org>
Subject: Re: CEU / Camera Driver Question
> Hi Charles
>
> On Tue, 13 Apr 2010, Charles D. Krebs wrote:
>
>> Guennadi,
>>
>> Thank you for the response and explanation. It falls perfectly in line
>> with
>> what we had been suspecting on our end.
>>
>> We ended up basing the driver off "mt9t112.c", which is an I2C camera.
>> The
>> major issues have been figuring out how to remove the I2C components.
>>
>> The driver (attached for reference) currently registers a device under
>> "/sys/bus/platform/drivers/testcam". However, udev does not populate a
>> "video0" entry under "/dev", so it seems the V4L2 registration wasn't
>> done
>> correctly.
>
> All my comments will base on the current kernel, so, if you prefer to stay
> with an older one, they will not be (entirely) applicable.
>
>> I'm fairly sure the problem falls under "testcam_probe" or
>> "testcam_module_init".
>>
>> Since we are not I2C, should we call "platform_driver_register" from
>> "testcam_module_init"?
>>
>> Do we need to fill out a link structure from the SOC Camera driver
>> (soc_camera_link)? I noticed that this is used in all the I2C cameras.
>
> As I see, your driver is just a dummy, that only specifies camera's
> capabilities. That's also ok, you certainly can make a driver for a
> completely fixed-parameter camera, but then a few methods from your driver
> should either disappear, or return an "unsupported" error, or return the
> fixed configuration of the sensor (like s_fmt, try_fmt). Please, have a
> look at drivers/media/video/soc_camera_platform.c, that's an example of an
> soc-camera client driver, not using i2c. I'm not sure if it's working
> presently, it's use kind of discouraged, but you can certainly use it as
> an example. If you don't plan to mainline your driver, you can even
> actually use soc_camera_platform.c, then you'll just need to add some
> platform data for it (see arch/sh/boards/mach-ap325rxa/setup.c and struct
> soc_camera_link camera_link in it for an example). You might have to fix
> that driver slightly, but that shouldn't be too difficult.
>
> Thanks
> Guennadi
>
>>
>> Unfortunately, I still need to figure out how to best integrate with the
>> sh_mobile_ceu_camera driver since I am mid migration from 2.6.31-rc7 to
>> 2.6.33. It appears that quite a lot has changed... The Kernel change
>> has
>> spawned a plethora of issues, which has unfortunately delayed development
>> on
>> this driver until now.
>>
>> Thanks for your input!
>>
>> Charles Krebs, Embedded Solutions Developer
>> The Realtime Group
>>
>> --------------------------------------------------
>> From: "Guennadi Liakhovetski" <g.liakhovetski@gmx.de>
>> Sent: Thursday, April 08, 2010 1:39 AM
>> To: "Magnus Damm" <magnus.damm@gmail.com>
>> Cc: "Charles D. Krebs" <ckrebs@therealtimegroup.com>
>> Subject: Re: CEU / Camera Driver Question
>>
>> > Hi Charles
>> >
>> > On Thu, 8 Apr 2010, Magnus Damm wrote:
>> >
>> > > Hi Charles,
>> > >
>> > > Thanks for your email. I am afraid I know too little about the
>> > > current
>> > > status of the CEU driver and camera sensor integration. I do however
>> > > know
>> > > one guy that can help you.
>> > >
>> > > Guennadi, can you please give us some recommendations? Charles is
>> > > using
>> > > 2.6.33 on sh7724, see below.
>> > >
>> > > Thanks!
>> > >
>> > > / magnus
>> > >
>> > > On Apr 6, 2010 10:35 AM, "Charles D. Krebs"
>> > > <ckrebs@therealtimegroup.com>
>> > > wrote:
>> > >
>> > > Magnus,
>> > >
>> > > We have been working on integrating our camera into the 7724
>> > > platform. I
>> > > think we are pretty close to having the camera up and working at this
>> > > point,
>> > > but there are a few outstanding concerns.
>> >
>> > In the open-source community it is customary to discuss related topics
>> > and
>> > ask questions on respective mailing lists. So, I'll just give a very
>> > brief
>> > answer to this your mail, if you get more questions, please CC
>> >
>> > Linux Media Mailing List <linux-media@vger.kernel.org>
>> >
>> > in your naxt mail.
>> >
>> > > The basic objective is to interface a very dumb video camera that
>> > > connects
>> > > directly to CEU driver in the SH7724 processor. This camera needs no
>> > > control interface (the interface is actually RS232, which I plan to
>> > > drive
>> > > completely from user space), but has 8 bit parallel video
>> > > (Grayscale). The
>> > > camera driver was patterned after the the soc_camera driver, using
>> > > the
>> > > platform interface.
>> > > Our camera driver is mostly dummy code because of the simplicity.
>> >
>> > The current Linux kernel mainline implementation of the video capture
>> > function on several embedded SoCs, including CEU-based SuperH
>> > platforms,
>> > is a V4L2 driver stack, consisting of
>> >
>> > 1. a host driver (in this case sh_mobile_ceu_camera.c), using the
>> > soc-camera API to integrate itself into the V4L framework
>> > 2. the soc-camera core
>> > 3. client drivers, using the v4l2-subdev API for most V4L2
>> > communication,
>> > the mediabus API for pixel-format negotiation and a couple of
>> > soc-camera API extensions.
>> >
>> > So, all you need is use the existing sh_mobile_ceu_camera.c driver, the
>> > soc-camera framework and add a new driver for your camera-sensor, which
>> > in
>> > your case would be very simple, as you say. Just use any platform,
>> > currently in the mainline (e.g., ecovec) as an example for your
>> > platform
>> > bindings, and any soc-camera client driver (e.g., mt9m001, or ov772x)
>> > as a
>> > template for your camera driver.
>> >
>> > There is one point, where you will have to be careful: your camera is
>> > not
>> > using I2C. soc-camera should support this too, but it hasn't been
>> > tested
>> > or used for a while, so, something might have bitrotted there.
>> >
>> > So, I would suggest - write a driver, test it and post to the mailing
>> > list
>> > (you can CC me too, if you like). If you have any questions in the
>> > meantime - don't hesitate to ask, but please cc the list. Regarding
>> > your
>> > intension to control the sensor from the user-space, however simple
>> > that
>> > controlling might be, I would seriously consider writing a line
>> > discipline
>> > for it, which would allow you then use any standard V4L(2) application
>> > with your system. The only addition you would have is a tiny app, that
>> > would open the serial port, set the required line discipline for it and
>> > keep it open for the whole time your video driver is going to be used.
>> >
>> > Thanks
>> > Guennadi
>> >
>> > >
>> > > Questions:
>> > >
>> > > 1. Is soc_camera a reasonable driver to use as a starting point, or
>> > > is
>> > > there a better choice?
>> > >
>> > > 2. How is the CEU driver associated with the camera driver?
>> > >
>> > > 3. Is there a special bus type ID that needs to be claimed by the
>> > > camera
>> > > driver? Standard or custom?
>> > >
>> > > 4. In /arch/sh/boards/mach-ecovec24/setup.c -
>> > >
>> > > I made quite a few modifications. Pertaining to the new "testcam"
>> > > device,
>> > > I
>> > > have:
>> > >
>> > > static struct platform_device camera_devices[] = {
>> > > {
>> > > //.name = "soc-camera-pdrv",
>> > > .name = "testcam",
>> > > .id = 0,
>> > > .dev = {
>> > > .platform_data = &testcam_info2,
>> > > },
>> > > },
>> > > static struct testcam_camera_info testcam_info2 = {
>> > > .flags = 0,
>> > > .bus_param = 1,
>> > > };
>> > > The connection from here to our camera driver appears to depend on
>> > > the
>> > > "name" field of the platform_device structure:
>> > >
>> > > static struct platform_driver testcam_driver =
>> > > {
>> > > .driver = {
>> > > .name = "testcam",
>> > > },
>> > > .probe = testcam_probe,
>> > > .remove = testcam_remove,
>> > > };
>> > > In the "mt9t112" driver, it uses the "soc-camera-pdrv". Should I
>> > > have
>> > > emulated other functions from the SOC Camera driver such as the link
>> > > field
>> > > to get the device to connect? soc_camera_device_register in still
>> > > called
>> > > in
>> > > our driver's probe function, and in that way, the driver ends up
>> > > being
>> > > more
>> > > like "mx3_camera.c"
>> > >
>> > > Using the platform driver, the device registers
>> > > in "/sys/bus/platform/drivers/testcam". However, udev does not
>> > > populate a
>> > > "video0" entry under "/dev". What is special about the "mt9t112"
>> > > driver
>> > > that allows such a registration to take place?
>> > >
>> > > Any other insight regarding how the existing demo drivers were
>> > > architected
>> > > would be extremely helpful.
>> > >
>> > > Thank you,
>> > >
>> > > Charles Krebs, Embedded Solutions Developer
>> > > The Realtime Group
>> > >
>> >
>> > ---
>> > 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/
>
next prev parent reply other threads:[~2010-05-04 2:26 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <C5F5A45C8EB6446BA837800AC37D53A2@RSI45>
[not found] ` <h2laec7e5c31004071719m4a6551c7w8afdca6bdcf49eae@mail.gmail.com>
[not found] ` <Pine.LNX.4.64.1004080814370.4621@axis700.grange>
2010-04-14 1:54 ` CEU / Camera Driver Question Charles D. Krebs
2010-04-14 6:38 ` Guennadi Liakhovetski
2010-05-04 2:26 ` Charles D. Krebs [this message]
2010-05-04 6:43 ` Guennadi Liakhovetski
2010-05-14 20:10 ` Charles D. Krebs
2010-05-14 20:38 ` Guennadi Liakhovetski
2010-05-14 21:27 ` Charles D. Krebs
2010-05-15 3:10 ` Charles D. Krebs
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=F528C77ECD244EC8ADEEE5DEF504EB88@RSI45 \
--to=ckrebs@therealtimegroup.com \
--cc=g.liakhovetski@gmx.de \
--cc=linux-media@vger.kernel.org \
--cc=magnus.damm@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.