[PATCH v5 04/15] media: i2c: os05b10: Enable runtime PM autosuspend
From: Tarang Raval
Date: Fri Oct 30 2026 - 06:51:22 EST
Use pm_runtime_put_autosuspend() instead of pm_runtime_put()
to allow autosuspend. Set a 1000ms autosuspend delay.
Signed-off-by: Tarang Raval <tarang.raval@xxxxxxxxxxxxxxxxx>
---
drivers/media/i2c/os05b10.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/media/i2c/os05b10.c b/drivers/media/i2c/os05b10.c
index 70ad9124ad41..7f6cb4c7edc8 100644
--- a/drivers/media/i2c/os05b10.c
+++ b/drivers/media/i2c/os05b10.c
@@ -654,7 +654,7 @@ static int os05b10_enable_streams(struct v4l2_subdev *sd,
return 0;
err_rpm_put:
- pm_runtime_put(os05b10->dev);
+ pm_runtime_put_autosuspend(os05b10->dev);
return ret;
}
@@ -671,7 +671,7 @@ static int os05b10_disable_streams(struct v4l2_subdev *sd,
if (ret)
dev_err(os05b10->dev, "failed to set stream off\n");
- pm_runtime_put(os05b10->dev);
+ pm_runtime_put_autosuspend(os05b10->dev);
return 0;
}
@@ -1029,6 +1029,8 @@ static int os05b10_probe(struct i2c_client *client)
goto error_subdev_cleanup;
}
+ pm_runtime_set_autosuspend_delay(os05b10->dev, 1000);
+ pm_runtime_use_autosuspend(os05b10->dev);
pm_runtime_idle(os05b10->dev);
return 0;
@@ -1037,6 +1039,7 @@ static int os05b10_probe(struct i2c_client *client)
v4l2_subdev_cleanup(&os05b10->sd);
pm_runtime_disable(os05b10->dev);
pm_runtime_set_suspended(os05b10->dev);
+ pm_runtime_dont_use_autosuspend(os05b10->dev);
error_media_entity:
media_entity_cleanup(&os05b10->sd.entity);
@@ -1064,6 +1067,7 @@ static void os05b10_remove(struct i2c_client *client)
if (!pm_runtime_status_suspended(&client->dev)) {
os05b10_power_off(&client->dev);
pm_runtime_set_suspended(&client->dev);
+ pm_runtime_dont_use_autosuspend(&client->dev);
}
}
--
2.34.1