[PATCH v6 09/18] media: sony-starvis2: Use pm_runtime_autosuspend

From: Dave Stevenson

Date: Thu Oct 22 2026 - 13:43:13 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 | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/drivers/media/i2c/sony-starvis2.c b/drivers/media/i2c/sony-starvis2.c
index 95da8a9e671e..27357cc293be 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;
}
@@ -1049,7 +1049,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;
}
@@ -1072,7 +1072,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;
}
@@ -1447,7 +1447,10 @@ static int starvis2_probe(struct i2c_client *client)
NULL);

pm_runtime_set_active(dev);
+ pm_runtime_get_noresume(dev);
pm_runtime_enable(dev);
+ pm_runtime_set_autosuspend_delay(dev, 1000);
+ pm_runtime_use_autosuspend(dev);

ret = starvis2_init_controls(starvis2);
if (ret)
@@ -1479,7 +1482,7 @@ static int starvis2_probe(struct i2c_client *client)
goto error_subdev_cleanup;
}

- pm_runtime_idle(dev);
+ pm_runtime_put_autosuspend(dev);

return 0;

@@ -1494,7 +1497,8 @@ static int starvis2_probe(struct i2c_client *client)

error_pm_runtime:
pm_runtime_disable(&client->dev);
- pm_runtime_set_suspended(&client->dev);
+ pm_runtime_put_noidle(dev);
+ pm_runtime_dont_use_autosuspend(&client->dev);

error_power_off:
starvis2_power_off(&client->dev);
@@ -1516,6 +1520,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