@@ -625,6 +625,7 @@ static void mtk_disp_ovl_adaptor_master_unbind(struct device *dev)
625625 struct mtk_disp_ovl_adaptor * priv = dev_get_drvdata (dev );
626626
627627 priv -> children_bound = false;
628+ component_unbind_all (dev , priv -> mmsys_dev );
628629}
629630
630631static const struct component_master_ops mtk_disp_ovl_adaptor_master_ops = {
@@ -651,12 +652,15 @@ static int mtk_disp_ovl_adaptor_probe(struct platform_device *pdev)
651652
652653 priv -> mmsys_dev = pdev -> dev .platform_data ;
653654
654- component_master_add_with_match (dev , & mtk_disp_ovl_adaptor_master_ops , match );
655+ ret = component_master_add_with_match (dev , & mtk_disp_ovl_adaptor_master_ops , match );
656+ if (ret )
657+ return dev_err_probe (dev , ret , "Failed to add component master\n" );
655658
656659 pm_runtime_enable (dev );
657660
658661 ret = component_add (dev , & mtk_disp_ovl_adaptor_comp_ops );
659662 if (ret != 0 ) {
663+ component_master_del (dev , & mtk_disp_ovl_adaptor_master_ops );
660664 pm_runtime_disable (dev );
661665 return dev_err_probe (dev , ret , "Failed to add component\n" );
662666 }
@@ -666,6 +670,7 @@ static int mtk_disp_ovl_adaptor_probe(struct platform_device *pdev)
666670
667671static void mtk_disp_ovl_adaptor_remove (struct platform_device * pdev )
668672{
673+ component_del (& pdev -> dev , & mtk_disp_ovl_adaptor_comp_ops );
669674 component_master_del (& pdev -> dev , & mtk_disp_ovl_adaptor_master_ops );
670675 pm_runtime_disable (& pdev -> dev );
671676}
0 commit comments