[PATCH] media: add V4L2 DT binding documentation

Guennadi Liakhovetski g.liakhovetski at gmx.de
Wed Sep 12 17:17:16 EDT 2012


On Wed, 12 Sep 2012, Stephen Warren wrote:

> On 09/12/2012 01:28 PM, Guennadi Liakhovetski wrote:
> > Hi Stephen
> > 
> > On Wed, 12 Sep 2012, Stephen Warren wrote:
> > 
> >> On 09/11/2012 09:51 AM, Guennadi Liakhovetski wrote:
> >>> This patch adds a document, describing common V4L2 device tree bindings.
> >>>
> >>> Co-authored-by: Sylwester Nawrocki <s.nawrocki at samsung.com>
> >>> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski at gmx.de>
> >>
> >> Overall, I think this looks pretty reasonable, so:
> ...
> >>
> >>> +			clock-frequency = <50000000>;	/* max clock frequency */
> >>> +			clock-output-names = "mclk";
> >>> +		};
> >>> +
> >>> +		port {
> >> ...
> >>> +			ceu0_0: link at 0 {
> >>> +				reg = <0>;
> >>> +				remote = <&csi2_2>;
> >>> +				immutable;
> >>
> >> Did we decide "immutable" was actually needed? Presumably the driver for
> >> the HW in question knows the HW isn't configurable, and would simply not
> >> attempt to apply any configuration even if the .dts author erroneously
> >> provided some?
> > 
> > Well, I've been thinking about this today. I think, bridge drivers will 
> 
> Sorry, I'm not sure what a "bridge" driver is; is it any v4l2 device?

Right, sorry for not explaining. We call a bridge a device, that's sitting 
on a bus like USB, PCI or - as in the SoC case - on an internal one and 
interfacing to, say, a video sensor or a TV decoder or encoder. In the SoC 
case most primitive bridges just take data from video sensors attached 
over, say, an 8-bit parallel bus and DMA it into RAM buffers. Some bridges 
can also perform some data processing.

> > call centrally provided helper functions to enumerate links inside ports. 
> 
> Presumably a given driver would only parse the ports/links of its own DT
> node, and hence would be able to provide a parameter to any helper
> function that indicated the same information that "immutable" would?

Well, let's drop "immutable" for now, since we don't have a good idea 
whether we need it or not. If we do need it, we'll add it later, removing 
a part of a standart is more difficult.

> > While doing that they will want to differentiate between links to external 
> > devices with explicit configuration, and links to internal devices, whose 
> > configuration drivers might be able to figure out themselves. How should a 
> > driver find out what device this link is pointing to? Should it follow the 
> > "remote" phandle and then check the "compatible" property? The word 
> > "immutable" is a hint, that this is a link to an internal device, but it 
> > might either be unneeded or be transformed into something more 
> > informative.
> 
> I would imagine that a given driver would only ever parse its own DT
> node; the far end of any link is purely the domain of the other driver.
> I thought that each link node would contain whatever hsync-active,
> data-lanes, ... properties that were needed to configure the local device?

I think, information needed to configure a bridge device to connect to a 
camera sensor, like sync polarities etc., might not be sufficient to 
configure it to interface to an SoC internal unit, like a MIPI CSI-2 
interface. I can see 2 possibilities to recognise, that this link is going 
to an internal device: (1) follow the remote phandle, (2) use a 
vendor-specific property to specify the remote device type. I guess, you'd 
prefer the latter?

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/



More information about the linux-arm-kernel mailing list