mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 10:49:33 +00:00
media: imx7: mipi csis: 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 mipi csi-2 receiver sink pad. Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com> Acked-by: Rui Miguel Silva <rmfrfs@gmail.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
8b4713c993
commit
6e996653e7
1 changed files with 23 additions and 0 deletions
|
@ -26,6 +26,7 @@
|
|||
|
||||
#include <media/v4l2-device.h>
|
||||
#include <media/v4l2-fwnode.h>
|
||||
#include <media/v4l2-mc.h>
|
||||
#include <media/v4l2-subdev.h>
|
||||
|
||||
#define CSIS_DRIVER_NAME "imx7-mipi-csis"
|
||||
|
@ -385,6 +386,12 @@ static int mipi_csis_dump_regs(struct csi_state *state)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static struct csi_state *
|
||||
mipi_notifier_to_csis_state(struct v4l2_async_notifier *n)
|
||||
{
|
||||
return container_of(n, struct csi_state, notifier);
|
||||
}
|
||||
|
||||
static struct csi_state *mipi_sd_to_csis_state(struct v4l2_subdev *sdev)
|
||||
{
|
||||
return container_of(sdev, struct csi_state, mipi_sd);
|
||||
|
@ -948,6 +955,20 @@ static int mipi_csis_parse_dt(struct platform_device *pdev,
|
|||
|
||||
static int mipi_csis_pm_resume(struct device *dev, bool runtime);
|
||||
|
||||
static int mipi_csis_notify_bound(struct v4l2_async_notifier *notifier,
|
||||
struct v4l2_subdev *sd,
|
||||
struct v4l2_async_subdev *asd)
|
||||
{
|
||||
struct csi_state *state = mipi_notifier_to_csis_state(notifier);
|
||||
struct media_pad *sink = &state->mipi_sd.entity.pads[CSIS_PAD_SINK];
|
||||
|
||||
return v4l2_create_fwnode_links_to_pad(sd, sink);
|
||||
}
|
||||
|
||||
static const struct v4l2_async_notifier_operations mipi_csis_notify_ops = {
|
||||
.bound = mipi_csis_notify_bound,
|
||||
};
|
||||
|
||||
static int mipi_csis_subdev_init(struct v4l2_subdev *mipi_sd,
|
||||
struct platform_device *pdev,
|
||||
const struct v4l2_subdev_ops *ops)
|
||||
|
@ -1016,6 +1037,8 @@ static int mipi_csis_async_register(struct csi_state *state)
|
|||
|
||||
fwnode_handle_put(ep);
|
||||
|
||||
state->notifier.ops = &mipi_csis_notify_ops;
|
||||
|
||||
ret = v4l2_async_subdev_notifier_register(&state->mipi_sd,
|
||||
&state->notifier);
|
||||
if (ret)
|
||||
|
|
Loading…
Reference in a new issue