static const struct mtk_ddp_comp_funcs ethdr = {
        .clk_enable = mtk_ethdr_clk_enable,
        .clk_disable = mtk_ethdr_clk_disable,
+       .start = mtk_ethdr_start,
+       .stop = mtk_ethdr_stop,
 };
 
 static const struct mtk_ddp_comp_funcs merge = {
 
 void mtk_ovl_adaptor_start(struct device *dev)
 {
+       int i;
        struct mtk_disp_ovl_adaptor *ovl_adaptor = dev_get_drvdata(dev);
 
-       mtk_ethdr_start(ovl_adaptor->ovl_adaptor_comp[OVL_ADAPTOR_ETHDR0]);
+       for (i = 0; i < OVL_ADAPTOR_ID_MAX; i++) {
+               if (!ovl_adaptor->ovl_adaptor_comp[i] ||
+                   !comp_matches[i].funcs->start)
+                       continue;
+
+               comp_matches[i].funcs->start(ovl_adaptor->ovl_adaptor_comp[i]);
+       }
 }
 
 void mtk_ovl_adaptor_stop(struct device *dev)
 {
+       int i;
        struct mtk_disp_ovl_adaptor *ovl_adaptor = dev_get_drvdata(dev);
 
-       mtk_ethdr_stop(ovl_adaptor->ovl_adaptor_comp[OVL_ADAPTOR_ETHDR0]);
+       for (i = 0; i < OVL_ADAPTOR_ID_MAX; i++) {
+               if (!ovl_adaptor->ovl_adaptor_comp[i] ||
+                   !comp_matches[i].funcs->stop)
+                       continue;
+
+               comp_matches[i].funcs->stop(ovl_adaptor->ovl_adaptor_comp[i]);
+       }
 }
 
 /**