Hi Sakari, Thank you for the patch. On Thu, May 25, 2023 at 12:16:07PM +0300, Sakari Ailus wrote: > Register V4L2 device before initialising the notifier. This way the device > is available to the notifier from the beginning which makes it possible to > use it for debug prints. > > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> > --- > drivers/media/platform/intel/pxa_camera.c | 19 ++++++++++--------- > 1 file changed, 10 insertions(+), 9 deletions(-) > > diff --git a/drivers/media/platform/intel/pxa_camera.c b/drivers/media/platform/intel/pxa_camera.c > index dad5e8d97683e..5df93fd4ff04b 100644 > --- a/drivers/media/platform/intel/pxa_camera.c > +++ b/drivers/media/platform/intel/pxa_camera.c > @@ -2307,6 +2307,10 @@ static int pxa_camera_probe(struct platform_device *pdev) > return err; > } > > + err = v4l2_device_register(&pdev->dev, &pcdev->v4l2_dev); > + if (err) > + return err; > + > v4l2_async_nf_init(&pcdev->notifier); > pcdev->res = res; > pcdev->pdata = pdev->dev.platform_data; > @@ -2324,10 +2328,10 @@ static int pxa_camera_probe(struct platform_device *pdev) > } else if (pdev->dev.of_node) { > err = pxa_camera_pdata_from_dt(&pdev->dev, pcdev); > } else { > - return -ENODEV; > + err = -ENODEV; > } > if (err < 0) > - return err; > + goto exit_v4l2_device_unregister; > > if (!(pcdev->platform_flags & (PXA_CAMERA_DATAWIDTH_8 | > PXA_CAMERA_DATAWIDTH_9 | PXA_CAMERA_DATAWIDTH_10))) { > @@ -2393,22 +2397,17 @@ static int pxa_camera_probe(struct platform_device *pdev) > pxa_camera_activate(pcdev); > > platform_set_drvdata(pdev, pcdev); > - err = v4l2_device_register(&pdev->dev, &pcdev->v4l2_dev); > - if (err) > - goto exit_deactivate; > > err = pxa_camera_init_videobuf2(pcdev); > if (err) > - goto exit_v4l2_device_unregister; > + goto exit_deactivate; > > pcdev->notifier.ops = &pxa_camera_sensor_ops; > err = v4l2_async_nf_register(&pcdev->v4l2_dev, &pcdev->notifier); The v4l2_device isn't made available to the notifier before this call, so why is it necessary to register it earlier ? > if (err) > - goto exit_v4l2_device_unregister; > + goto exit_deactivate; > > return 0; > -exit_v4l2_device_unregister: > - v4l2_device_unregister(&pcdev->v4l2_dev); > exit_deactivate: > pxa_camera_deactivate(pcdev); > tasklet_kill(&pcdev->task_eof); > @@ -2420,6 +2419,8 @@ static int pxa_camera_probe(struct platform_device *pdev) > dma_release_channel(pcdev->dma_chans[0]); > exit_notifier_cleanup: > v4l2_async_nf_cleanup(&pcdev->notifier); > +exit_v4l2_device_unregister: > + v4l2_device_unregister(&pcdev->v4l2_dev); > return err; > } > -- Regards, Laurent Pinchart