[PATCH] media: i2c: improve suspend/resume switch performance for GT9769 VCM driver

Zhi Mao posted 1 patch 2 weeks, 5 days ago
drivers/media/i2c/dw9768.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
[PATCH] media: i2c: improve suspend/resume switch performance for GT9769 VCM driver
Posted by Zhi Mao 2 weeks, 5 days ago
Chromebook camera AP can switch between video and photo mode,
the behavior corresponding to VCM is suspend and resume,
it will cause camera preview is not smooth during switching operation.
We use autosuspend function can fix this issue.

Signed-off-by: Zhi Mao <zhi.mao@mediatek.com>
---
 drivers/media/i2c/dw9768.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/media/i2c/dw9768.c b/drivers/media/i2c/dw9768.c
index 18ef2b35c9aa..7449d29df901 100644
--- a/drivers/media/i2c/dw9768.c
+++ b/drivers/media/i2c/dw9768.c
@@ -374,7 +374,7 @@ static int dw9768_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
 
 static int dw9768_close(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
 {
-	pm_runtime_put(sd->dev);
+	pm_runtime_put_sync_autosuspend(sd->dev);
 
 	return 0;
 }
@@ -490,6 +490,7 @@ static int dw9768_probe(struct i2c_client *client)
 		goto err_power_off;
 	}
 
+	pm_runtime_use_autosuspend(dev);
 	pm_runtime_idle(dev);
 
 	return 0;
-- 
2.46.0
Re: [PATCH] media: i2c: improve suspend/resume switch performance for GT9769 VCM driver
Posted by Zhi Mao (毛智) 2 hours ago
ping...

On Sat, 2024-08-31 at 13:52 +0800, Zhi Mao wrote:
> Chromebook camera AP can switch between video and photo mode,
> the behavior corresponding to VCM is suspend and resume,
> it will cause camera preview is not smooth during switching
> operation.
> We use autosuspend function can fix this issue.
> 
> Signed-off-by: Zhi Mao <zhi.mao@mediatek.com>
> ---
>  drivers/media/i2c/dw9768.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/media/i2c/dw9768.c b/drivers/media/i2c/dw9768.c
> index 18ef2b35c9aa..7449d29df901 100644
> --- a/drivers/media/i2c/dw9768.c
> +++ b/drivers/media/i2c/dw9768.c
> @@ -374,7 +374,7 @@ static int dw9768_open(struct v4l2_subdev *sd,
> struct v4l2_subdev_fh *fh)
>  
>  static int dw9768_close(struct v4l2_subdev *sd, struct
> v4l2_subdev_fh *fh)
>  {
> -	pm_runtime_put(sd->dev);
> +	pm_runtime_put_sync_autosuspend(sd->dev);
>  
>  	return 0;
>  }
> @@ -490,6 +490,7 @@ static int dw9768_probe(struct i2c_client
> *client)
>  		goto err_power_off;
>  	}
>  
> +	pm_runtime_use_autosuspend(dev);
>  	pm_runtime_idle(dev);
>  
>  	return 0;