diff mbox series

[RESEND,v3,25/32] media: marvell: cafe: Register V4L2 device earlier

Message ID 20230525091615.2324824-26-sakari.ailus@linux.intel.com (mailing list archive)
State New, archived
Headers show
Series Separate links and async sub-devices | expand

Commit Message

Sakari Ailus May 25, 2023, 9:16 a.m. UTC
Register V4L2 device before the async notifier so the struct device will
be available for the notifier which makes it possible to use it for debug
prints.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/media/platform/marvell/cafe-driver.c | 11 +++++++++--
 drivers/media/platform/marvell/mcam-core.c   |  6 ------
 2 files changed, 9 insertions(+), 8 deletions(-)

Comments

Laurent Pinchart May 30, 2023, 5 a.m. UTC | #1
Hi Sakari,

Thank you for the patch.

On Thu, May 25, 2023 at 12:16:08PM +0300, Sakari Ailus wrote:
> Register V4L2 device before the async notifier so the struct device will
> be available for the notifier which makes it possible to use it for debug
> prints.

Please record in the commit message that this is to prepare for patch
31/32. Same comment for other patches in this series.

> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
>  drivers/media/platform/marvell/cafe-driver.c | 11 +++++++++--
>  drivers/media/platform/marvell/mcam-core.c   |  6 ------
>  2 files changed, 9 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/media/platform/marvell/cafe-driver.c b/drivers/media/platform/marvell/cafe-driver.c
> index dd1bba70bd791..fbfbb9f67ddfc 100644
> --- a/drivers/media/platform/marvell/cafe-driver.c
> +++ b/drivers/media/platform/marvell/cafe-driver.c
> @@ -536,6 +536,10 @@ static int cafe_pci_probe(struct pci_dev *pdev,
>  	if (ret)
>  		goto out_pdown;
>  
> +	ret = v4l2_device_register(mcam->dev, &mcam->v4l2_dev);
> +	if (ret)
> +		goto out_smbus_shutdown;
> +
>  	v4l2_async_nf_init(&mcam->notifier);
>  
>  	asd = v4l2_async_nf_add_i2c(&mcam->notifier,
> @@ -544,12 +548,12 @@ static int cafe_pci_probe(struct pci_dev *pdev,
>  				    struct v4l2_async_connection);
>  	if (IS_ERR(asd)) {
>  		ret = PTR_ERR(asd);
> -		goto out_smbus_shutdown;
> +		goto out_v4l2_device_unregister;
>  	}
>  
>  	ret = mccic_register(mcam);
>  	if (ret)
> -		goto out_smbus_shutdown;
> +		goto out_v4l2_device_unregister;
>  
>  	clkdev_create(mcam->mclk, "xclk", "%d-%04x",
>  		i2c_adapter_id(cam->i2c_adapter), ov7670_info.addr);
> @@ -565,6 +569,8 @@ static int cafe_pci_probe(struct pci_dev *pdev,
>  
>  out_mccic_shutdown:
>  	mccic_shutdown(mcam);
> +out_v4l2_device_unregister:
> +	v4l2_device_unregister(&mcam->v4l2_dev);
>  out_smbus_shutdown:
>  	cafe_smbus_shutdown(cam);
>  out_pdown:
> @@ -587,6 +593,7 @@ static int cafe_pci_probe(struct pci_dev *pdev,
>  static void cafe_shutdown(struct cafe_camera *cam)
>  {
>  	mccic_shutdown(&cam->mcam);
> +	v4l2_device_unregister(&cam->mcam.v4l2_dev);
>  	cafe_smbus_shutdown(cam);
>  	free_irq(cam->pdev->irq, cam);
>  	pci_iounmap(cam->pdev, cam->mcam.regs);
> diff --git a/drivers/media/platform/marvell/mcam-core.c b/drivers/media/platform/marvell/mcam-core.c
> index 3cee6d6b83fa9..bcfcecdb03ea2 100644
> --- a/drivers/media/platform/marvell/mcam-core.c
> +++ b/drivers/media/platform/marvell/mcam-core.c
> @@ -1866,10 +1866,6 @@ int mccic_register(struct mcam_camera *cam)
>  	/*
>  	 * Register with V4L
>  	 */

The comment doesn't seem valid anymore.

> -	ret = v4l2_device_register(cam->dev, &cam->v4l2_dev);
> -	if (ret)
> -		goto out;
> -
>  	mutex_init(&cam->s_mutex);
>  	cam->state = S_NOTREADY;
>  	mcam_set_config_needed(cam, 1);
> @@ -1915,7 +1911,6 @@ int mccic_register(struct mcam_camera *cam)
>  
>  out:
>  	v4l2_async_nf_unregister(&cam->notifier);
> -	v4l2_device_unregister(&cam->v4l2_dev);
>  	v4l2_async_nf_cleanup(&cam->notifier);
>  	return ret;
>  }
> @@ -1937,7 +1932,6 @@ void mccic_shutdown(struct mcam_camera *cam)
>  		mcam_free_dma_bufs(cam);
>  	v4l2_ctrl_handler_free(&cam->ctrl_handler);
>  	v4l2_async_nf_unregister(&cam->notifier);
> -	v4l2_device_unregister(&cam->v4l2_dev);
>  	v4l2_async_nf_cleanup(&cam->notifier);
>  }
>  EXPORT_SYMBOL_GPL(mccic_shutdown);
Sakari Ailus June 20, 2023, 9:43 a.m. UTC | #2
Hi Laurent,

On Tue, May 30, 2023 at 08:00:33AM +0300, Laurent Pinchart wrote:
> Hi Sakari,
> 
> Thank you for the patch.
> 
> On Thu, May 25, 2023 at 12:16:08PM +0300, Sakari Ailus wrote:
> > Register V4L2 device before the async notifier so the struct device will
> > be available for the notifier which makes it possible to use it for debug
> > prints.
> 
> Please record in the commit message that this is to prepare for patch
> 31/32. Same comment for other patches in this series.

I've already added the text that tells the purpose is to make future debug
prints possible (with the device). Would you like to have the patch subject
here or something else?

> 
> > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > ---
> >  drivers/media/platform/marvell/cafe-driver.c | 11 +++++++++--
> >  drivers/media/platform/marvell/mcam-core.c   |  6 ------
> >  2 files changed, 9 insertions(+), 8 deletions(-)
> > 
> > diff --git a/drivers/media/platform/marvell/cafe-driver.c b/drivers/media/platform/marvell/cafe-driver.c
> > index dd1bba70bd791..fbfbb9f67ddfc 100644
> > --- a/drivers/media/platform/marvell/cafe-driver.c
> > +++ b/drivers/media/platform/marvell/cafe-driver.c
> > @@ -536,6 +536,10 @@ static int cafe_pci_probe(struct pci_dev *pdev,
> >  	if (ret)
> >  		goto out_pdown;
> >  
> > +	ret = v4l2_device_register(mcam->dev, &mcam->v4l2_dev);
> > +	if (ret)
> > +		goto out_smbus_shutdown;
> > +
> >  	v4l2_async_nf_init(&mcam->notifier);
> >  
> >  	asd = v4l2_async_nf_add_i2c(&mcam->notifier,
> > @@ -544,12 +548,12 @@ static int cafe_pci_probe(struct pci_dev *pdev,
> >  				    struct v4l2_async_connection);
> >  	if (IS_ERR(asd)) {
> >  		ret = PTR_ERR(asd);
> > -		goto out_smbus_shutdown;
> > +		goto out_v4l2_device_unregister;
> >  	}
> >  
> >  	ret = mccic_register(mcam);
> >  	if (ret)
> > -		goto out_smbus_shutdown;
> > +		goto out_v4l2_device_unregister;
> >  
> >  	clkdev_create(mcam->mclk, "xclk", "%d-%04x",
> >  		i2c_adapter_id(cam->i2c_adapter), ov7670_info.addr);
> > @@ -565,6 +569,8 @@ static int cafe_pci_probe(struct pci_dev *pdev,
> >  
> >  out_mccic_shutdown:
> >  	mccic_shutdown(mcam);
> > +out_v4l2_device_unregister:
> > +	v4l2_device_unregister(&mcam->v4l2_dev);
> >  out_smbus_shutdown:
> >  	cafe_smbus_shutdown(cam);
> >  out_pdown:
> > @@ -587,6 +593,7 @@ static int cafe_pci_probe(struct pci_dev *pdev,
> >  static void cafe_shutdown(struct cafe_camera *cam)
> >  {
> >  	mccic_shutdown(&cam->mcam);
> > +	v4l2_device_unregister(&cam->mcam.v4l2_dev);
> >  	cafe_smbus_shutdown(cam);
> >  	free_irq(cam->pdev->irq, cam);
> >  	pci_iounmap(cam->pdev, cam->mcam.regs);
> > diff --git a/drivers/media/platform/marvell/mcam-core.c b/drivers/media/platform/marvell/mcam-core.c
> > index 3cee6d6b83fa9..bcfcecdb03ea2 100644
> > --- a/drivers/media/platform/marvell/mcam-core.c
> > +++ b/drivers/media/platform/marvell/mcam-core.c
> > @@ -1866,10 +1866,6 @@ int mccic_register(struct mcam_camera *cam)
> >  	/*
> >  	 * Register with V4L
> >  	 */
> 
> The comment doesn't seem valid anymore.

I'll drop it from v4.

> 
> > -	ret = v4l2_device_register(cam->dev, &cam->v4l2_dev);
> > -	if (ret)
> > -		goto out;
> > -
> >  	mutex_init(&cam->s_mutex);
> >  	cam->state = S_NOTREADY;
> >  	mcam_set_config_needed(cam, 1);
> > @@ -1915,7 +1911,6 @@ int mccic_register(struct mcam_camera *cam)
> >  
> >  out:
> >  	v4l2_async_nf_unregister(&cam->notifier);
> > -	v4l2_device_unregister(&cam->v4l2_dev);
> >  	v4l2_async_nf_cleanup(&cam->notifier);
> >  	return ret;
> >  }
> > @@ -1937,7 +1932,6 @@ void mccic_shutdown(struct mcam_camera *cam)
> >  		mcam_free_dma_bufs(cam);
> >  	v4l2_ctrl_handler_free(&cam->ctrl_handler);
> >  	v4l2_async_nf_unregister(&cam->notifier);
> > -	v4l2_device_unregister(&cam->v4l2_dev);
> >  	v4l2_async_nf_cleanup(&cam->notifier);
> >  }
> >  EXPORT_SYMBOL_GPL(mccic_shutdown);
Laurent Pinchart June 20, 2023, 4:50 p.m. UTC | #3
On Tue, Jun 20, 2023 at 09:43:38AM +0000, Sakari Ailus wrote:
> Hi Laurent,
> 
> On Tue, May 30, 2023 at 08:00:33AM +0300, Laurent Pinchart wrote:
> > Hi Sakari,
> > 
> > Thank you for the patch.
> > 
> > On Thu, May 25, 2023 at 12:16:08PM +0300, Sakari Ailus wrote:
> > > Register V4L2 device before the async notifier so the struct device will
> > > be available for the notifier which makes it possible to use it for debug
> > > prints.
> > 
> > Please record in the commit message that this is to prepare for patch
> > 31/32. Same comment for other patches in this series.
> 
> I've already added the text that tells the purpose is to make future debug
> prints possible (with the device). Would you like to have the patch subject
> here or something else?

I meant it would be nice to record in the commit message here that the
v4l2-async framework will start making use of the dev field in a
subsequent patch, and that this patch prepares for it.

> > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > > ---
> > >  drivers/media/platform/marvell/cafe-driver.c | 11 +++++++++--
> > >  drivers/media/platform/marvell/mcam-core.c   |  6 ------
> > >  2 files changed, 9 insertions(+), 8 deletions(-)
> > > 
> > > diff --git a/drivers/media/platform/marvell/cafe-driver.c b/drivers/media/platform/marvell/cafe-driver.c
> > > index dd1bba70bd791..fbfbb9f67ddfc 100644
> > > --- a/drivers/media/platform/marvell/cafe-driver.c
> > > +++ b/drivers/media/platform/marvell/cafe-driver.c
> > > @@ -536,6 +536,10 @@ static int cafe_pci_probe(struct pci_dev *pdev,
> > >  	if (ret)
> > >  		goto out_pdown;
> > >  
> > > +	ret = v4l2_device_register(mcam->dev, &mcam->v4l2_dev);
> > > +	if (ret)
> > > +		goto out_smbus_shutdown;
> > > +
> > >  	v4l2_async_nf_init(&mcam->notifier);
> > >  
> > >  	asd = v4l2_async_nf_add_i2c(&mcam->notifier,
> > > @@ -544,12 +548,12 @@ static int cafe_pci_probe(struct pci_dev *pdev,
> > >  				    struct v4l2_async_connection);
> > >  	if (IS_ERR(asd)) {
> > >  		ret = PTR_ERR(asd);
> > > -		goto out_smbus_shutdown;
> > > +		goto out_v4l2_device_unregister;
> > >  	}
> > >  
> > >  	ret = mccic_register(mcam);
> > >  	if (ret)
> > > -		goto out_smbus_shutdown;
> > > +		goto out_v4l2_device_unregister;
> > >  
> > >  	clkdev_create(mcam->mclk, "xclk", "%d-%04x",
> > >  		i2c_adapter_id(cam->i2c_adapter), ov7670_info.addr);
> > > @@ -565,6 +569,8 @@ static int cafe_pci_probe(struct pci_dev *pdev,
> > >  
> > >  out_mccic_shutdown:
> > >  	mccic_shutdown(mcam);
> > > +out_v4l2_device_unregister:
> > > +	v4l2_device_unregister(&mcam->v4l2_dev);
> > >  out_smbus_shutdown:
> > >  	cafe_smbus_shutdown(cam);
> > >  out_pdown:
> > > @@ -587,6 +593,7 @@ static int cafe_pci_probe(struct pci_dev *pdev,
> > >  static void cafe_shutdown(struct cafe_camera *cam)
> > >  {
> > >  	mccic_shutdown(&cam->mcam);
> > > +	v4l2_device_unregister(&cam->mcam.v4l2_dev);
> > >  	cafe_smbus_shutdown(cam);
> > >  	free_irq(cam->pdev->irq, cam);
> > >  	pci_iounmap(cam->pdev, cam->mcam.regs);
> > > diff --git a/drivers/media/platform/marvell/mcam-core.c b/drivers/media/platform/marvell/mcam-core.c
> > > index 3cee6d6b83fa9..bcfcecdb03ea2 100644
> > > --- a/drivers/media/platform/marvell/mcam-core.c
> > > +++ b/drivers/media/platform/marvell/mcam-core.c
> > > @@ -1866,10 +1866,6 @@ int mccic_register(struct mcam_camera *cam)
> > >  	/*
> > >  	 * Register with V4L
> > >  	 */
> > 
> > The comment doesn't seem valid anymore.
> 
> I'll drop it from v4.
> 
> > > -	ret = v4l2_device_register(cam->dev, &cam->v4l2_dev);
> > > -	if (ret)
> > > -		goto out;
> > > -
> > >  	mutex_init(&cam->s_mutex);
> > >  	cam->state = S_NOTREADY;
> > >  	mcam_set_config_needed(cam, 1);
> > > @@ -1915,7 +1911,6 @@ int mccic_register(struct mcam_camera *cam)
> > >  
> > >  out:
> > >  	v4l2_async_nf_unregister(&cam->notifier);
> > > -	v4l2_device_unregister(&cam->v4l2_dev);
> > >  	v4l2_async_nf_cleanup(&cam->notifier);
> > >  	return ret;
> > >  }
> > > @@ -1937,7 +1932,6 @@ void mccic_shutdown(struct mcam_camera *cam)
> > >  		mcam_free_dma_bufs(cam);
> > >  	v4l2_ctrl_handler_free(&cam->ctrl_handler);
> > >  	v4l2_async_nf_unregister(&cam->notifier);
> > > -	v4l2_device_unregister(&cam->v4l2_dev);
> > >  	v4l2_async_nf_cleanup(&cam->notifier);
> > >  }
> > >  EXPORT_SYMBOL_GPL(mccic_shutdown);
diff mbox series

Patch

diff --git a/drivers/media/platform/marvell/cafe-driver.c b/drivers/media/platform/marvell/cafe-driver.c
index dd1bba70bd791..fbfbb9f67ddfc 100644
--- a/drivers/media/platform/marvell/cafe-driver.c
+++ b/drivers/media/platform/marvell/cafe-driver.c
@@ -536,6 +536,10 @@  static int cafe_pci_probe(struct pci_dev *pdev,
 	if (ret)
 		goto out_pdown;
 
+	ret = v4l2_device_register(mcam->dev, &mcam->v4l2_dev);
+	if (ret)
+		goto out_smbus_shutdown;
+
 	v4l2_async_nf_init(&mcam->notifier);
 
 	asd = v4l2_async_nf_add_i2c(&mcam->notifier,
@@ -544,12 +548,12 @@  static int cafe_pci_probe(struct pci_dev *pdev,
 				    struct v4l2_async_connection);
 	if (IS_ERR(asd)) {
 		ret = PTR_ERR(asd);
-		goto out_smbus_shutdown;
+		goto out_v4l2_device_unregister;
 	}
 
 	ret = mccic_register(mcam);
 	if (ret)
-		goto out_smbus_shutdown;
+		goto out_v4l2_device_unregister;
 
 	clkdev_create(mcam->mclk, "xclk", "%d-%04x",
 		i2c_adapter_id(cam->i2c_adapter), ov7670_info.addr);
@@ -565,6 +569,8 @@  static int cafe_pci_probe(struct pci_dev *pdev,
 
 out_mccic_shutdown:
 	mccic_shutdown(mcam);
+out_v4l2_device_unregister:
+	v4l2_device_unregister(&mcam->v4l2_dev);
 out_smbus_shutdown:
 	cafe_smbus_shutdown(cam);
 out_pdown:
@@ -587,6 +593,7 @@  static int cafe_pci_probe(struct pci_dev *pdev,
 static void cafe_shutdown(struct cafe_camera *cam)
 {
 	mccic_shutdown(&cam->mcam);
+	v4l2_device_unregister(&cam->mcam.v4l2_dev);
 	cafe_smbus_shutdown(cam);
 	free_irq(cam->pdev->irq, cam);
 	pci_iounmap(cam->pdev, cam->mcam.regs);
diff --git a/drivers/media/platform/marvell/mcam-core.c b/drivers/media/platform/marvell/mcam-core.c
index 3cee6d6b83fa9..bcfcecdb03ea2 100644
--- a/drivers/media/platform/marvell/mcam-core.c
+++ b/drivers/media/platform/marvell/mcam-core.c
@@ -1866,10 +1866,6 @@  int mccic_register(struct mcam_camera *cam)
 	/*
 	 * Register with V4L
 	 */
-	ret = v4l2_device_register(cam->dev, &cam->v4l2_dev);
-	if (ret)
-		goto out;
-
 	mutex_init(&cam->s_mutex);
 	cam->state = S_NOTREADY;
 	mcam_set_config_needed(cam, 1);
@@ -1915,7 +1911,6 @@  int mccic_register(struct mcam_camera *cam)
 
 out:
 	v4l2_async_nf_unregister(&cam->notifier);
-	v4l2_device_unregister(&cam->v4l2_dev);
 	v4l2_async_nf_cleanup(&cam->notifier);
 	return ret;
 }
@@ -1937,7 +1932,6 @@  void mccic_shutdown(struct mcam_camera *cam)
 		mcam_free_dma_bufs(cam);
 	v4l2_ctrl_handler_free(&cam->ctrl_handler);
 	v4l2_async_nf_unregister(&cam->notifier);
-	v4l2_device_unregister(&cam->v4l2_dev);
 	v4l2_async_nf_cleanup(&cam->notifier);
 }
 EXPORT_SYMBOL_GPL(mccic_shutdown);