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(+) -- 2.25.1