pipeline: imx8-isi: Dynamically compute crossbar subdevice's first source.

So far, imx8-isi pipeline supports _symetrical_ crossbar, with same
amount of sink and source pads.

But for some other imx SoCs, such as i.MX8QM or i.MX95, crossbar is not
symetric anymore.

Since each crossbar source is already captured as a pipes_ vector entry,
we use pipes_ vector's size to compute 1st source index.

  "1st source index" = "total number of crossbar pads" - pipes_.count()

Signed-off-by: Antoine Bouyer <antoine.bouyer@nxp.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Antoine Bouyer 2025-06-06 09:34:59 +02:00 committed by Laurent Pinchart
parent 5621ac27a2
commit d3f3b95b64

View file

@ -820,7 +820,7 @@ int PipelineHandlerISI::configure(Camera *camera, CameraConfiguration *c)
* routing table instead of resetting it.
*/
V4L2Subdevice::Routing routing = {};
unsigned int xbarFirstSource = crossbar_->entity()->pads().size() / 2 + 1;
unsigned int xbarFirstSource = crossbar_->entity()->pads().size() - pipes_.size();
for (const auto &[idx, config] : utils::enumerate(*c)) {
uint32_t sourcePad = xbarFirstSource + idx;