Re: Few Doubts on adding DT nodes for bridge driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Sylwester,

On Sun, Jul 21, 2013 at 2:54 PM, Sylwester Nawrocki
<sylvester.nawrocki@xxxxxxxxx> wrote:
> Hi Prabhakar,
>
>
> On 07/21/2013 08:20 AM, Prabhakar Lad wrote:
>>
>> Hi Sylwester, Guennadi,
>>
>> I am working on adding DT support for VPIF driver, initially to get
>> some hands dirty
>> on working on Capture driver and later will move ahead to add for the
>> display.
>> I have added asynchronous probing support for the both the bridge and
>> subdevs
>> which works perfectly like on a charm with passing pdata as usually,
>> but doing the
>> same with DT I have few doubts on building the pdata in the bridge driver.
>>
>>
>> This is a snippet of my subdes in i2c node:-
>>
>> i2c0: i2c@1c22000 {
>>                         status = "okay";
>>                         clock-frequency =<100000>;
>>                         pinctrl-names = "default";
>>                         pinctrl-0 =<&i2c0_pins>;
>>
>>                         tvp514x@5c {
>>                                 compatible = "ti,tvp5146";
>>                                 reg =<0x5c>;
>>
>>                                 port {
>>                                         tvp514x_1: endpoint {
>>                                                 remote-endpoint
>> =<&vpif_capture0_1>;
>>                                                 hsync-active =<1>;
>>                                                 vsync-active =<1>;
>>                                                 pclk-sample =<0>;
>>                                         };
>>                                 };
>>                         };
>>
>>                         tvp514x@5d {
>>                                 compatible = "ti,tvp5146";
>>                                 reg =<0x5d>;
>>
>>                                 port {
>>                                         tvp514x_2: endpoint {
>>                                                 remote-endpoint
>> =<&vpif_capture0_0>;
>>                                                 hsync-active =<1>;
>>                                                 vsync-active =<1>;
>>                                                 pclk-sample =<0>;
>>                                         };
>>                                 };
>>                         };
>>                   ......
>>                 };
>>
>> Here tvp514x are the subdevs the platform has two of them one at 0x5c and
>> 0x5d,
>> so I have added two nodes for them.
>>
>> Following is DT node for the bridge driver:-
>>
>>         vpif_capture@0 {
>>                 status = "okay";
>>                 port {
>
>
> You should also have:
>                         #address-cells = <1>;
>                         #size-cells = <0>;
>
> here or in vpif_capture node.
>
Ok

>
>>                         vpif_capture0_1: endpoint@1 {
>>                                 remote =<&tvp514x_1>;
>>                         };
>>                         vpif_capture0_0: endpoint@0 {
>>                                 remote =<&tvp514x_2>;
>>                         };
>>                 };
>>         };
>
>
> Are tvp514x@5c and tvp514x@5d decoders really connected to same bus, or are
> they on separate busses ? If the latter then you should have 2 'port' nodes.
> And in such case don't you need to identify to which
>
The tvp514x@5c and tvp514x@5d are connected to the same bus.

>
>> I have added two endpoints for the bridge driver. In the bridge driver
>> to build the pdata from DT node,I do the following,
>>
>> np = v4l2_of_get_next_endpoint(pdev->dev.of_node, NULL);
>>
>> The above will give the first endpoint ie, endpoint@1
>>  From here is it possible to get the tvp514x_1 endpoint node and the
>> parent of it?
>
>
> Isn't v4l2_of_get_remote_port_parent() what you need ?
>
Al rite I'll check on it.

>
>> so that I  build the asynchronous subdev list for the bridge driver.
>>
>>
>> +static struct v4l2_async_subdev tvp1_sd = {
>> +       .hw = {
>
>
> This doesn't match the current struct v4l2_async_subdev data strcucture,
> there is no 'hw' field now.
>
>
Ah my bad pasted a wrong one earlier one :)

>> +               .bus_type = V4L2_ASYNC_BUS_I2C,
>> +               .match.i2c = {
>> +                       .adapter_id = 1,
>> +                       .address = 0x5c,
>> +               },
>> +       },
>> +};
>>
>> For building the asd subdev list in the bridge driver I can get the
>> address easily,
>> how do I get the adapter_id ? should this be a property subdev ? And also
>> same
>> with bustype.
>
>
> I had been working on the async subdev registration support in the
> exynos4-is
> driver this week and I have a few patches for v4l2-async.
> What those patches do is renaming V4L2_ASYNC_BUS_* to V4L2_ASYNC_MATCH_*,
> adding V4L2_ASYNC_MATCH_OF and a corresponding match_of callback like:
>
> static bool match_of(struct device *dev, struct v4l2_async_subdev *asd)
> {
>         return dev->of_node == asd->match.of.node;
> }
>
> Then a driver registering the notifier, after parsing the device tree, can
> just pass a list of DT node pointers corresponding to its subdevs.
>
> All this could also be achieved with V4L2_ASYNC_BUS_CUSTOM, but I think it's
> better to make it as simple as possible for drivers by extending the core
> a little.
>
> I'm going to post those patches as RFC on Monday.
>
That's cool, It will be very useful for me to then I'll be waiting for
it then :-)

Regards,
--Prabhakar Lad
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux