Commit 94b99296 authored by Steve Longerbeam's avatar Steve Longerbeam Committed by Mauro Carvalho Chehab

media: imx7: csi: Create media links in bound notifier

Implement a notifier bound op to register media links from the remote
sub-device's source pad(s) to the CSI sink pad.
Signed-off-by: default avatarSteve Longerbeam <slongerbeam@gmail.com>
Reviewed-by: default avatarRui Miguel Silva <rmfrfs@gmail.com>
Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 6e996653
...@@ -196,6 +196,12 @@ struct imx7_csi { ...@@ -196,6 +196,12 @@ struct imx7_csi {
struct completion last_eof_completion; struct completion last_eof_completion;
}; };
static struct imx7_csi *
imx7_csi_notifier_to_dev(struct v4l2_async_notifier *n)
{
return container_of(n, struct imx7_csi, notifier);
}
static u32 imx7_csi_reg_read(struct imx7_csi *csi, unsigned int offset) static u32 imx7_csi_reg_read(struct imx7_csi *csi, unsigned int offset)
{ {
return readl(csi->regbase + offset); return readl(csi->regbase + offset);
...@@ -1204,6 +1210,20 @@ static const struct v4l2_subdev_internal_ops imx7_csi_internal_ops = { ...@@ -1204,6 +1210,20 @@ static const struct v4l2_subdev_internal_ops imx7_csi_internal_ops = {
.unregistered = imx7_csi_unregistered, .unregistered = imx7_csi_unregistered,
}; };
static int imx7_csi_notify_bound(struct v4l2_async_notifier *notifier,
struct v4l2_subdev *sd,
struct v4l2_async_subdev *asd)
{
struct imx7_csi *csi = imx7_csi_notifier_to_dev(notifier);
struct media_pad *sink = &csi->sd.entity.pads[IMX7_CSI_PAD_SINK];
return v4l2_create_fwnode_links_to_pad(sd, sink);
}
static const struct v4l2_async_notifier_operations imx7_csi_notify_ops = {
.bound = imx7_csi_notify_bound,
};
static int imx7_csi_async_register(struct imx7_csi *csi) static int imx7_csi_async_register(struct imx7_csi *csi)
{ {
struct v4l2_async_subdev *asd = NULL; struct v4l2_async_subdev *asd = NULL;
...@@ -1234,6 +1254,8 @@ static int imx7_csi_async_register(struct imx7_csi *csi) ...@@ -1234,6 +1254,8 @@ static int imx7_csi_async_register(struct imx7_csi *csi)
} }
} }
csi->notifier.ops = &imx7_csi_notify_ops;
ret = v4l2_async_subdev_notifier_register(&csi->sd, &csi->notifier); ret = v4l2_async_subdev_notifier_register(&csi->sd, &csi->notifier);
if (ret) if (ret)
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment