Hi Hans, On Sat, Mar 11, 2017 at 12:23:19PM +0100, Hans Verkuil wrote: > From: Hans Verkuil <hans.verkuil@xxxxxxxxx> > > This patch converts the atmel-isi driver from a soc-camera driver to a driver > that is stand-alone. > > Signed-off-by: Hans Verkuil <hans.verkuil@xxxxxxxxx> > --- > drivers/media/platform/soc_camera/Kconfig | 3 +- > drivers/media/platform/soc_camera/atmel-isi.c | 1209 +++++++++++++++---------- > 2 files changed, 714 insertions(+), 498 deletions(-) > > diff --git a/drivers/media/platform/soc_camera/Kconfig b/drivers/media/platform/soc_camera/Kconfig > index 86d74788544f..a37ec91b026e 100644 > --- a/drivers/media/platform/soc_camera/Kconfig > +++ b/drivers/media/platform/soc_camera/Kconfig > @@ -29,9 +29,8 @@ config VIDEO_SH_MOBILE_CEU > > config VIDEO_ATMEL_ISI > tristate "ATMEL Image Sensor Interface (ISI) support" > - depends on VIDEO_DEV && SOC_CAMERA > + depends on VIDEO_V4L2 && OF && HAS_DMA > depends on ARCH_AT91 || COMPILE_TEST > - depends on HAS_DMA > select VIDEOBUF2_DMA_CONTIG > ---help--- > This module makes the ATMEL Image Sensor Interface available > diff --git a/drivers/media/platform/soc_camera/atmel-isi.c b/drivers/media/platform/soc_camera/atmel-isi.c > index 46de657c3e6d..a6d60c2e207d 100644 > --- a/drivers/media/platform/soc_camera/atmel-isi.c > +++ b/drivers/media/platform/soc_camera/atmel-isi.c ... > +static int isi_graph_init(struct atmel_isi *isi) > +{ > + struct v4l2_async_subdev **subdevs = NULL; > + int ret; > + > + /* Parse the graph to extract a list of subdevice DT nodes. */ > + ret = isi_graph_parse(isi, isi->dev->of_node); > + if (ret < 0) { > + dev_err(isi->dev, "Graph parsing failed\n"); > + goto done; > + } > + > + if (!ret) { > + dev_err(isi->dev, "No subdev found in graph\n"); > + goto done; > + } > + > + /* Register the subdevices notifier. */ > + subdevs = devm_kzalloc(isi->dev, sizeof(*subdevs), GFP_KERNEL); > + if (subdevs == NULL) { > + ret = -ENOMEM; > + goto done; > + } > + > + subdevs[0] = &isi->entity.asd; > + > + isi->notifier.subdevs = subdevs; > + isi->notifier.num_subdevs = 1; > + isi->notifier.bound = isi_graph_notify_bound; > + isi->notifier.unbind = isi_graph_notify_unbind; > + isi->notifier.complete = isi_graph_notify_complete; > + > + ret = v4l2_async_notifier_register(&isi->v4l2_dev, &isi->notifier); > + if (ret < 0) { > + dev_err(isi->dev, "Notifier registration failed\n"); > + goto done; > + } > + > + ret = 0; You can replace this by return 0; And remove the if () below. > + > +done: > + if (ret < 0) { > + v4l2_async_notifier_unregister(&isi->notifier); > + of_node_put(isi->entity.node); > + } > + > + return ret; > +} > + Acked-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> -- Regards, Sakari Ailus e-mail: sakari.ailus@xxxxxx XMPP: sailus@xxxxxxxxxxxxxx