[PATCH RFC v4 01/14] [media] Add common video interfaces OF bindings documentation

Sylwester Nawrocki sylvester.nawrocki at gmail.com
Thu Jan 31 09:35:06 EST 2013


Hi,

On 01/30/2013 01:40 PM, Sylwester Nawrocki wrote:
> On 01/25/2013 02:52 AM, Laurent Pinchart wrote:
>>>>> +Data interfaces on all video devices are described by their child 'port'
>>>>> +nodes. Configuration of a port depends on other devices participating in
>>>>> +the data transfer and is described by 'endpoint' subnodes.
>>>>> +
>>>>> +dev {
>>>>> +	#address-cells =<1>;
>>>>> +	#size-cells =<0>;
>>>>> +	port at 0 {
>>>>> +		endpoint at 0 { ... };
>>>>> +		endpoint at 1 { ... };
>>>>> +	};
>>>>> +	port at 1 { ... };
>>>>> +};
>>>>> +
>>>>> +If a port can be configured to work with more than one other device on
>>>>> +the same bus, an 'endpoint' child node must be provided for each of
>>>>> +them. If more than one port is present in a device node or there is more
>>>>> +than one endpoint at a port, a common scheme, using '#address-cells',
>>>>> +'#size-cells' and 'reg' properties is used.
>>>>
>>>> Wouldn't this cause problems if the device has both video ports and a
>>>> child bus ? Using #address-cells and #size-cells for the video ports would
>>>> prevent the child bus from being handled in the usual way.
>>>
>>> Indeed, it looks like a serious issue in these bindings.
>>>
>>>> A possible solution would be to number ports with a dash instead of a @,
>>>> as done in pinctrl for instance. We would then get
>>>>
>>>> 	port-0 {
>>>> 		endpoint-0 { ... };
>>>> 		endpoint-1 { ... };
>>>> 	};
>>>> 	port-1 { ... };

Another possible solution could be putting the port nodes under
a ports node, for these cases where a device has a child bus.
Where there is no conflict, the ports node could be omitted for
simplicity. Does it sound reasonable ?

device {
	ports {
		#address-cells = <1>;
		#size-cells = <0>;
		port at 0 {	
			endpoint at 0 {
				reg = <0>;
			};
			endpoint at 1 { ... };
		};
		port at 1 { ... };
	};
};

> One problem here is that index of the port or the endpoint node can have
> random value and don't need to start with 0, which is the case for the pinctrl
> properties. It makes iterating over those nodes more difficult, instead
> of using standard functions like of_node_cmp() we would need to search for
> sub-strings in the node name.

--

Thanks,
Sylwester


More information about the devicetree-discuss mailing list