summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSakari Ailus <sakari.ailus@linux.intel.com>2026-01-09 11:00:21 +0200
committerHans Verkuil <hverkuil+cisco@kernel.org>2026-01-16 14:08:52 +0100
commit08e47937637e7255509efa421260f46d212ddf96 (patch)
tree2a234a5fe9e71ec13a43603241e69e66bd91147f
parentbc6af7695a511b93f43e5ab4f872bcbccb580380 (diff)
media: ccs: Use devm_v4l2_sensor_clk_get()
Rely on devm_v4l2_sensor_clk_get() to obtain the sensor's external clock. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
-rw-r--r--drivers/media/i2c/ccs/ccs-core.c59
1 files changed, 21 insertions, 38 deletions
diff --git a/drivers/media/i2c/ccs/ccs-core.c b/drivers/media/i2c/ccs/ccs-core.c
index 4508a561428a..6f2020e2f861 100644
--- a/drivers/media/i2c/ccs/ccs-core.c
+++ b/drivers/media/i2c/ccs/ccs-core.c
@@ -3296,47 +3296,30 @@ static int ccs_probe(struct i2c_client *client)
return rval;
}
- sensor->ext_clk = devm_clk_get(&client->dev, NULL);
- if (PTR_ERR(sensor->ext_clk) == -ENOENT) {
- dev_info(&client->dev, "no clock defined, continuing...\n");
- sensor->ext_clk = NULL;
- } else if (IS_ERR(sensor->ext_clk)) {
- dev_err(&client->dev, "could not get clock (%pe)\n",
- sensor->ext_clk);
- return -EPROBE_DEFER;
- }
-
- if (sensor->ext_clk) {
- if (sensor->hwcfg.ext_clk) {
- unsigned long rate;
-
- rval = clk_set_rate(sensor->ext_clk,
- sensor->hwcfg.ext_clk);
- if (rval < 0) {
- dev_err(&client->dev,
- "unable to set clock freq to %u\n",
- sensor->hwcfg.ext_clk);
- return rval;
- }
+ sensor->ext_clk = devm_v4l2_sensor_clk_get(&client->dev, NULL);
+ if (IS_ERR(sensor->ext_clk))
+ return dev_err_probe(&client->dev, PTR_ERR(sensor->ext_clk),
+ "could not get clock\n");
- rate = clk_get_rate(sensor->ext_clk);
- if (rate != sensor->hwcfg.ext_clk) {
- dev_err(&client->dev,
- "can't set clock freq, asked for %u but got %lu\n",
- sensor->hwcfg.ext_clk, rate);
- return -EINVAL;
- }
- } else {
- sensor->hwcfg.ext_clk = clk_get_rate(sensor->ext_clk);
- dev_dbg(&client->dev, "obtained clock freq %u\n",
- sensor->hwcfg.ext_clk);
+ if (sensor->hwcfg.ext_clk) {
+ unsigned long rate;
+
+ rval = clk_set_rate(sensor->ext_clk, sensor->hwcfg.ext_clk);
+ if (rval < 0)
+ return dev_err_probe(&client->dev, rval,
+ "unable to set clock freq to %u\n",
+ sensor->hwcfg.ext_clk);
+
+ rate = clk_get_rate(sensor->ext_clk);
+ if (rate != sensor->hwcfg.ext_clk) {
+ return dev_err_probe(&client->dev, -EINVAL,
+ "can't set clock freq, asked for %u but got %lu\n",
+ sensor->hwcfg.ext_clk, rate);
}
- } else if (sensor->hwcfg.ext_clk) {
- dev_dbg(&client->dev, "assuming clock freq %u\n",
- sensor->hwcfg.ext_clk);
} else {
- dev_err(&client->dev, "unable to obtain clock freq\n");
- return -EINVAL;
+ sensor->hwcfg.ext_clk = clk_get_rate(sensor->ext_clk);
+ dev_dbg(&client->dev, "obtained clock freq %u\n",
+ sensor->hwcfg.ext_clk);
}
if (!sensor->hwcfg.ext_clk) {