Message ID | 20190805233505.21167-16-slongerbeam@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | media: imx: Create media links in bound notifiers | expand |
Hi Steve, On Tue 06 Aug 2019 at 00:34, Steve Longerbeam wrote: > 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: Steve Longerbeam <slongerbeam@gmail.com> > --- > drivers/staging/media/imx/imx7-media-csi.c | 24 ++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c > index a1c96c52a606..f71ac485f780 100644 > --- a/drivers/staging/media/imx/imx7-media-csi.c > +++ b/drivers/staging/media/imx/imx7-media-csi.c > @@ -196,6 +196,11 @@ struct imx7_csi { > struct completion last_eof_completion; > }; > > +static inline struct imx7_csi *notifier_to_dev(struct v4l2_async_notifier *n) > As the other one add the namespace for the function name: imx7_csi_notifier_to_dev other than this, looks good to me. Cheers, Rui > +{ > + return container_of(n, struct imx7_csi, notifier); > +} > + > static u32 imx7_csi_reg_read(struct imx7_csi *csi, unsigned int offset) > { > return readl(csi->regbase + offset); > @@ -1173,6 +1178,23 @@ static int imx7_csi_parse_endpoint(struct device *dev, > return fwnode_device_is_available(asd->match.fwnode) ? 0 : -EINVAL; > } > > +static int imx7_csi_notify_bound(struct v4l2_async_notifier *notifier, > + struct v4l2_subdev *sd, > + struct v4l2_async_subdev *asd) > +{ > + struct imx7_csi *csi = notifier_to_dev(notifier); > + struct media_pad *sink = &csi->sd.entity.pads[IMX7_CSI_PAD_SINK]; > + > + return media_create_fwnode_pad_links(sink, > + dev_fwnode(csi->sd.dev), > + &sd->entity, > + dev_fwnode(sd->dev), 0); > +} > + > +static const struct v4l2_async_notifier_operations imx7_csi_notify_ops = { > + .bound = imx7_csi_notify_bound, > +}; > + > static int imx7_csi_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > @@ -1253,6 +1275,8 @@ static int imx7_csi_probe(struct platform_device *pdev) > > v4l2_async_notifier_init(&csi->notifier); > > + csi->notifier.ops = &imx7_csi_notify_ops; > + > ret = v4l2_async_register_fwnode_subdev(&csi->sd, &csi->notifier, > sizeof(struct v4l2_async_subdev), > NULL, 0,
Hi Rui, On 9/2/19 2:38 AM, Rui Miguel Silva wrote: > Hi Steve, > On Tue 06 Aug 2019 at 00:34, Steve Longerbeam wrote: >> 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: Steve Longerbeam <slongerbeam@gmail.com> >> --- >> drivers/staging/media/imx/imx7-media-csi.c | 24 ++++++++++++++++++++++ >> 1 file changed, 24 insertions(+) >> >> diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c >> index a1c96c52a606..f71ac485f780 100644 >> --- a/drivers/staging/media/imx/imx7-media-csi.c >> +++ b/drivers/staging/media/imx/imx7-media-csi.c >> @@ -196,6 +196,11 @@ struct imx7_csi { >> struct completion last_eof_completion; >> }; >> >> +static inline struct imx7_csi *notifier_to_dev(struct v4l2_async_notifier *n) >> > As the other one add the namespace for the function name: > imx7_csi_notifier_to_dev > > other than this, looks good to me. Thanks for the review. I will make those changes in next rev. Steve > > >> +{ >> + return container_of(n, struct imx7_csi, notifier); >> +} >> + >> static u32 imx7_csi_reg_read(struct imx7_csi *csi, unsigned int offset) >> { >> return readl(csi->regbase + offset); >> @@ -1173,6 +1178,23 @@ static int imx7_csi_parse_endpoint(struct device *dev, >> return fwnode_device_is_available(asd->match.fwnode) ? 0 : -EINVAL; >> } >> >> +static int imx7_csi_notify_bound(struct v4l2_async_notifier *notifier, >> + struct v4l2_subdev *sd, >> + struct v4l2_async_subdev *asd) >> +{ >> + struct imx7_csi *csi = notifier_to_dev(notifier); >> + struct media_pad *sink = &csi->sd.entity.pads[IMX7_CSI_PAD_SINK]; >> + >> + return media_create_fwnode_pad_links(sink, >> + dev_fwnode(csi->sd.dev), >> + &sd->entity, >> + dev_fwnode(sd->dev), 0); >> +} >> + >> +static const struct v4l2_async_notifier_operations imx7_csi_notify_ops = { >> + .bound = imx7_csi_notify_bound, >> +}; >> + >> static int imx7_csi_probe(struct platform_device *pdev) >> { >> struct device *dev = &pdev->dev; >> @@ -1253,6 +1275,8 @@ static int imx7_csi_probe(struct platform_device *pdev) >> >> v4l2_async_notifier_init(&csi->notifier); >> >> + csi->notifier.ops = &imx7_csi_notify_ops; >> + >> ret = v4l2_async_register_fwnode_subdev(&csi->sd, &csi->notifier, >> sizeof(struct v4l2_async_subdev), >> NULL, 0,
diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c index a1c96c52a606..f71ac485f780 100644 --- a/drivers/staging/media/imx/imx7-media-csi.c +++ b/drivers/staging/media/imx/imx7-media-csi.c @@ -196,6 +196,11 @@ struct imx7_csi { struct completion last_eof_completion; }; +static inline struct 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) { return readl(csi->regbase + offset); @@ -1173,6 +1178,23 @@ static int imx7_csi_parse_endpoint(struct device *dev, return fwnode_device_is_available(asd->match.fwnode) ? 0 : -EINVAL; } +static int imx7_csi_notify_bound(struct v4l2_async_notifier *notifier, + struct v4l2_subdev *sd, + struct v4l2_async_subdev *asd) +{ + struct imx7_csi *csi = notifier_to_dev(notifier); + struct media_pad *sink = &csi->sd.entity.pads[IMX7_CSI_PAD_SINK]; + + return media_create_fwnode_pad_links(sink, + dev_fwnode(csi->sd.dev), + &sd->entity, + dev_fwnode(sd->dev), 0); +} + +static const struct v4l2_async_notifier_operations imx7_csi_notify_ops = { + .bound = imx7_csi_notify_bound, +}; + static int imx7_csi_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -1253,6 +1275,8 @@ static int imx7_csi_probe(struct platform_device *pdev) v4l2_async_notifier_init(&csi->notifier); + csi->notifier.ops = &imx7_csi_notify_ops; + ret = v4l2_async_register_fwnode_subdev(&csi->sd, &csi->notifier, sizeof(struct v4l2_async_subdev), NULL, 0,
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: Steve Longerbeam <slongerbeam@gmail.com> --- drivers/staging/media/imx/imx7-media-csi.c | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+)