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

Configure Feed

Select the types of activity you want to include in your feed.

drm/rockchip: inno_hdmi: Simpify clk get/enable by devm_clk_get_enabled api

Make use of devm_clk_get_enabled() to replace devm_clk_get() and
clk_prepare_enable(), which will make the cleanup of clk code simpler.

Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Link: https://lore.kernel.org/r/20250512124615.2848731-9-andyshrk@163.com

authored by

Andy Yan and committed by
Heiko Stuebner
6a1b9229 078bb17c

+12 -38
+12 -38
drivers/gpu/drm/rockchip/inno_hdmi.c
··· 1269 1269 if (IS_ERR(hdmi->regs)) 1270 1270 return PTR_ERR(hdmi->regs); 1271 1271 1272 - hdmi->pclk = devm_clk_get(hdmi->dev, "pclk"); 1272 + hdmi->pclk = devm_clk_get_enabled(hdmi->dev, "pclk"); 1273 1273 if (IS_ERR(hdmi->pclk)) 1274 1274 return dev_err_probe(dev, PTR_ERR(hdmi->pclk), "Unable to get HDMI pclk\n"); 1275 1275 1276 - ret = clk_prepare_enable(hdmi->pclk); 1277 - if (ret) 1278 - return dev_err_probe(dev, ret, "Cannot enable HDMI pclk: %d\n", ret); 1279 - 1280 - hdmi->refclk = devm_clk_get_optional(hdmi->dev, "ref"); 1281 - if (IS_ERR(hdmi->refclk)) { 1282 - ret = dev_err_probe(dev, PTR_ERR(hdmi->refclk), "Unable to get HDMI refclk\n"); 1283 - goto err_disable_pclk; 1284 - } 1285 - 1286 - ret = clk_prepare_enable(hdmi->refclk); 1287 - if (ret) { 1288 - ret = dev_err_probe(dev, ret, "Cannot enable HDMI refclk: %d\n", ret); 1289 - goto err_disable_pclk; 1290 - } 1276 + hdmi->refclk = devm_clk_get_optional_enabled(hdmi->dev, "ref"); 1277 + if (IS_ERR(hdmi->refclk)) 1278 + return dev_err_probe(dev, PTR_ERR(hdmi->refclk), "Unable to get HDMI refclk\n"); 1291 1279 1292 1280 if (hdmi->variant->dev_type == RK3036_HDMI) { 1293 1281 hdmi->grf = syscon_regmap_lookup_by_phandle(dev->of_node, "rockchip,grf"); 1294 - if (IS_ERR(hdmi->grf)) { 1295 - ret = dev_err_probe(dev, PTR_ERR(hdmi->grf), 1296 - "Unable to get rockchip,grf\n"); 1297 - goto err_disable_clk; 1298 - } 1282 + if (IS_ERR(hdmi->grf)) 1283 + return dev_err_probe(dev, 1284 + PTR_ERR(hdmi->grf), "Unable to get rockchip,grf\n"); 1299 1285 } 1300 1286 1301 1287 irq = platform_get_irq(pdev, 0); 1302 - if (irq < 0) { 1303 - ret = irq; 1304 - goto err_disable_clk; 1305 - } 1288 + if (irq < 0) 1289 + return irq; 1306 1290 1307 1291 inno_hdmi_init_hw(hdmi); 1308 1292 1309 1293 hdmi->ddc = inno_hdmi_i2c_adapter(hdmi); 1310 - if (IS_ERR(hdmi->ddc)) { 1311 - ret = PTR_ERR(hdmi->ddc); 1312 - hdmi->ddc = NULL; 1313 - goto err_disable_clk; 1314 - } 1294 + if (IS_ERR(hdmi->ddc)) 1295 + return PTR_ERR(hdmi->ddc); 1315 1296 1316 1297 ret = inno_hdmi_register(drm, hdmi); 1317 1298 if (ret) 1318 - goto err_disable_clk; 1299 + return ret; 1319 1300 1320 1301 dev_set_drvdata(dev, hdmi); 1321 1302 ··· 1310 1329 err_cleanup_hdmi: 1311 1330 hdmi->connector.funcs->destroy(&hdmi->connector); 1312 1331 hdmi->encoder.encoder.funcs->destroy(&hdmi->encoder.encoder); 1313 - err_disable_clk: 1314 - clk_disable_unprepare(hdmi->refclk); 1315 - err_disable_pclk: 1316 - clk_disable_unprepare(hdmi->pclk); 1317 1332 return ret; 1318 1333 } 1319 1334 ··· 1320 1343 1321 1344 hdmi->connector.funcs->destroy(&hdmi->connector); 1322 1345 hdmi->encoder.encoder.funcs->destroy(&hdmi->encoder.encoder); 1323 - 1324 - clk_disable_unprepare(hdmi->refclk); 1325 - clk_disable_unprepare(hdmi->pclk); 1326 1346 } 1327 1347 1328 1348 static const struct component_ops inno_hdmi_ops = {