media: pci: ipu3-cio2: Obtain remote pad from endpoint
Use the endpoint fwnode to find out the remote pad, instead of using the first source pad found. Also improve error messages. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Reviewed-by: Bingbu Cao <bingbu.cao@intel.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
parent
ec178312b8
commit
7ab9484332
|
@ -1417,31 +1417,27 @@ static int cio2_notifier_complete(struct v4l2_async_notifier *notifier)
|
|||
struct sensor_async_subdev *s_asd;
|
||||
struct v4l2_async_subdev *asd;
|
||||
struct cio2_queue *q;
|
||||
unsigned int pad;
|
||||
int ret;
|
||||
|
||||
list_for_each_entry(asd, &cio2->notifier.asd_list, asd_list) {
|
||||
s_asd = to_sensor_asd(asd);
|
||||
q = &cio2->queue[s_asd->csi2.port];
|
||||
|
||||
for (pad = 0; pad < q->sensor->entity.num_pads; pad++)
|
||||
if (q->sensor->entity.pads[pad].flags &
|
||||
MEDIA_PAD_FL_SOURCE)
|
||||
break;
|
||||
|
||||
if (pad == q->sensor->entity.num_pads) {
|
||||
dev_err(dev, "failed to find src pad for %s\n",
|
||||
q->sensor->name);
|
||||
return -ENXIO;
|
||||
ret = media_entity_get_fwnode_pad(&q->sensor->entity,
|
||||
s_asd->asd.match.fwnode,
|
||||
MEDIA_PAD_FL_SOURCE);
|
||||
if (ret < 0) {
|
||||
dev_err(dev, "no pad for endpoint %pfw (%d)\n",
|
||||
s_asd->asd.match.fwnode, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = media_create_pad_link(
|
||||
&q->sensor->entity, pad,
|
||||
&q->subdev.entity, CIO2_PAD_SINK,
|
||||
0);
|
||||
ret = media_create_pad_link(&q->sensor->entity, ret,
|
||||
&q->subdev.entity, CIO2_PAD_SINK,
|
||||
0);
|
||||
if (ret) {
|
||||
dev_err(dev, "failed to create link for %s\n",
|
||||
q->sensor->name);
|
||||
dev_err(dev, "failed to create link for %s (endpoint %pfw, error %d)\n",
|
||||
q->sensor->name, s_asd->asd.match.fwnode, ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue