@@ -1269,53 +1269,34 @@ static int inno_hdmi_bind(struct device *dev, struct device *master,
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
@@ -1329,10 +1310,6 @@ static int inno_hdmi_bind(struct device *dev, struct device *master,
1329
1310
err_cleanup_hdmi :
1330
1311
hdmi -> connector .funcs -> destroy (& hdmi -> connector );
1331
1312
hdmi -> encoder .encoder .funcs -> destroy (& hdmi -> encoder .encoder );
1332
- err_disable_clk :
1333
- clk_disable_unprepare (hdmi -> refclk );
1334
- err_disable_pclk :
1335
- clk_disable_unprepare (hdmi -> pclk );
1336
1313
return ret ;
1337
1314
}
1338
1315
@@ -1343,9 +1320,6 @@ static void inno_hdmi_unbind(struct device *dev, struct device *master,
1343
1320
1344
1321
hdmi -> connector .funcs -> destroy (& hdmi -> connector );
1345
1322
hdmi -> encoder .encoder .funcs -> destroy (& hdmi -> encoder .encoder );
1346
-
1347
- clk_disable_unprepare (hdmi -> refclk );
1348
- clk_disable_unprepare (hdmi -> pclk );
1349
1323
}
1350
1324
1351
1325
static const struct component_ops inno_hdmi_ops = {
0 commit comments