mbox series

[RFC,0/2] Introduce ancillary links

Message ID 20211126001603.41148-1-djrscally@gmail.com (mailing list archive)
Headers show
Series Introduce ancillary links | expand

Message

Daniel Scally Nov. 26, 2021, 12:16 a.m. UTC
Hello all

This series is not yet ready to merge, but I wanted to share it as I know some
other folks are working in similar areas at the moment (and I am including the
libcamera devel list for the same reason)

At present there's no means in the kernel of describing the supporting
relationship between subdevices that work together to form an effective single
unit - the type example in this case being a camera sensor and its
corresponding vcm. To attempt to solve that, this series adds a new type of
media link called MEDIA_LNK_FL_ANCILLARY_LINK, which connects two instances of
struct media_entity. Further work would be needed to document it properly, and
there may be ramifications within the v4l2-core which I have not yet discovered
(a lot of places seem to assume that media_entity->links means pad-2-pad links,
so some extra work might be needed to validate the link type before doing any
thing to them).

The mechanism of connection I have modelled as a notifier and async subdev,
which seemed the best route since sensor drivers already typically will call
v4l2_async_register_subdev_sensor() on probe, and that function already looks
for a reference to a firmware node with the reference named "lens-focus". To
avoid boilerplate in the sensor drivers, I added some new functions in
v4l2-async that are called in v4l2_async_match_notify() to create the ancillary
links - checking the entity.function of both notifier and subdev to make sure
that's appropriate. I haven't gone further than that yet, but I suspect we could
cut down on code elsewhere by, for example, also creating pad-to-pad links in
the same place.

Thoughts and comments very welcome :)

Dan

Daniel Scally (2):
  media: entity: Add support for ancillary links
  media: v4l2-async: Create links during v4l2_async_match_notify()

 drivers/media/mc/mc-entity.c         | 30 ++++++++++++++++
 drivers/media/v4l2-core/v4l2-async.c | 51 ++++++++++++++++++++++++++++
 include/media/media-entity.h         | 30 ++++++++++++++++
 include/uapi/linux/media.h           |  1 +
 4 files changed, 112 insertions(+)

Comments

Laurent Pinchart Nov. 26, 2021, 2:59 a.m. UTC | #1
On Fri, Nov 26, 2021 at 12:16:01AM +0000, Daniel Scally wrote:
> Hello all
> 
> This series is not yet ready to merge, but I wanted to share it as I know some
> other folks are working in similar areas at the moment (and I am including the
> libcamera devel list for the same reason)

Seems you forgot to CC libcamera-devel :-) Let's fix that on v2.

> At present there's no means in the kernel of describing the supporting
> relationship between subdevices that work together to form an effective single
> unit - the type example in this case being a camera sensor and its
> corresponding vcm. To attempt to solve that, this series adds a new type of
> media link called MEDIA_LNK_FL_ANCILLARY_LINK, which connects two instances of
> struct media_entity. Further work would be needed to document it properly, and
> there may be ramifications within the v4l2-core which I have not yet discovered
> (a lot of places seem to assume that media_entity->links means pad-2-pad links,
> so some extra work might be needed to validate the link type before doing any
> thing to them).
> 
> The mechanism of connection I have modelled as a notifier and async subdev,
> which seemed the best route since sensor drivers already typically will call
> v4l2_async_register_subdev_sensor() on probe, and that function already looks
> for a reference to a firmware node with the reference named "lens-focus". To
> avoid boilerplate in the sensor drivers, I added some new functions in
> v4l2-async that are called in v4l2_async_match_notify() to create the ancillary
> links - checking the entity.function of both notifier and subdev to make sure
> that's appropriate. I haven't gone further than that yet, but I suspect we could
> cut down on code elsewhere by, for example, also creating pad-to-pad links in
> the same place.
> 
> Thoughts and comments very welcome :)
> 
> Dan
> 
> Daniel Scally (2):
>   media: entity: Add support for ancillary links
>   media: v4l2-async: Create links during v4l2_async_match_notify()
> 
>  drivers/media/mc/mc-entity.c         | 30 ++++++++++++++++
>  drivers/media/v4l2-core/v4l2-async.c | 51 ++++++++++++++++++++++++++++
>  include/media/media-entity.h         | 30 ++++++++++++++++
>  include/uapi/linux/media.h           |  1 +
>  4 files changed, 112 insertions(+)
>
Daniel Scally Nov. 26, 2021, 7:58 a.m. UTC | #2
On 26/11/2021 02:59, Laurent Pinchart wrote:
> On Fri, Nov 26, 2021 at 12:16:01AM +0000, Daniel Scally wrote:
>> Hello all
>>
>> This series is not yet ready to merge, but I wanted to share it as I know some
>> other folks are working in similar areas at the moment (and I am including the
>> libcamera devel list for the same reason)
> Seems you forgot to CC libcamera-devel :-) Let's fix that on v2.


Argh! Sorry, will do

>> At present there's no means in the kernel of describing the supporting
>> relationship between subdevices that work together to form an effective single
>> unit - the type example in this case being a camera sensor and its
>> corresponding vcm. To attempt to solve that, this series adds a new type of
>> media link called MEDIA_LNK_FL_ANCILLARY_LINK, which connects two instances of
>> struct media_entity. Further work would be needed to document it properly, and
>> there may be ramifications within the v4l2-core which I have not yet discovered
>> (a lot of places seem to assume that media_entity->links means pad-2-pad links,
>> so some extra work might be needed to validate the link type before doing any
>> thing to them).
>>
>> The mechanism of connection I have modelled as a notifier and async subdev,
>> which seemed the best route since sensor drivers already typically will call
>> v4l2_async_register_subdev_sensor() on probe, and that function already looks
>> for a reference to a firmware node with the reference named "lens-focus". To
>> avoid boilerplate in the sensor drivers, I added some new functions in
>> v4l2-async that are called in v4l2_async_match_notify() to create the ancillary
>> links - checking the entity.function of both notifier and subdev to make sure
>> that's appropriate. I haven't gone further than that yet, but I suspect we could
>> cut down on code elsewhere by, for example, also creating pad-to-pad links in
>> the same place.
>>
>> Thoughts and comments very welcome :)
>>
>> Dan
>>
>> Daniel Scally (2):
>>   media: entity: Add support for ancillary links
>>   media: v4l2-async: Create links during v4l2_async_match_notify()
>>
>>  drivers/media/mc/mc-entity.c         | 30 ++++++++++++++++
>>  drivers/media/v4l2-core/v4l2-async.c | 51 ++++++++++++++++++++++++++++
>>  include/media/media-entity.h         | 30 ++++++++++++++++
>>  include/uapi/linux/media.h           |  1 +
>>  4 files changed, 112 insertions(+)
>>
Hans de Goede Nov. 26, 2021, 9:41 a.m. UTC | #3
Hi Daniel,

On 11/26/21 08:58, Daniel Scally wrote:
> 
> On 26/11/2021 02:59, Laurent Pinchart wrote:
>> On Fri, Nov 26, 2021 at 12:16:01AM +0000, Daniel Scally wrote:
>>> Hello all
>>>
>>> This series is not yet ready to merge, but I wanted to share it as I know some
>>> other folks are working in similar areas at the moment (and I am including the
>>> libcamera devel list for the same reason)
>> Seems you forgot to CC libcamera-devel :-) Let's fix that on v2.
> 
> 
> Argh! Sorry, will do

First of all, thank you very much for this RFC series as well
as for the matching libcamera series.

For v2 of the series can you please also add Kate Hsuan to the
Cc (I've added there to the To of this email). Kate is a colleague
of me working on adding auto-focus support for IPU3 based setups
to libcamera.

Regards,

Hans
Daniel Scally Nov. 26, 2021, 9:46 a.m. UTC | #4
Hi Hans

On 26/11/2021 09:41, Hans de Goede wrote:
> Hi Daniel,
>
> On 11/26/21 08:58, Daniel Scally wrote:
>> On 26/11/2021 02:59, Laurent Pinchart wrote:
>>> On Fri, Nov 26, 2021 at 12:16:01AM +0000, Daniel Scally wrote:
>>>> Hello all
>>>>
>>>> This series is not yet ready to merge, but I wanted to share it as I know some
>>>> other folks are working in similar areas at the moment (and I am including the
>>>> libcamera devel list for the same reason)
>>> Seems you forgot to CC libcamera-devel :-) Let's fix that on v2.
>>
>> Argh! Sorry, will do
> First of all, thank you very much for this RFC series as well
> as for the matching libcamera series.


My pleasure

> For v2 of the series can you please also add Kate Hsuan to the
> Cc (I've added there to the To of this email). Kate is a colleague
> of me working on adding auto-focus support for IPU3 based setups
> to libcamera.


Oops again; I had intended to do that as well...sorry Kate! I'll be more
careful with the CC list next time

>
> Regards,
>
> Hans
>
Kate Hsuan Nov. 26, 2021, 9:53 a.m. UTC | #5
On Fri, Nov 26, 2021 at 5:46 PM Daniel Scally <djrscally@gmail.com> wrote:
>
> Hi Hans
>
> On 26/11/2021 09:41, Hans de Goede wrote:
> > Hi Daniel,
> >
> > On 11/26/21 08:58, Daniel Scally wrote:
> >> On 26/11/2021 02:59, Laurent Pinchart wrote:
> >>> On Fri, Nov 26, 2021 at 12:16:01AM +0000, Daniel Scally wrote:
> >>>> Hello all
> >>>>
> >>>> This series is not yet ready to merge, but I wanted to share it as I know some
> >>>> other folks are working in similar areas at the moment (and I am including the
> >>>> libcamera devel list for the same reason)
> >>> Seems you forgot to CC libcamera-devel :-) Let's fix that on v2.
> >>
> >> Argh! Sorry, will do
> > First of all, thank you very much for this RFC series as well
> > as for the matching libcamera series.
>
>
> My pleasure
>
> > For v2 of the series can you please also add Kate Hsuan to the
> > Cc (I've added there to the To of this email). Kate is a colleague
> > of me working on adding auto-focus support for IPU3 based setups
> > to libcamera.
>
>
> Oops again; I had intended to do that as well...sorry Kate! I'll be more
> careful with the CC list next time

It's OK. Thank you :)

>
> >
> > Regards,
> >
> > Hans
> >
>