@@ -1269,53 +1269,34 @@ static int inno_hdmi_bind(struct device *dev, struct device *master,
12691269 if (IS_ERR (hdmi -> regs ))
12701270 return PTR_ERR (hdmi -> regs );
12711271
1272- hdmi -> pclk = devm_clk_get (hdmi -> dev , "pclk" );
1272+ hdmi -> pclk = devm_clk_get_enabled (hdmi -> dev , "pclk" );
12731273 if (IS_ERR (hdmi -> pclk ))
12741274 return dev_err_probe (dev , PTR_ERR (hdmi -> pclk ), "Unable to get HDMI pclk\n" );
12751275
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" );
12911279
12921280 if (hdmi -> variant -> dev_type == RK3036_HDMI ) {
12931281 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" );
12991285 }
13001286
13011287 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 ;
13061290
13071291 inno_hdmi_init_hw (hdmi );
13081292
13091293 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 );
13151296
13161297 ret = inno_hdmi_register (drm , hdmi );
13171298 if (ret )
1318- goto err_disable_clk ;
1299+ return ret ;
13191300
13201301 dev_set_drvdata (dev , hdmi );
13211302
@@ -1329,10 +1310,6 @@ static int inno_hdmi_bind(struct device *dev, struct device *master,
13291310err_cleanup_hdmi :
13301311 hdmi -> connector .funcs -> destroy (& hdmi -> connector );
13311312 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 );
13361313 return ret ;
13371314}
13381315
@@ -1343,9 +1320,6 @@ static void inno_hdmi_unbind(struct device *dev, struct device *master,
13431320
13441321 hdmi -> connector .funcs -> destroy (& hdmi -> connector );
13451322 hdmi -> encoder .encoder .funcs -> destroy (& hdmi -> encoder .encoder );
1346-
1347- clk_disable_unprepare (hdmi -> refclk );
1348- clk_disable_unprepare (hdmi -> pclk );
13491323}
13501324
13511325static const struct component_ops inno_hdmi_ops = {
0 commit comments