Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: imx258: Fix getting clock frequency

Obtain the clock frequency by reading the clock-frequency property if
there's no clock.

Fixes: 9fda25332c4b ("media: i2c: imx258: get clock from device properties and enable it via runtime PM")
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>

authored by

Sakari Ailus and committed by
Mauro Carvalho Chehab
d170b0ea 96d309a9

+6 -6
+6 -6
drivers/media/i2c/imx258.c
··· 1260 1260 return -ENOMEM; 1261 1261 1262 1262 imx258->clk = devm_clk_get_optional(&client->dev, NULL); 1263 + if (IS_ERR(imx258->clk)) 1264 + return dev_err_probe(&client->dev, PTR_ERR(imx258->clk), 1265 + "error getting clock\n"); 1263 1266 if (!imx258->clk) { 1264 1267 dev_dbg(&client->dev, 1265 1268 "no clock provided, using clock-frequency property\n"); 1266 1269 1267 1270 device_property_read_u32(&client->dev, "clock-frequency", &val); 1268 - if (val != IMX258_INPUT_CLOCK_FREQ) 1269 - return -EINVAL; 1270 - } else if (IS_ERR(imx258->clk)) { 1271 - return dev_err_probe(&client->dev, PTR_ERR(imx258->clk), 1272 - "error getting clock\n"); 1271 + } else { 1272 + val = clk_get_rate(imx258->clk); 1273 1273 } 1274 - if (clk_get_rate(imx258->clk) != IMX258_INPUT_CLOCK_FREQ) { 1274 + if (val != IMX258_INPUT_CLOCK_FREQ) { 1275 1275 dev_err(&client->dev, "input clock frequency not supported\n"); 1276 1276 return -EINVAL; 1277 1277 }