[PATCH v5 09/16] media: sony-starvis2: Use pm_runtime_autosuspend
From: Dave Stevenson
Date: Mon Oct 19 2026 - 11:33:35 EST
In order to reduce the time in stopping and restarting
streaming, use pm_runtime_autosuspend so the sensor
isn't powered down.
Signed-off-by: Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx>
---
drivers/media/i2c/sony-starvis2.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/media/i2c/sony-starvis2.c b/drivers/media/i2c/sony-starvis2.c
index 2388105b6a30..bf14768dbf98 100644
--- a/drivers/media/i2c/sony-starvis2.c
+++ b/drivers/media/i2c/sony-starvis2.c
@@ -858,7 +858,7 @@ static int starvis2_set_ctrl(struct v4l2_ctrl *ctrl)
break;
}
- pm_runtime_put(&client->dev);
+ pm_runtime_put_autosuspend(&client->dev);
return ret;
}
@@ -1047,7 +1047,7 @@ static int starvis2_enable_streams(struct v4l2_subdev *sd,
return 0;
err_rpm_put:
- pm_runtime_put(&client->dev);
+ pm_runtime_put_autosuspend(&client->dev);
return ret;
}
@@ -1070,7 +1070,7 @@ static int starvis2_disable_streams(struct v4l2_subdev *sd,
__v4l2_ctrl_grab(starvis2->link_freq, false);
- pm_runtime_put(&client->dev);
+ pm_runtime_put_autosuspend(&client->dev);
return ret;
}
@@ -1448,6 +1448,8 @@ static int starvis2_probe(struct i2c_client *client)
pm_runtime_set_active(dev);
pm_runtime_enable(dev);
+ pm_runtime_set_autosuspend_delay(dev, 1000);
+ pm_runtime_use_autosuspend(dev);
ret = starvis2_init_controls(starvis2);
if (ret)
@@ -1495,6 +1497,7 @@ static int starvis2_probe(struct i2c_client *client)
error_pm_runtime:
pm_runtime_disable(&client->dev);
pm_runtime_set_suspended(&client->dev);
+ pm_runtime_dont_use_autosuspend(&client->dev);
error_power_off:
starvis2_power_off(&client->dev);
@@ -1516,6 +1519,7 @@ static void starvis2_remove(struct i2c_client *client)
if (!pm_runtime_status_suspended(&client->dev))
starvis2_power_off(&client->dev);
pm_runtime_set_suspended(&client->dev);
+ pm_runtime_dont_use_autosuspend(&client->dev);
}
static const struct dev_pm_ops starvis2_pm_ops = {
--
2.34.1