All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <90bd076d82bf2cddeb3ce578be6e7539886cfc2b.camel@mediatek.com>

diff --git a/N1/2.bin b/N1/2.bin
new file mode 100644
index 0000000..24c7ec6
--- /dev/null
+++ b/N1/2.bin
@@ -0,0 +1,1252 @@
+<html><body><p>
+<pre>
+On&#32;Wed,&#32;2025-02-12&#32;at&#32;07:09&#32;+0000,&#32;CK&#32;Hu&#32;(&#32993;&#20426;&#20809;)&#32;wrote:
+&gt;&#32;Hi,&#32;Paul:
+&gt;&#32;
+&gt;&#32;On&#32;Fri,&#32;2025-01-10&#32;at&#32;20:34&#32;+0800,&#32;paul-pl.chen&#32;wrote:
+&gt;&#32;&gt;&#32;From:&#32;&quot;Nancy.Lin&quot;&#32;&lt;nancy.lin@mediatek.com&gt;
+&gt;&#32;&gt;&#32;
+&gt;&#32;&gt;&#32;Ovlsys_adaptor&#32;is&#32;an&#32;encapsulated&#32;module&#32;designed&#32;to
+&gt;&#32;&gt;&#32;simplify&#32;the&#32;DRM&#32;control&#32;flow.&#32;This&#32;module&#32;is&#32;composed
+&gt;&#32;&gt;&#32;of&#32;20&#32;EXDMAs,&#32;20&#32;BLENDERs,&#32;and&#32;12&#32;OUTPROCs.
+&gt;&#32;&gt;&#32;Two&#32;EXDMAs&#32;merge&#32;into&#32;one&#32;layer,&#32;allowing&#32;the&#32;module
+&gt;&#32;&gt;&#32;to&#32;support&#32;20&#32;layers&#32;for&#32;3&#32;display&#32;paths.
+&gt;&#32;&gt;&#32;Ovlsys_adaptor&#32;driver&#32;is&#32;integrated&#32;within&#32;the
+&gt;&#32;&gt;&#32;mtk_ddp_comp&#32;framework.
+&gt;&#32;&gt;&#32;
+&gt;&#32;&gt;&#32;Signed-off-by:&#32;Nancy.Lin&#32;&lt;nancy.lin@mediatek.com&gt;
+&gt;&#32;&gt;&#32;Signed-off-by:&#32;Paul-pl.Chen&#32;&lt;paul-pl.chen@mediatek.com&gt;
+&gt;&#32;&gt;&#32;---
+&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/Makefile&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#32;|&#160;&#160;&#32;1&#32;+
+&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_ddp_comp.c&#160;&#160;&#160;&#160;&#160;&#160;&#32;|&#160;&#32;25&#32;+
+&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_ddp_comp.h&#160;&#160;&#160;&#160;&#160;&#160;&#32;|&#160;&#160;&#32;1&#32;+
+&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_disp_drv.h&#160;&#160;&#160;&#160;&#160;&#160;&#32;|&#160;&#32;31&#32;+-
+&gt;&#32;&gt;&#32;&#160;.../drm/mediatek/mtk_disp_ovlsys_adaptor.c&#160;&#160;&#160;&#32;|&#32;758
+&gt;&#32;&gt;&#32;++++++++++++++++++
+&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_drm_drv.c&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#32;|&#160;&#32;61&#32;+-
+&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_drm_drv.h&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#32;|&#160;&#32;11&#32;+-
+&gt;&#32;&gt;&#32;&#160;7&#32;files&#32;changed,&#32;884&#32;insertions(+),&#32;4&#32;deletions(-)
+&gt;&#32;&gt;&#32;&#160;create&#32;mode&#32;100644
+&gt;&#32;&gt;&#32;drivers/gpu/drm/mediatek/mtk_disp_ovlsys_adaptor.c
+&gt;&#32;&gt;&#32;
+&gt;&#32;&gt;&#32;diff&#32;--git&#32;a/drivers/gpu/drm/mediatek/Makefile
+&gt;&#32;&gt;&#32;b/drivers/gpu/drm/mediatek/Makefile
+&gt;&#32;&gt;&#32;
+//snip
+&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_disp_blender.h&quot;
+&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_disp_drv.h&quot;
+&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_crtc.h&quot;
+&gt;&#32;
+&gt;&#32;Alphabetic&#32;order.
+&gt;&#32;
+Ok,&#32;I&#32;will&#32;fix&#32;this&#32;part.
+&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_ddp_comp.h&quot;
+&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_drm_drv.h&quot;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+enum&#32;mtk_ovlsys_adaptor_comp_type&#32;{
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_EXDMA&#32;=&#32;0,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_OUTPROC,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_NUM,
+&gt;&#32;&gt;&#32;+};
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+enum&#32;mtk_ovlsys_adaptor_comp_id&#32;{
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA0,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA1,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA2,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA3,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA4,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA5,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA6,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA7,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA8,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA9,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA10,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA11,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA12,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA13,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA14,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA15,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA16,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA17,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA18,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA19,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER0,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER1,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER2,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER3,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER4,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER5,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER6,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER7,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER8,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER9,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER10,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER11,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER12,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER13,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER14,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER15,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER16,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER17,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER18,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER19,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC0,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC1,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC2,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC3,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC4,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC5,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC6,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC7,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC8,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC9,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC10,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC11,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_ID_MAX
+&gt;&#32;&gt;&#32;+};
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+struct&#32;ovlsys_adaptor_comp_match&#32;{
+&gt;&#32;&gt;&#32;+enum&#32;mtk_ovlsys_adaptor_comp_type&#32;type;
+&gt;&#32;&gt;&#32;+int&#32;alias_id;
+&gt;&#32;&gt;&#32;+enum&#32;mtk_ddp_comp_id&#32;comp_id;
+&gt;&#32;&gt;&#32;+};
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;{
+&gt;&#32;&gt;&#32;+struct&#32;device&#32;*ovl_adaptor_comp[OVLSYS_ADAPTOR_ID_MAX];
+&gt;&#32;&gt;&#32;+struct&#32;device&#32;*mmsys_dev;
+&gt;&#32;&gt;&#32;+const&#32;unsigned&#32;int&#32;*path;
+&gt;&#32;&gt;&#32;+unsigned&#32;int&#32;path_size;
+&gt;&#32;&gt;&#32;+unsigned&#32;int&#32;layer_nr;
+&gt;&#32;&gt;&#32;+bool&#32;children_bound;
+&gt;&#32;&gt;&#32;+unsigned&#32;int&#32;max_size;
+&gt;&#32;&gt;&#32;+};
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;const&#32;char&#32;*&#32;const
+&gt;&#32;&gt;&#32;private_comp_stem[OVLSYS_ADAPTOR_TYPE_NUM]&#32;=&#32;{
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_TYPE_EXDMA]=&#32;&quot;exdma&quot;,
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_TYPE_BLENDER]=&#32;&quot;blender&quot;,
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_TYPE_OUTPROC]=&#32;&quot;outproc&quot;,
+&gt;&#32;&gt;&#32;+};
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;const&#32;struct&#32;ovlsys_adaptor_comp_match
+&gt;&#32;&gt;&#32;comp_matches[OVLSYS_ADAPTOR_ID_MAX]&#32;=&#32;{
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA0]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,
+&gt;&#32;&gt;&#32;0,&#32;DDP_COMPONENT_ID_MAX},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA1]&#160;&#32;=&#32;{
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;1,&#32;DDP_COMPONENT_ID_MAX},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA2]&#160;&#32;=&#32;{
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;2,&#32;DDP_COMPONENT_OVL0_EXDMA2},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA3]&#160;&#32;=&#32;{
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;3,&#32;DDP_COMPONENT_OVL0_EXDMA3},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA4]&#160;&#32;=&#32;{
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;4,&#32;DDP_COMPONENT_OVL0_EXDMA4},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA5]&#160;&#32;=&#32;{
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;5,&#32;DDP_COMPONENT_OVL0_EXDMA5},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA6]&#160;&#32;=&#32;{
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;6,&#32;DDP_COMPONENT_OVL0_EXDMA6},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA7]&#160;&#32;=&#32;{
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;7,&#32;DDP_COMPONENT_OVL0_EXDMA7},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA8]&#160;&#32;=&#32;{
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;8,&#32;DDP_COMPONENT_OVL0_EXDMA8},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA9]&#160;&#32;=&#32;{
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;9,&#32;DDP_COMPONENT_OVL0_EXDMA9},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA10]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,
+&gt;&#32;&gt;&#32;10,&#32;DDP_COMPONENT_ID_MAX},
+&gt;&#32;
+&gt;&#32;EXDMA10&#32;has&#32;no&#32;component&#32;id,&#32;so&#32;just&#32;drop&#32;OVLSYS_ADAPTOR_EXDMA10.
+&gt;&#32;
+OK&#32;I&#32;will&#32;check&#32;this&#32;part.
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA11]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,
+&gt;&#32;&gt;&#32;11,&#32;DDP_COMPONENT_ID_MAX},
+&gt;&#32;
+&gt;&#32;Ditto.
+&gt;&#32;
+OK&#32;I&#32;will&#32;check&#32;this&#32;part,&#32;too.
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA12]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,
+&gt;&#32;&gt;&#32;12,&#32;DDP_COMPONENT_OVL1_EXDMA2},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA13]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,
+&gt;&#32;&gt;&#32;13,&#32;DDP_COMPONENT_OVL1_EXDMA3},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA14]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,
+&gt;&#32;&gt;&#32;14,&#32;DDP_COMPONENT_OVL1_EXDMA4},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA15]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,
+&gt;&#32;&gt;&#32;15,&#32;DDP_COMPONENT_OVL1_EXDMA5},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA16]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,
+&gt;&#32;&gt;&#32;16,&#32;DDP_COMPONENT_OVL1_EXDMA6},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA17]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,
+&gt;&#32;&gt;&#32;17,&#32;DDP_COMPONENT_OVL1_EXDMA7},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA18]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,
+&gt;&#32;&gt;&#32;18,&#32;DDP_COMPONENT_OVL1_EXDMA8},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA19]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,
+&gt;&#32;&gt;&#32;19,&#32;DDP_COMPONENT_OVL1_EXDMA9},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER0]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,
+&gt;&#32;&gt;&#32;0,&#32;DDP_COMPONENT_ID_MAX},
+&gt;&#32;
+&gt;&#32;Ditto.
+&gt;&#32;
+OK&#32;I&#32;will&#32;check&#32;this&#32;part,&#32;too.
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER1]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,
+&gt;&#32;&gt;&#32;1,&#32;DDP_COMPONENT_OVL0_BLENDER1},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER2]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,
+&gt;&#32;&gt;&#32;2,&#32;DDP_COMPONENT_OVL0_BLENDER2},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER3]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,
+&gt;&#32;&gt;&#32;3,&#32;DDP_COMPONENT_OVL0_BLENDER3},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER4]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,
+&gt;&#32;&gt;&#32;4,&#32;DDP_COMPONENT_OVL0_BLENDER4},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER5]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,
+&gt;&#32;&gt;&#32;5,&#32;DDP_COMPONENT_OVL0_BLENDER5},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER6]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,
+&gt;&#32;&gt;&#32;6,&#32;DDP_COMPONENT_OVL0_BLENDER6},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER7]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,
+&gt;&#32;&gt;&#32;7,&#32;DDP_COMPONENT_OVL0_BLENDER7},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER8]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,
+&gt;&#32;&gt;&#32;8,&#32;DDP_COMPONENT_OVL0_BLENDER8},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER9]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,
+&gt;&#32;&gt;&#32;9,&#32;DDP_COMPONENT_OVL0_BLENDER9},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER10]&#32;=&#32;{
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;10,&#32;DDP_COMPONENT_ID_MAX},
+&gt;&#32;
+&gt;&#32;Ditto.
+&gt;&#32;
+
+OK&#32;I&#32;will&#32;check&#32;this&#32;part,&#32;too.
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER11]&#32;=&#32;{
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;11,
+&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER1},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER12]&#32;=&#32;{
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;12,
+&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER2},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER13]&#32;=&#32;{
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;13,
+&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER3},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER14]&#32;=&#32;{
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;14,
+&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER4},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER15]&#32;=&#32;{
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;15,
+&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER5},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER16]&#32;=&#32;{
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;16,
+&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER6},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER17]&#32;=&#32;{
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;17,
+&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER7},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER18]&#32;=&#32;{
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;18,
+&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER8},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER19]&#32;=&#32;{
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;19,
+&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER9},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC0]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,
+&gt;&#32;&gt;&#32;0,&#32;DDP_COMPONENT_OVL0_OUTPROC0},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC1]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,
+&gt;&#32;&gt;&#32;1,&#32;DDP_COMPONENT_OVL0_OUTPROC1},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC2]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,
+&gt;&#32;&gt;&#32;2,&#32;DDP_COMPONENT_ID_MAX},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC3]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,
+&gt;&#32;&gt;&#32;3,&#32;DDP_COMPONENT_ID_MAX},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC4]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,
+&gt;&#32;&gt;&#32;4,&#32;DDP_COMPONENT_ID_MAX},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC5]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,
+&gt;&#32;&gt;&#32;5,&#32;DDP_COMPONENT_ID_MAX},
+&gt;&#32;
+&gt;&#32;Ditto.
+&gt;&#32;
+
+OK&#32;I&#32;will&#32;check&#32;this&#32;part,&#32;too.
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC6]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,
+&gt;&#32;&gt;&#32;6,&#32;DDP_COMPONENT_OVL1_OUTPROC0},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC7]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,
+&gt;&#32;&gt;&#32;7,&#32;DDP_COMPONENT_ID_MAX},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC8]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,
+&gt;&#32;&gt;&#32;8,&#32;DDP_COMPONENT_ID_MAX},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC9]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,
+&gt;&#32;&gt;&#32;9,&#32;DDP_COMPONENT_ID_MAX},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC10]&#32;=&#32;{
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,&#32;10,&#32;DDP_COMPONENT_ID_MAX},
+&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC11]&#32;=&#32;{
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,&#32;11,&#32;DDP_COMPONENT_ID_MAX},
+&gt;&#32;
+&gt;&#32;Ditto.
+&gt;&#32;
+
+OK&#32;I&#32;will&#32;check&#32;this&#32;part,&#32;too.
+&gt;&#32;&gt;&#32;+};
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;const&#32;unsigned&#32;int&#32;mt8196_mtk_ovl_main[]&#32;=&#32;{
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA2,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER1,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA3,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER2,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA4,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER3,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA5,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER4,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC0,
+&gt;&#32;&gt;&#32;+};
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;const&#32;unsigned&#32;int&#32;mt8196_mtk_ovl_ext[]&#32;=&#32;{
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA6,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER5,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA7,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER6,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA8,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER7,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA9,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER8,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC1,
+&gt;&#32;&gt;&#32;+};
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;const&#32;unsigned&#32;int&#32;mt8196_mtk_ovl_third[]&#32;=&#32;{
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA12,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER11,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA13,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER12,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA14,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER13,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA15,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER14,
+&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC6,
+&gt;&#32;&gt;&#32;+};
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;enum&#32;mtk_ovlsys_adaptor_comp_type&#32;get_type(enum
+&gt;&#32;&gt;&#32;mtk_ovlsys_adaptor_comp_id&#32;id)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+return&#32;comp_matches[id].type;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;enum&#32;mtk_ddp_comp_id&#32;get_ddp_comp_id(enum
+&gt;&#32;&gt;&#32;mtk_ovlsys_adaptor_comp_id&#32;id)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+return&#32;comp_matches[id].comp_id;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;struct&#32;device&#32;*get_comp_by_type_idx(struct&#32;device&#32;*dev,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#32;enum
+&gt;&#32;&gt;&#32;mtk_ovlsys_adaptor_comp_type&#32;type,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#32;unsigned&#32;int&#32;idx)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+int&#32;i;
+&gt;&#32;&gt;&#32;+int&#32;count&#32;=&#32;0;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size;&#32;i++)&#32;{
+&gt;&#32;&gt;&#32;+if&#32;(get_type(priv-&gt;path[i])&#32;==&#32;type)&#32;{
+&gt;&#32;&gt;&#32;+if&#32;(count&#32;==&#32;idx)
+&gt;&#32;&gt;&#32;+return&#32;priv-
+&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]];
+&gt;&#32;&gt;&#32;+count++;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+return&#32;NULL;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_layer_config(struct&#32;device&#32;*dev,&#32;unsigned
+&gt;&#32;&gt;&#32;int&#32;idx,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#32;struct&#32;mtk_plane_state
+&gt;&#32;&gt;&#32;*state,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#32;struct&#32;cmdq_pkt&#32;*cmdq_pkt)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_plane_pending_state&#32;*pending&#32;=&#32;&amp;state-&gt;pending;
+&gt;&#32;&gt;&#32;+struct&#32;device&#32;*exdma;
+&gt;&#32;&gt;&#32;+struct&#32;device&#32;*blender;
+&gt;&#32;&gt;&#32;+unsigned&#32;int&#32;align_width&#32;=&#32;0;
+&gt;&#32;&gt;&#32;+const&#32;struct&#32;drm_format_info&#32;*fmt_info&#32;=
+&gt;&#32;&gt;&#32;drm_format_info(pending-&gt;format);
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+dev_dbg(dev,&#32;&quot;%s+&#32;idx:%d,&#32;enable:%d,&#32;fmt:0x%x&#92;n&quot;,
+&gt;&#32;&gt;&#32;__func__,&#32;idx,
+&gt;&#32;&gt;&#32;+pending-&gt;enable,&#32;pending-&gt;format);
+&gt;&#32;&gt;&#32;+dev_dbg(dev,&#32;&quot;addr&#32;0x%pad,&#32;fb&#32;w:%d,&#32;{%d,%d,%d,%d}&#92;n&quot;,
+&gt;&#32;&gt;&#32;+&amp;pending-&gt;addr,&#32;(pending-&gt;pitch&#32;/&#32;fmt_info-
+&gt;&#32;&gt;&#32;&gt;cpp[0]),
+&gt;&#32;&gt;&#32;+pending-&gt;x,&#32;pending-&gt;y,&#32;pending-&gt;width,&#32;pending-
+&gt;&#32;&gt;&#32;&gt;height);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+exdma&#32;=&#32;get_comp_by_type_idx(dev,
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;idx);
+&gt;&#32;&gt;&#32;+blender&#32;=&#32;get_comp_by_type_idx(dev,
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;idx);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+/*&#32;OVLSYS&#32;is&#32;in&#32;1T2P&#32;domain,&#32;width&#32;needs&#32;to&#32;be&#32;2&#32;pixels
+&gt;&#32;&gt;&#32;align&#32;*/
+&gt;&#32;&gt;&#32;+align_width&#32;=&#32;ALIGN_DOWN(pending-&gt;width,&#32;2);
+&gt;&#32;
+&gt;&#32;align_width&#32;is&#32;useless,&#32;so&#32;drop&#32;it.
+&gt;&#32;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(!pending-&gt;enable&#32;||&#32;pending-&gt;height&#32;==&#32;0&#32;||
+&gt;&#32;&gt;&#32;align_width&#32;==&#32;0&#32;||
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#32;pending-&gt;x&#32;&gt;&#32;priv-&gt;max_size&#32;||&#32;pending-&gt;y&#32;&gt;&#32;priv-
+&gt;&#32;&gt;&#32;&gt;max_size)&#32;{
+&gt;&#32;&gt;&#32;+pending-&gt;enable&#32;=&#32;false;
+&gt;&#32;&gt;&#32;+mtk_disp_exdma_stop(exdma,&#32;cmdq_pkt);
+&gt;&#32;&gt;&#32;+mtk_disp_blender_layer_config(blender,&#32;state,
+&gt;&#32;&gt;&#32;cmdq_pkt);
+&gt;&#32;&gt;&#32;+return;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+mtk_disp_exdma_config(exdma,&#32;state,&#32;cmdq_pkt);
+&gt;&#32;
+&gt;&#32;mtk_disp_exdma_config()&#32;does&#32;something&#32;like&#32;mtk_ovl_layer_config(),
+&gt;&#32;so&#32;I&#32;would&#32;like&#32;to&#32;rename&#32;it&#32;to&#32;mtk_disp_exdma_layer_config().
+&gt;&#32;
+Sure,&#32;I&#32;will&#32;rename&#32;the&#32;function&#32;name.
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+mtk_disp_blender_layer_config(blender,&#32;state,&#32;cmdq_pkt);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+mtk_disp_exdma_start(exdma,&#32;cmdq_pkt);
+&gt;&#32;
+&gt;&#32;Why&#32;call&#32;start&#32;in&#32;layer&#32;config&#63;
+&gt;&#32;start&#32;should&#32;be&#32;called&#32;in&#32;start.
+&gt;&#32;
+
+Sure,&#32;I&#32;will&#32;fix&#32;the&#32;order&#32;of&#32;setting.
+&gt;&#32;&gt;&#32;+mtk_disp_blender_start(blender,&#32;cmdq_pkt);
+&gt;&#32;
+&gt;&#32;Ditto.
+
+OK&#32;I&#32;will&#32;check&#32;this&#32;part,&#32;too.
+&gt;&#32;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_config(struct&#32;device&#32;*dev,&#32;unsigned&#32;int&#32;w,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#160;&#32;unsigned&#32;int&#32;h,&#32;unsigned&#32;int
+&gt;&#32;&gt;&#32;vrefresh,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#160;&#32;unsigned&#32;int&#32;bpc,&#32;struct&#32;cmdq_pkt
+&gt;&#32;&gt;&#32;*cmdq_pkt)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+int&#32;i;
+&gt;&#32;&gt;&#32;+int&#32;blender_idx&#32;=&#32;0;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size;&#32;i++)&#32;{
+&gt;&#32;&gt;&#32;+enum&#32;mtk_disp_blender_layer&#32;blender;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(get_type(priv-&gt;path[i])&#32;==
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER)&#32;{
+&gt;&#32;&gt;&#32;+blender_idx++;
+&gt;&#32;&gt;&#32;+if&#32;(priv-&gt;layer_nr&#32;==&#32;1)
+&gt;&#32;&gt;&#32;+blender&#32;=&#32;SINGLE_BLENDER;
+&gt;&#32;&gt;&#32;+else&#32;if&#32;(blender_idx&#32;==&#32;1)
+&gt;&#32;&gt;&#32;+blender&#32;=&#32;FIRST_BLENDER;
+&gt;&#32;&gt;&#32;+else&#32;if&#32;(blender_idx&#32;==&#32;priv-&gt;layer_nr)
+&gt;&#32;&gt;&#32;+blender&#32;=&#32;LAST_BLENDER;
+&gt;&#32;&gt;&#32;+else
+&gt;&#32;&gt;&#32;+blender&#32;=&#32;OTHERS;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+mtk_disp_blender_config(priv-
+&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]],&#32;w,&#32;h,
+&gt;&#32;&gt;&#32;+vrefresh,&#32;bpc,
+&gt;&#32;&gt;&#32;blender,&#32;cmdq_pkt);
+&gt;&#32;
+&gt;&#32;mtk_disp_blender_config(priv-&gt;ovl_adaptor_comp[priv-&gt;path[i]],&#32;w,&#32;h,
+&gt;&#32;vrefresh,&#32;bpc,&#32;blender_idx&#32;==&#32;1,&#32;blender_idx
+&gt;&#32;==&#32;priv-&gt;layer_nr,&#32;cmdq_pkt);
+&gt;&#32;
+&gt;&#32;&gt;&#32;+}&#32;else&#32;if&#32;(get_type(priv-&gt;path[i])&#32;==
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC)&#32;{
+&gt;&#32;&gt;&#32;+mtk_disp_outproc_config(priv-
+&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]],&#32;w,&#32;h,
+&gt;&#32;&gt;&#32;+vrefresh,&#32;bpc,
+&gt;&#32;&gt;&#32;cmdq_pkt);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+int&#32;mtk_ovlsys_adaptor_layer_check(struct&#32;device&#32;*dev,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#32;unsigned&#32;int&#32;idx,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#32;struct&#32;mtk_plane_state
+&gt;&#32;&gt;&#32;*mtk_state)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;drm_plane_state&#32;*state&#32;=&#32;&amp;mtk_state-&gt;base;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+/*&#32;Check&#32;if&#32;any&#32;unsupported&#32;rotation&#32;is&#32;set&#32;*/
+&gt;&#32;&gt;&#32;+if&#32;(state-&gt;rotation&#32;&amp;&#32;&#126;DRM_MODE_ROTATE_0)
+&gt;&#32;&gt;&#32;+return&#32;-EINVAL;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+return&#32;0;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_start(struct&#32;device&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+int&#32;i;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size;&#32;i++)&#32;{
+&gt;&#32;&gt;&#32;+if&#32;(get_type(priv-&gt;path[i])&#32;==
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA)
+&gt;&#32;&gt;&#32;+mtk_disp_exdma_start(priv-
+&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]],&#32;NULL);
+&gt;&#32;
+&gt;&#32;The&#32;start&#32;never&#32;use&#32;cmdq,&#32;so&#32;remove&#32;the&#32;cmdq&#32;parameter.
+
+Ok,&#32;I&#32;will&#32;fix&#32;this&#32;part.
+&gt;&#32;
+&gt;&#32;&gt;&#32;+else&#32;if&#32;(get_type(priv-&gt;path[i])&#32;==
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER)
+&gt;&#32;&gt;&#32;+mtk_disp_blender_start(priv-
+&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]],&#32;NULL);
+&gt;&#32;
+&gt;&#32;Ditto.
+&gt;&#32;
+Ok,&#32;I&#32;will&#32;fix&#32;this&#32;part.&gt;&#32;&gt;&#32;+else
+&gt;&#32;&gt;&#32;+mtk_disp_outproc_start(priv-
+&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]]);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_stop(struct&#32;device&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+int&#32;i;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size;&#32;i++)&#32;{
+&gt;&#32;&gt;&#32;+if&#32;(get_type(priv-&gt;path[i])&#32;==
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA)
+&gt;&#32;&gt;&#32;+mtk_disp_exdma_stop(priv-
+&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]],&#32;NULL);
+&gt;&#32;
+&gt;&#32;Ditto.
+
+Ok,&#32;I&#32;will&#32;fix&#32;this&#32;part.th.
+&gt;&#32;
+&gt;&#32;&gt;&#32;+else&#32;if&#32;(get_type(priv-&gt;path[i])&#32;==
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER)
+&gt;&#32;&gt;&#32;+mtk_disp_blender_stop(priv-
+&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]],&#32;NULL);
+&gt;&#32;
+&gt;&#32;Ditto.
+
+Ok,&#32;I&#32;will&#32;fix&#32;this&#32;part.
+&gt;&#32;
+&gt;&#32;&gt;&#32;+else
+&gt;&#32;&gt;&#32;+mtk_disp_outproc_stop(priv-
+&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]]);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+int&#32;mtk_ovlsys_adaptor_clk_enable(struct&#32;device&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+struct&#32;device&#32;*comp;
+&gt;&#32;&gt;&#32;+int&#32;ret;
+&gt;&#32;&gt;&#32;+int&#32;i;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;OVLSYS_ADAPTOR_ID_MAX;&#32;i++)&#32;{
+&gt;&#32;&gt;&#32;+comp&#32;=&#32;priv-&gt;ovl_adaptor_comp[i];
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(!comp)
+&gt;&#32;&gt;&#32;+continue;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(get_type(i)&#32;!=&#32;OVLSYS_ADAPTOR_TYPE_EXDMA)
+&gt;&#32;&gt;&#32;+continue;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+ret&#32;=&#32;pm_runtime_get_sync(comp);
+&gt;&#32;
+&gt;&#32;Refer&#32;to&#32;mtk_ovl_adaptor_power_on().
+&gt;&#32;This&#32;should&#32;be&#32;done&#32;in&#32;power_on()&#32;callback&#32;function.
+
+Sure,&#32;I&#32;will&#32;align&#32;the&#32;power&#32;sequence&#32;with&#32;the&#32;function
+mtk_ovl_adaptor_power_on().
+&gt;&#32;
+&gt;&#32;&gt;&#32;+if&#32;(ret&#32;&lt;&#32;0)&#32;{
+&gt;&#32;&gt;&#32;+dev_err(dev,&#32;&quot;Failed&#32;to&#32;enable&#32;power
+&gt;&#32;&gt;&#32;domain&#32;%d,&#32;err&#32;%d&#92;n&quot;,&#32;i,&#32;ret);
+&gt;&#32;&gt;&#32;+goto&#32;pwr_err;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;OVLSYS_ADAPTOR_ID_MAX;&#32;i++)&#32;{
+&gt;&#32;&gt;&#32;+comp&#32;=&#32;priv-&gt;ovl_adaptor_comp[i];
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(!comp)
+&gt;&#32;&gt;&#32;+continue;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(get_type(i)&#32;==&#32;OVLSYS_ADAPTOR_TYPE_EXDMA)
+&gt;&#32;&gt;&#32;+ret&#32;=&#32;mtk_disp_exdma_clk_enable(comp);
+&gt;&#32;&gt;&#32;+else&#32;if&#32;(get_type(i)&#32;==
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER)
+&gt;&#32;&gt;&#32;+ret&#32;=&#32;mtk_disp_blender_clk_enable(comp);
+&gt;&#32;&gt;&#32;+else
+&gt;&#32;&gt;&#32;+ret&#32;=&#32;mtk_disp_outproc_clk_enable(comp);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(ret)&#32;{
+&gt;&#32;&gt;&#32;+dev_err(dev,&#32;&quot;Failed&#32;to&#32;enable&#32;clock&#32;%d,
+&gt;&#32;&gt;&#32;err&#32;%d&#92;n&quot;,&#32;i,&#32;ret);
+&gt;&#32;&gt;&#32;+goto&#32;clk_err;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+return&#32;ret;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+clk_err:
+&gt;&#32;&gt;&#32;+while&#32;(--i&#32;&gt;=&#32;0)&#32;{
+&gt;&#32;&gt;&#32;+comp&#32;=&#32;priv-&gt;ovl_adaptor_comp[i];
+&gt;&#32;&gt;&#32;+if&#32;(!comp)
+&gt;&#32;&gt;&#32;+continue;
+&gt;&#32;&gt;&#32;+if&#32;(get_type(i)&#32;==&#32;OVLSYS_ADAPTOR_TYPE_EXDMA)
+&gt;&#32;&gt;&#32;+mtk_disp_exdma_clk_disable(comp);
+&gt;&#32;&gt;&#32;+else&#32;if&#32;(get_type(i)&#32;==
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER)
+&gt;&#32;&gt;&#32;+mtk_disp_blender_clk_disable(comp);
+&gt;&#32;&gt;&#32;+else
+&gt;&#32;&gt;&#32;+mtk_disp_outproc_clk_disable(comp);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+i&#32;=&#32;OVLSYS_ADAPTOR_BLENDER0;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+pwr_err:
+&gt;&#32;&gt;&#32;+while&#32;(--i&#32;&gt;=&#32;0)&#32;{
+&gt;&#32;&gt;&#32;+comp&#32;=&#32;priv-&gt;ovl_adaptor_comp[i];
+&gt;&#32;&gt;&#32;+if&#32;(!comp)
+&gt;&#32;&gt;&#32;+continue;
+&gt;&#32;&gt;&#32;+pm_runtime_put(priv-&gt;ovl_adaptor_comp[i]);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+return&#32;ret;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_clk_disable(struct&#32;device&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+struct&#32;device&#32;*comp;
+&gt;&#32;&gt;&#32;+int&#32;i;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;OVLSYS_ADAPTOR_ID_MAX;&#32;i++)&#32;{
+&gt;&#32;&gt;&#32;+comp&#32;=&#32;priv-&gt;ovl_adaptor_comp[i];
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(!comp)
+&gt;&#32;&gt;&#32;+continue;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(get_type(i)&#32;==&#32;OVLSYS_ADAPTOR_TYPE_EXDMA)&#32;{
+&gt;&#32;&gt;&#32;+mtk_disp_exdma_clk_disable(comp);
+&gt;&#32;&gt;&#32;+pm_runtime_put(comp);
+&gt;&#32;&gt;&#32;+}&#32;else&#32;if&#32;(get_type(i)&#32;==
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER)&#32;{
+&gt;&#32;&gt;&#32;+mtk_disp_blender_clk_disable(comp);
+&gt;&#32;&gt;&#32;+}&#32;else&#32;{
+&gt;&#32;&gt;&#32;+mtk_disp_outproc_clk_disable(comp);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+unsigned&#32;int&#32;mtk_ovlsys_adaptor_layer_nr(struct&#32;device&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+return&#32;priv-&gt;layer_nr;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+struct&#32;device&#32;*mtk_ovlsys_adaptor_dma_dev_get(struct&#32;device&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+return&#32;priv-&gt;ovl_adaptor_comp[priv-&gt;path[0]];
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_register_vblank_cb(struct&#32;device&#32;*dev,
+&gt;&#32;&gt;&#32;void&#32;(*vblank_cb)(void&#32;*),
+&gt;&#32;&gt;&#32;+&#160;&#160;&#32;void&#32;*vblank_cb_data)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+mtk_disp_outproc_register_vblank_cb(priv-
+&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[priv-&gt;path_size&#32;-&#32;1]],
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#32;vblank_cb,
+&gt;&#32;&gt;&#32;vblank_cb_data);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_unregister_vblank_cb(struct&#32;device&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+struct&#32;device&#32;*comp&#32;=&#32;priv-&gt;ovl_adaptor_comp[priv-
+&gt;&#32;&gt;&#32;&gt;path[priv-&gt;path_size&#32;-&#32;1]];
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(!priv-&gt;children_bound)
+&gt;&#32;
+&gt;&#32;In&#32;ovl&#32;adaptor,&#32;it&#32;does&#32;not&#32;check&#32;this.&#32;So&#32;remove&#32;this&#32;checking.
+
+This&#32;is&#32;because&#32;of&#32;the&#32;mt8916&#39;s&#32;new&#32;hardwarew&#32;design.
+
+ovlsys&#32;adaptor&#32;have&#32;to&#32;find&#32;the&#32;possible&#32;path.
+&gt;&#32;
+&gt;&#32;&gt;&#32;+return;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+mtk_disp_outproc_unregister_vblank_cb(comp);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_enable_vblank(struct&#32;device&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+mtk_disp_outproc_enable_vblank(priv-
+&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[priv-&gt;path_size&#32;-&#32;1]]);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_disable_vblank(struct&#32;device&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+mtk_disp_outproc_disable_vblank(priv-
+&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[priv-&gt;path_size&#32;-&#32;1]]);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+const&#32;u32&#32;*mtk_ovlsys_adaptor_get_formats(struct&#32;device&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+return&#32;mtk_disp_exdma_get_formats(priv-
+&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[0]]);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+size_t&#32;mtk_ovlsys_adaptor_get_num_formats(struct&#32;device&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+return&#32;mtk_disp_exdma_get_num_formats(priv-
+&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[0]]);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_add_comp(struct&#32;device&#32;*dev,&#32;struct
+&gt;&#32;&gt;&#32;mtk_mutex&#32;*mutex)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+int&#32;i;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size;&#32;i++)
+&gt;&#32;&gt;&#32;+mtk_mutex_add_comp(mutex,&#32;get_ddp_comp_id(priv-
+&gt;&#32;&gt;&#32;&gt;path[i]));
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_remove_comp(struct&#32;device&#32;*dev,&#32;struct
+&gt;&#32;&gt;&#32;mtk_mutex&#32;*mutex)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+int&#32;i;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size;&#32;i++)
+&gt;&#32;&gt;&#32;+mtk_mutex_remove_comp(mutex,&#32;get_ddp_comp_id(priv-
+&gt;&#32;&gt;&#32;&gt;path[i]));
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_connect(struct&#32;device&#32;*dev,&#32;struct&#32;device
+&gt;&#32;&gt;&#32;*mmsys_dev,&#32;unsigned&#32;int&#32;next)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+int&#32;i;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size&#32;-&#32;1;&#32;i++)
+&gt;&#32;&gt;&#32;+mtk_mmsys_ddp_connect(mmsys_dev,
+&gt;&#32;&gt;&#32;get_ddp_comp_id(priv-&gt;path[i]),
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#32;get_ddp_comp_id(priv-&gt;path[i
+&gt;&#32;&gt;&#32;+&#32;1]));
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+mtk_mmsys_ddp_connect(mmsys_dev,&#32;get_ddp_comp_id(priv-
+&gt;&#32;&gt;&#32;&gt;path[i]),&#32;next);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_disconnect(struct&#32;device&#32;*dev,&#32;struct
+&gt;&#32;&gt;&#32;device&#32;*mmsys_dev,&#32;unsigned&#32;int&#32;next)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+int&#32;i;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size&#32;-&#32;1;&#32;i++)
+&gt;&#32;&gt;&#32;+mtk_mmsys_ddp_disconnect(mmsys_dev,
+&gt;&#32;&gt;&#32;get_ddp_comp_id(priv-&gt;path[i]),
+&gt;&#32;&gt;&#32;+&#32;get_ddp_comp_id(priv-
+&gt;&#32;&gt;&#32;&gt;path[i&#32;+&#32;1]));
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+mtk_mmsys_ddp_disconnect(mmsys_dev,&#32;get_ddp_comp_id(priv-
+&gt;&#32;&gt;&#32;&gt;path[i]),&#32;next);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;int&#32;ovlsys_adaptor_comp_get_id(struct&#32;device&#32;*dev,&#32;struct
+&gt;&#32;&gt;&#32;device_node&#32;*node,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#32;enum
+&gt;&#32;&gt;&#32;mtk_ovlsys_adaptor_comp_type&#32;type,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#32;enum&#32;mtk_ddp_comp_id
+&gt;&#32;&gt;&#32;*comp_id)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+int&#32;alias_id&#32;=&#32;of_alias_get_id(node,
+&gt;&#32;&gt;&#32;private_comp_stem[type]);
+&gt;&#32;&gt;&#32;+int&#32;i;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;ARRAY_SIZE(comp_matches);&#32;i++)
+&gt;&#32;&gt;&#32;+if&#32;(comp_matches[i].type&#32;==&#32;type&#32;&amp;&amp;
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#32;comp_matches[i].alias_id&#32;==&#32;alias_id)&#32;{
+&gt;&#32;&gt;&#32;+*comp_id&#32;=&#32;comp_matches[i].comp_id;
+&gt;&#32;&gt;&#32;+return&#32;i;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+dev_warn(dev,&#32;&quot;Failed&#32;to&#32;get&#32;id.&#32;type:&#32;%d,&#32;alias:&#32;%d&#92;n&quot;,
+&gt;&#32;&gt;&#32;type,&#32;alias_id);
+&gt;&#32;&gt;&#32;+return&#32;-EINVAL;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;const&#32;struct&#32;of_device_id&#32;mtk_ovlsys_adaptor_comp_dt_ids[]
+&gt;&#32;&gt;&#32;=&#32;{
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+.compatible&#32;=&#32;&quot;mediatek,mt8196-exdma&quot;,
+&gt;&#32;&gt;&#32;+.data&#32;=&#32;(void&#32;*)OVLSYS_ADAPTOR_TYPE_EXDMA,
+&gt;&#32;&gt;&#32;+},&#32;{
+&gt;&#32;&gt;&#32;+.compatible&#32;=&#32;&quot;mediatek,mt8196-blender&quot;,
+&gt;&#32;&gt;&#32;+.data&#32;=&#32;(void&#32;*)OVLSYS_ADAPTOR_TYPE_BLENDER,
+&gt;&#32;&gt;&#32;+},&#32;{
+&gt;&#32;&gt;&#32;+.compatible&#32;=&#32;&quot;mediatek,mt8196-outproc&quot;,
+&gt;&#32;&gt;&#32;+.data&#32;=&#32;(void&#32;*)OVLSYS_ADAPTOR_TYPE_OUTPROC,
+&gt;&#32;&gt;&#32;+},
+&gt;&#32;&gt;&#32;+{},
+&gt;&#32;&gt;&#32;+};
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;int&#32;ovlsys_adaptor_comp_init(struct&#32;device&#32;*dev,&#32;struct
+&gt;&#32;&gt;&#32;component_match&#32;**match)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+struct&#32;device_node&#32;*node,&#32;*parent;
+&gt;&#32;&gt;&#32;+struct&#32;platform_device&#32;*comp_pdev;
+&gt;&#32;&gt;&#32;+int&#32;i;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+parent&#32;=&#32;dev-&gt;parent-&gt;parent-&gt;of_node-&gt;parent;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+for_each_child_of_node(parent,&#32;node)&#32;{
+&gt;&#32;&gt;&#32;+const&#32;struct&#32;of_device_id&#32;*of_id;
+&gt;&#32;&gt;&#32;+enum&#32;mtk_ovlsys_adaptor_comp_type&#32;type;
+&gt;&#32;&gt;&#32;+enum&#32;mtk_ddp_comp_id&#32;comp_id;
+&gt;&#32;&gt;&#32;+int&#32;id;
+&gt;&#32;&gt;&#32;+bool&#32;found&#32;=&#32;false;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+of_id&#32;=
+&gt;&#32;&gt;&#32;of_match_node(mtk_ovlsys_adaptor_comp_dt_ids,&#32;node);
+&gt;&#32;&gt;&#32;+if&#32;(!of_id)
+&gt;&#32;&gt;&#32;+continue;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(!of_device_is_available(node))&#32;{
+&gt;&#32;&gt;&#32;+dev_dbg(dev,&#32;&quot;Skipping&#32;disabled&#32;component
+&gt;&#32;&gt;&#32;%pOF&#92;n&quot;,
+&gt;&#32;&gt;&#32;+node);
+&gt;&#32;&gt;&#32;+continue;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+type&#32;=&#32;(enum
+&gt;&#32;&gt;&#32;mtk_ovlsys_adaptor_comp_type)(uintptr_t)of_id-&gt;data;
+&gt;&#32;&gt;&#32;+id&#32;=&#32;ovlsys_adaptor_comp_get_id(dev,&#32;node,&#32;type,
+&gt;&#32;&gt;&#32;&amp;comp_id);
+&gt;&#32;&gt;&#32;+if&#32;(id&#32;&lt;&#32;0)&#32;{
+&gt;&#32;&gt;&#32;+dev_warn(dev,&#32;&quot;Skipping&#32;unknown&#32;component
+&gt;&#32;&gt;&#32;%pOF&#92;n&quot;,
+&gt;&#32;&gt;&#32;+&#32;node);
+&gt;&#32;&gt;&#32;+continue;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size;&#32;i++)
+&gt;&#32;&gt;&#32;+if&#32;(priv-&gt;path[i]&#32;==&#32;id)
+&gt;&#32;&gt;&#32;+found&#32;=&#32;true;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(!found)
+&gt;&#32;&gt;&#32;+continue;
+&gt;&#32;
+&gt;&#32;ovl&#32;adaptor&#32;does&#32;not&#32;check&#32;this,&#32;why&#32;ovlsys&#32;need&#32;this&#63;
+&gt;&#32;If&#32;this&#32;is&#32;removed,&#32;this&#32;function&#32;is&#32;similar&#32;to&#32;the&#32;one&#32;in&#32;ovl
+&gt;&#32;adaptor,
+&gt;&#32;would&#32;you&#32;try&#32;to&#32;rewrite&#32;this&#32;function&#32;to&#32;be&#32;almost&#32;the&#32;same&#32;with&#32;the
+&gt;&#32;one&#32;in&#32;ovl&#32;adator&#63;
+&gt;&#32;Not&#32;merging&#32;it,&#32;just&#32;implement&#32;almost&#32;the&#32;same.
+This&#32;is&#32;because&#32;of&#32;the&#32;mt8916&#39;s&#32;new&#32;hardwarew&#32;design.
+
+ovlsys&#32;adaptor&#32;have&#32;to&#32;find&#32;the&#32;possible&#32;path.
+
+&gt;&#32;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+comp_pdev&#32;=&#32;of_find_device_by_node(node);
+&gt;&#32;&gt;&#32;+if&#32;(!comp_pdev)
+&gt;&#32;&gt;&#32;+return&#32;-EPROBE_DEFER;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+priv-&gt;ovl_adaptor_comp[id]&#32;=&#32;&amp;comp_pdev-&gt;dev;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+drm_of_component_match_add(dev,&#32;match,
+&gt;&#32;&gt;&#32;component_compare_of,&#32;node);
+&gt;&#32;&gt;&#32;+dev_dbg(dev,&#32;&quot;Adding&#32;component&#32;match&#32;for&#32;%pOF&#92;n&quot;,
+&gt;&#32;&gt;&#32;node);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(!*match)&#32;{
+&gt;&#32;&gt;&#32;+dev_err(dev,&#32;&quot;No&#32;match&#32;device&#32;for
+&gt;&#32;&gt;&#32;ovlsys_adaptor&#92;n&quot;);
+&gt;&#32;&gt;&#32;+return&#32;-ENODEV;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+return&#32;0;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;int&#32;mtk_disp_ovlsys_adaptor_comp_bind(struct&#32;device&#32;*dev,
+&gt;&#32;&gt;&#32;struct&#32;device&#32;*master,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#32;void&#32;*data)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(!priv-&gt;children_bound)
+&gt;&#32;&gt;&#32;+return&#32;-EPROBE_DEFER;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+return&#32;0;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;void&#32;mtk_disp_ovlsys_adaptor_comp_unbind(struct&#32;device
+&gt;&#32;&gt;&#32;*dev,&#32;struct&#32;device&#32;*master,
+&gt;&#32;&gt;&#32;+void&#32;*data)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;const&#32;struct&#32;component_ops&#32;mtk_disp_ovlsys_adaptor_comp_ops
+&gt;&#32;&gt;&#32;=&#32;{
+&gt;&#32;&gt;&#32;+.bind=&#32;mtk_disp_ovlsys_adaptor_comp_bind,
+&gt;&#32;&gt;&#32;+.unbind&#32;=&#32;mtk_disp_ovlsys_adaptor_comp_unbind,
+&gt;&#32;&gt;&#32;+};
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;int&#32;mtk_disp_ovlsys_adaptor_master_bind(struct&#32;device&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+int&#32;ret,&#32;i;
+&gt;&#32;&gt;&#32;+unsigned&#32;int&#32;layer_nr&#32;=&#32;0;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+ret&#32;=&#32;component_bind_all(dev,&#32;priv-&gt;mmsys_dev);
+&gt;&#32;&gt;&#32;+if&#32;(ret)
+&gt;&#32;&gt;&#32;+return&#32;dev_err_probe(dev,&#32;ret,&#32;&quot;component_bind_all
+&gt;&#32;&gt;&#32;failed!&#92;n&quot;);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+priv-&gt;children_bound&#32;=&#32;true;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size;&#32;i++)
+&gt;&#32;&gt;&#32;+if&#32;(comp_matches[priv-&gt;path[i]].type&#32;==
+&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER)
+&gt;&#32;&gt;&#32;+layer_nr++;
+&gt;&#32;&gt;&#32;+priv-&gt;layer_nr&#32;=&#32;layer_nr;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+return&#32;0;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;void&#32;mtk_disp_ovlsys_adaptor_master_unbind(struct&#32;device
+&gt;&#32;&gt;&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=
+&gt;&#32;&gt;&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+priv-&gt;children_bound&#32;=&#32;false;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;const&#32;struct&#32;component_master_ops
+&gt;&#32;&gt;&#32;mtk_disp_ovlsys_adaptor_master_ops&#32;=&#32;{
+&gt;&#32;&gt;&#32;+.bind=&#32;mtk_disp_ovlsys_adaptor_master_bind,
+&gt;&#32;&gt;&#32;+.unbind=
+&gt;&#32;&gt;&#32;mtk_disp_ovlsys_adaptor_master_unbind,
+&gt;&#32;&gt;&#32;+};
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;const&#32;struct&#32;mtk_disp_ovlsys_adaptor
+&gt;&#32;&gt;&#32;mt8196_ovlsys_adaptor_driver_data&#32;=&#32;{
+&gt;&#32;&gt;&#32;+.max_size&#32;=&#32;8191,
+&gt;&#32;
+&gt;&#32;This&#32;is&#32;the&#32;first&#32;SoC&#32;has&#32;ovlsys,&#32;so&#32;it&#39;s&#32;not&#32;necessary&#32;to&#32;has&#32;driver
+&gt;&#32;data.
+&gt;&#32;After&#32;other&#32;SoC&#32;ovlsys&#32;is&#32;added,&#32;then&#32;consider&#32;to&#32;add&#32;driver&#32;data.
+&gt;&#32;So,
+&gt;&#32;
+&gt;&#32;#define&#32;OVLSYS_MAX_SIZE&#32;8191
+&gt;&#32;
+&gt;&#32;&gt;&#32;+};
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;int&#32;mtk_disp_ovlsys_adaptor_probe(struct&#32;platform_device
+&gt;&#32;&gt;&#32;*pdev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv;
+&gt;&#32;&gt;&#32;+struct&#32;device&#32;*dev&#32;=&#32;&amp;pdev-&gt;dev;
+&gt;&#32;&gt;&#32;+struct&#32;component_match&#32;*match&#32;=&#32;NULL;
+&gt;&#32;&gt;&#32;+struct&#32;mtk_drm_ovlsys_private&#32;*ovlsys_priv;
+&gt;&#32;&gt;&#32;+int&#32;ret;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+priv&#32;=&#32;devm_kzalloc(dev,&#32;sizeof(*priv),&#32;GFP_KERNEL);
+&gt;&#32;&gt;&#32;+if&#32;(!priv)
+&gt;&#32;&gt;&#32;+return&#32;-ENOMEM;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+platform_set_drvdata(pdev,&#32;priv);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+ovlsys_priv&#32;=&#32;pdev-&gt;dev.platform_data;
+&gt;&#32;&gt;&#32;+priv-&gt;mmsys_dev&#32;=&#32;ovlsys_priv-&gt;mmsys_dev;
+&gt;&#32;&gt;&#32;+priv-&gt;max_size&#32;=
+&gt;&#32;&gt;&#32;mt8196_ovlsys_adaptor_driver_data.max_size;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(ovlsys_priv-&gt;use_path&#32;==&#32;0)&#32;{
+&gt;&#32;&gt;&#32;+priv-&gt;path&#32;=&#32;mt8196_mtk_ovl_main;
+&gt;&#32;&gt;&#32;+priv-&gt;path_size&#32;=&#32;ARRAY_SIZE(mt8196_mtk_ovl_main);
+&gt;&#32;&gt;&#32;+}&#32;else&#32;if&#32;(ovlsys_priv-&gt;use_path&#32;==&#32;1)&#32;{
+&gt;&#32;&gt;&#32;+priv-&gt;path&#32;=&#32;mt8196_mtk_ovl_ext;
+&gt;&#32;&gt;&#32;+priv-&gt;path_size&#32;=&#32;ARRAY_SIZE(mt8196_mtk_ovl_ext);
+&gt;&#32;&gt;&#32;+}&#32;else&#32;{
+&gt;&#32;&gt;&#32;+priv-&gt;path&#32;=&#32;mt8196_mtk_ovl_third;
+&gt;&#32;&gt;&#32;+priv-&gt;path_size&#32;=
+&gt;&#32;&gt;&#32;ARRAY_SIZE(mt8196_mtk_ovl_third);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+ret&#32;=&#32;ovlsys_adaptor_comp_init(dev,&#32;&amp;match);
+&gt;&#32;&gt;&#32;+if&#32;(ret&#32;&lt;&#32;0)
+&gt;&#32;&gt;&#32;+return&#32;ret;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+component_master_add_with_match(dev,
+&gt;&#32;&gt;&#32;&amp;mtk_disp_ovlsys_adaptor_master_ops,&#32;match);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+pm_runtime_enable(dev);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+ret&#32;=&#32;component_add(dev,
+&gt;&#32;&gt;&#32;&amp;mtk_disp_ovlsys_adaptor_comp_ops);
+&gt;&#32;&gt;&#32;+if&#32;(ret&#32;!=&#32;0)&#32;{
+&gt;&#32;&gt;&#32;+pm_runtime_disable(dev);
+&gt;&#32;&gt;&#32;+dev_err(dev,&#32;&quot;Failed&#32;to&#32;add&#32;component:&#32;%d&#92;n&quot;,
+&gt;&#32;&gt;&#32;ret);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+return&#32;ret;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;void&#32;mtk_disp_ovlsys_adaptor_remove(struct&#32;platform_device
+&gt;&#32;&gt;&#32;*pdev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+component_master_del(&amp;pdev-&gt;dev,
+&gt;&#32;&gt;&#32;&amp;mtk_disp_ovlsys_adaptor_master_ops);
+&gt;&#32;&gt;&#32;+pm_runtime_disable(&amp;pdev-&gt;dev);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+struct&#32;platform_driver&#32;mtk_disp_ovlsys_adaptor_driver&#32;=&#32;{
+&gt;&#32;&gt;&#32;+.probe=&#32;mtk_disp_ovlsys_adaptor_probe,
+&gt;&#32;&gt;&#32;+.remove=&#32;mtk_disp_ovlsys_adaptor_remove,
+&gt;&#32;&gt;&#32;+.driver=&#32;{
+&gt;&#32;&gt;&#32;+.name=&#32;&quot;mediatek-disp-ovlsys-adaptor&quot;,
+&gt;&#32;&gt;&#32;+.owner=&#32;THIS_MODULE,
+&gt;&#32;&gt;&#32;+},
+&gt;&#32;&gt;&#32;+};
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+MODULE_AUTHOR(&quot;Nancy&#32;Lin&#32;&lt;nancy.lin@mediatek.com&gt;&quot;);
+&gt;&#32;&gt;&#32;+MODULE_DESCRIPTION(&quot;MediaTek&#32;Ovlsys&#32;Adaptor&#32;Driver&quot;);
+&gt;&#32;&gt;&#32;+MODULE_LICENSE(&quot;GPL&quot;);
+&gt;&#32;&gt;&#32;diff&#32;--git&#32;a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+&gt;&#32;&gt;&#32;b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+&gt;&#32;&gt;&#32;index&#32;27190057bd8e..7526bc38bcc7&#32;100644
+&gt;&#32;&gt;&#32;---&#32;a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+&gt;&#32;&gt;&#32;+++&#32;b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+&gt;&#32;&gt;&#32;@@&#32;-448,6&#32;+448,28&#32;@@&#32;static&#32;bool&#32;mtk_drm_find_mmsys_comp(struct
+&gt;&#32;&gt;&#32;mtk_drm_private&#32;*private,&#32;int&#32;comp_id
+&gt;&#32;&gt;&#32;&#160;return&#32;false;
+&gt;&#32;&gt;&#32;&#160;}
+&gt;&#32;&gt;&#32;&#160;
+&gt;&#32;&gt;&#32;+static&#32;int&#32;mtk_drm_mmsys_comp_in_path(struct&#32;mtk_drm_private
+&gt;&#32;&gt;&#32;*private,&#32;int&#32;comp_id)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+const&#32;struct&#32;mtk_mmsys_driver_data&#32;*drv_data&#32;=&#32;private-
+&gt;&#32;&gt;&#32;&gt;data;
+&gt;&#32;&gt;&#32;+int&#32;i;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(drv_data-&gt;main_path)
+&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;drv_data-&gt;main_len;&#32;i++)
+&gt;&#32;&gt;&#32;+if&#32;(drv_data-&gt;main_path[i]&#32;==&#32;comp_id)
+&gt;&#32;&gt;&#32;+return&#32;0;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(drv_data-&gt;ext_path)
+&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;drv_data-&gt;ext_len;&#32;i++)
+&gt;&#32;&gt;&#32;+if&#32;(drv_data-&gt;ext_path[i]&#32;==&#32;comp_id)
+&gt;&#32;&gt;&#32;+return&#32;1;
+&gt;&#32;&gt;&#32;+if&#32;(drv_data-&gt;third_path)
+&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;drv_data-&gt;third_len;&#32;i++)
+&gt;&#32;&gt;&#32;+if&#32;(drv_data-&gt;third_path[i]&#32;==&#32;comp_id)
+&gt;&#32;&gt;&#32;+return&#32;2;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+return&#32;-1;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;&#160;static&#32;int&#32;mtk_drm_kms_init(struct&#32;drm_device&#32;*drm)
+&gt;&#32;&gt;&#32;&#160;{
+&gt;&#32;&gt;&#32;&#160;struct&#32;mtk_drm_private&#32;*private&#32;=&#32;drm-&gt;dev_private;
+&gt;&#32;&gt;&#32;@@&#32;-463,8&#32;+485,8&#32;@@&#32;static&#32;int&#32;mtk_drm_kms_init(struct&#32;drm_device
+&gt;&#32;&gt;&#32;*drm)
+&gt;&#32;&gt;&#32;&#160;if&#32;(ret)
+&gt;&#32;&gt;&#32;&#160;goto&#32;put_mutex_dev;
+&gt;&#32;&gt;&#32;&#160;
+&gt;&#32;&gt;&#32;-drm-&gt;mode_config.min_width&#32;=&#32;64;
+&gt;&#32;&gt;&#32;-drm-&gt;mode_config.min_height&#32;=&#32;64;
+&gt;&#32;&gt;&#32;+drm-&gt;mode_config.min_width&#32;=&#32;1;
+&gt;&#32;&gt;&#32;+drm-&gt;mode_config.min_height&#32;=&#32;1;
+&gt;&#32;
+&gt;&#32;You&#32;change&#32;other&#32;SoC&#32;setting.
+&gt;&#32;If&#32;8196&#32;has&#32;different&#32;setting,&#32;query&#32;min&#32;width/height&#32;from&#32;ddp
+&gt;&#32;component&#32;and&#32;separate&#32;this&#32;to&#32;another&#32;patch.
+&gt;&#32;
+
+Ok,&#32;I&#32;will&#32;separate&#32;this&#32;to&#32;another&#32;patch.
+&gt;&#32;&gt;&#32;&#160;
+&gt;&#32;&gt;&#32;&#160;/*
+&gt;&#32;&gt;&#32;&#160;&#32;*&#32;set&#32;max&#32;width&#32;and&#32;height&#32;as&#32;default&#32;value(4096x4096).
+&gt;&#32;&gt;&#32;@@&#32;-1107,6&#32;+1129,40&#32;@@&#32;static&#32;int&#32;mtk_drm_probe(struct
+&gt;&#32;&gt;&#32;platform_device&#32;*pdev)
+&gt;&#32;&gt;&#32;&#160;component_match_add(dev,&#32;&amp;match,&#32;compare_dev,
+&gt;&#32;&gt;&#32;&amp;ovl_adaptor-&gt;dev);
+&gt;&#32;&gt;&#32;&#160;}
+&gt;&#32;&gt;&#32;&#160;
+&gt;&#32;&gt;&#32;+if&#32;(mtk_drm_find_mmsys_comp(private,
+&gt;&#32;&gt;&#32;DDP_COMPONENT_DRM_OVLSYS_ADAPTOR0))&#32;{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_drm_ovlsys_private&#32;ovlsys_priv;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+ovlsys_priv.mmsys_dev&#32;=&#32;private-&gt;mmsys_dev;
+&gt;&#32;&gt;&#32;+ovlsys_priv.use_path&#32;=
+&gt;&#32;&gt;&#32;+mtk_drm_mmsys_comp_in_path(private,
+&gt;&#32;&gt;&#32;DDP_COMPONENT_DRM_OVLSYS_ADAPTOR0);
+&gt;&#32;&gt;&#32;+ovl_adaptor&#32;=
+&gt;&#32;&gt;&#32;+platform_device_register_data(dev,
+&gt;&#32;&gt;&#32;&quot;mediatek-disp-ovlsys-adaptor&quot;,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;
+&gt;&#32;&gt;&#32;PLATFORM_DEVID_AUTO,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#32;(void
+&gt;&#32;&gt;&#32;*)&amp;ovlsys_priv,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;
+&gt;&#32;&gt;&#32;sizeof(struct&#32;mtk_drm_ovlsys_private));
+&gt;&#32;&gt;&#32;+private-
+&gt;&#32;&gt;&#32;&gt;ddp_comp[DDP_COMPONENT_DRM_OVLSYS_ADAPTOR0].dev&#32;=&#32;&amp;ovl_adaptor-
+&gt;&#32;&gt;&#32;&gt;dev;
+&gt;&#32;&gt;&#32;+mtk_ddp_comp_init(NULL,&#32;&amp;private-
+&gt;&#32;&gt;&#32;&gt;ddp_comp[DDP_COMPONENT_DRM_OVLSYS_ADAPTOR0],
+&gt;&#32;&gt;&#32;+&#160;
+&gt;&#32;&gt;&#32;DDP_COMPONENT_DRM_OVLSYS_ADAPTOR0);
+&gt;&#32;&gt;&#32;+component_match_add(dev,&#32;&amp;match,&#32;compare_dev,
+&gt;&#32;&gt;&#32;&amp;ovl_adaptor-&gt;dev);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(mtk_drm_find_mmsys_comp(private,
+&gt;&#32;&gt;&#32;DDP_COMPONENT_DRM_OVLSYS_ADAPTOR1))&#32;{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_drm_ovlsys_private&#32;ovlsys_priv;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+ovlsys_priv.mmsys_dev&#32;=&#32;private-&gt;mmsys_dev;
+&gt;&#32;&gt;&#32;+ovlsys_priv.use_path&#32;=
+&gt;&#32;&gt;&#32;+mtk_drm_mmsys_comp_in_path(private,
+&gt;&#32;&gt;&#32;DDP_COMPONENT_DRM_OVLSYS_ADAPTOR1);
+&gt;&#32;&gt;&#32;+ovl_adaptor&#32;=
+&gt;&#32;&gt;&#32;+platform_device_register_data(dev,
+&gt;&#32;&gt;&#32;&quot;mediatek-disp-ovlsys-adaptor&quot;,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;
+&gt;&#32;&gt;&#32;PLATFORM_DEVID_AUTO,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#32;(void
+&gt;&#32;&gt;&#32;*)&amp;ovlsys_priv,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;
+&gt;&#32;&gt;&#32;sizeof(struct&#32;mtk_drm_ovlsys_private));
+&gt;&#32;&gt;&#32;+private-
+&gt;&#32;&gt;&#32;&gt;ddp_comp[DDP_COMPONENT_DRM_OVLSYS_ADAPTOR1].dev&#32;=&#32;&amp;ovl_adaptor-
+&gt;&#32;&gt;&#32;&gt;dev;
+&gt;&#32;&gt;&#32;+mtk_ddp_comp_init(NULL,&#32;&amp;private-
+&gt;&#32;&gt;&#32;&gt;ddp_comp[DDP_COMPONENT_DRM_OVLSYS_ADAPTOR1],
+&gt;&#32;&gt;&#32;+&#160;
+&gt;&#32;&gt;&#32;DDP_COMPONENT_DRM_OVLSYS_ADAPTOR1);
+&gt;&#32;&gt;&#32;+component_match_add(dev,&#32;&amp;match,&#32;compare_dev,
+&gt;&#32;&gt;&#32;&amp;ovl_adaptor-&gt;dev);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;&#160;/*&#32;Iterate&#32;over&#32;sibling&#32;DISP&#32;function&#32;blocks&#32;*/
+&gt;&#32;&gt;&#32;&#160;for_each_child_of_node(phandle-&gt;parent,&#32;node)&#32;{
+&gt;&#32;&gt;&#32;&#160;enum&#32;mtk_ddp_comp_type&#32;comp_type;
+&gt;&#32;&gt;&#32;@@&#32;-1268,6&#32;+1324,7&#32;@@&#32;static&#32;struct&#32;platform_driver&#32;*&#32;const
+&gt;&#32;&gt;&#32;mtk_drm_drivers[]&#32;=&#32;{
+&gt;&#32;&gt;&#32;&#160;&amp;mtk_disp_outproc_driver,
+&gt;&#32;&gt;&#32;&#160;&amp;mtk_disp_ovl_adaptor_driver,
+&gt;&#32;&gt;&#32;&#160;&amp;mtk_disp_ovl_driver,
+&gt;&#32;&gt;&#32;+&amp;mtk_disp_ovlsys_adaptor_driver,
+&gt;&#32;&gt;&#32;&#160;&amp;mtk_disp_rdma_driver,
+&gt;&#32;&gt;&#32;&#160;&amp;mtk_dpi_driver,
+&gt;&#32;&gt;&#32;&#160;&amp;mtk_drm_platform_driver,
+&gt;&#32;&gt;&#32;diff&#32;--git&#32;a/drivers/gpu/drm/mediatek/mtk_drm_drv.h
+&gt;&#32;&gt;&#32;b/drivers/gpu/drm/mediatek/mtk_drm_drv.h
+&gt;&#32;&gt;&#32;index&#32;c4717c37b0f1..aa17e743a1d0&#32;100644
+&gt;&#32;&gt;&#32;---&#32;a/drivers/gpu/drm/mediatek/mtk_drm_drv.h
+&gt;&#32;&gt;&#32;+++&#32;b/drivers/gpu/drm/mediatek/mtk_drm_drv.h
+&gt;&#32;&gt;&#32;@@&#32;-11,7&#32;+11,9&#32;@@
+&gt;&#32;&gt;&#32;&#160;
+&gt;&#32;&gt;&#32;&#160;#define&#32;MAX_CONNECTOR2
+&gt;&#32;&gt;&#32;&#160;#define&#32;DDP_COMPONENT_DRM_OVL_ADAPTOR&#32;(DDP_COMPONENT_ID_MAX&#32;+&#32;1)
+&gt;&#32;&gt;&#32;-#define&#32;DDP_COMPONENT_DRM_ID_MAX&#32;(DDP_COMPONENT_DRM_OVL_ADAPTOR&#32;+
+&gt;&#32;&gt;&#32;1)
+&gt;&#32;&gt;&#32;+#define&#32;DDP_COMPONENT_DRM_OVLSYS_ADAPTOR0
+&gt;&#32;&gt;&#32;(DDP_COMPONENT_DRM_OVL_ADAPTOR&#32;+&#32;1)
+&gt;&#32;&gt;&#32;+#define&#32;DDP_COMPONENT_DRM_OVLSYS_ADAPTOR1
+&gt;&#32;&gt;&#32;(DDP_COMPONENT_DRM_OVLSYS_ADAPTOR0&#32;+&#32;1)
+&gt;&#32;&gt;&#32;+#define&#32;DDP_COMPONENT_DRM_ID_MAX
+&gt;&#32;&gt;&#32;(DDP_COMPONENT_DRM_OVLSYS_ADAPTOR1&#32;+&#32;1)
+&gt;&#32;&gt;&#32;&#160;
+&gt;&#32;&gt;&#32;&#160;enum&#32;mtk_crtc_path&#32;{
+&gt;&#32;&gt;&#32;&#160;CRTC_MAIN,
+&gt;&#32;&gt;&#32;@@&#32;-69,6&#32;+71,12&#32;@@&#32;struct&#32;mtk_drm_private&#32;{
+&gt;&#32;&gt;&#32;&#160;struct&#32;mtk_drm_private&#32;**all_drm_private;
+&gt;&#32;&gt;&#32;&#160;};
+&gt;&#32;&gt;&#32;&#160;
+&gt;&#32;&gt;&#32;+struct&#32;mtk_drm_ovlsys_private&#32;{
+&gt;&#32;
+&gt;&#32;ovlsys&#32;has&#32;its&#32;own&#32;private&#32;data&#32;structure.
+&gt;&#32;mtk_ovlsys_platform_data&#32;is&#32;better.
+&gt;&#32;
+&gt;&#32;Regards,
+&gt;&#32;CK
+&gt;&#32;
+
+Ok,&#32;I&#32;will&#32;fix&#32;this&#32;problem.
+
+
+Best,&#32;Paul
+&gt;&#32;
+&gt;&#32;&gt;&#32;+struct&#32;device&#32;*mmsys_dev;
+&gt;&#32;&gt;&#32;+struct&#32;device&#32;*mutex_dev;
+&gt;&#32;&gt;&#32;+unsigned&#32;int&#32;use_path;
+&gt;&#32;&gt;&#32;+};
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_disp_aal_driver;
+&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_disp_blender_driver;
+&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_disp_ccorr_driver;
+&gt;&#32;&gt;&#32;@@&#32;-79,6&#32;+87,7&#32;@@&#32;extern&#32;struct&#32;platform_driver
+&gt;&#32;&gt;&#32;mtk_disp_merge_driver;
+&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_disp_outproc_driver;
+&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_disp_ovl_adaptor_driver;
+&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_disp_ovl_driver;
+&gt;&#32;&gt;&#32;+extern&#32;struct&#32;platform_driver&#32;mtk_disp_ovlsys_adaptor_driver;
+&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_disp_rdma_driver;
+&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_dpi_driver;
+&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_dsi_driver;
+&gt;&#32;
+
+
+</pre>
+</p></body></html><!--type:text--><!--{--><pre>************* MEDIATEK Confidentiality Notice ********************
+The information contained in this e-mail message (including any 
+attachments) may be confidential, proprietary, privileged, or otherwise
+exempt from disclosure under applicable laws. It is intended to be 
+conveyed only to the designated recipient(s). Any use, dissemination, 
+distribution, printing, retaining or copying of this e-mail (including its 
+attachments) by unintended recipient(s) is strictly prohibited and may 
+be unlawful. If you are not an intended recipient of this e-mail, or believe 
+that you have received this e-mail in error, please notify the sender 
+immediately (by replying to this e-mail), delete any and all copies of 
+this e-mail (including any attachments) from your system, and do not
+disclose the content of this e-mail to any other person. Thank you!
+</pre><!--}-->
diff --git a/N1/2.hdr b/N1/2.hdr
new file mode 100644
index 0000000..da1f671
--- /dev/null
+++ b/N1/2.hdr
@@ -0,0 +1,3 @@
+Content-Type: text/html;
+	charset="utf-8"
+Content-Transfer-Encoding: base64
diff --git a/a/content_digest b/N1/content_digest
index 36e355c..c7d8eb5 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -25,7 +25,7 @@
   p.zabel@pengutronix.de <p.zabel@pengutronix.de>
  " Sirius Wang (\347\216\213\347\232\223\346\230\261) <Sirius.Wang@mediatek.com>"
  " linux-arm-kernel@lists.infradead.org <linux-arm-kernel@lists.infradead.org>\0"
- "\00:1\0"
+ "\01:1\0"
  "b\0"
  "On Wed, 2025-02-12 at 07:09 +0000, CK Hu (\350\203\241\344\277\212\345\205\211) wrote:\n"
  "> Hi, Paul:\n"
@@ -1261,5 +1261,1259 @@
  "> > \302\240extern struct platform_driver mtk_dpi_driver;\n"
  "> > \302\240extern struct platform_driver mtk_dsi_driver;\n"
  >
+ "\01:2\0"
+ "b\0"
+ "<html><body><p>\r\n"
+ "<pre>\r\n"
+ "On&#32;Wed,&#32;2025-02-12&#32;at&#32;07:09&#32;+0000,&#32;CK&#32;Hu&#32;(&#32993;&#20426;&#20809;)&#32;wrote:\r\n"
+ "&gt;&#32;Hi,&#32;Paul:\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;On&#32;Fri,&#32;2025-01-10&#32;at&#32;20:34&#32;+0800,&#32;paul-pl.chen&#32;wrote:\r\n"
+ "&gt;&#32;&gt;&#32;From:&#32;&quot;Nancy.Lin&quot;&#32;&lt;nancy.lin@mediatek.com&gt;\r\n"
+ "&gt;&#32;&gt;&#32;\r\n"
+ "&gt;&#32;&gt;&#32;Ovlsys_adaptor&#32;is&#32;an&#32;encapsulated&#32;module&#32;designed&#32;to\r\n"
+ "&gt;&#32;&gt;&#32;simplify&#32;the&#32;DRM&#32;control&#32;flow.&#32;This&#32;module&#32;is&#32;composed\r\n"
+ "&gt;&#32;&gt;&#32;of&#32;20&#32;EXDMAs,&#32;20&#32;BLENDERs,&#32;and&#32;12&#32;OUTPROCs.\r\n"
+ "&gt;&#32;&gt;&#32;Two&#32;EXDMAs&#32;merge&#32;into&#32;one&#32;layer,&#32;allowing&#32;the&#32;module\r\n"
+ "&gt;&#32;&gt;&#32;to&#32;support&#32;20&#32;layers&#32;for&#32;3&#32;display&#32;paths.\r\n"
+ "&gt;&#32;&gt;&#32;Ovlsys_adaptor&#32;driver&#32;is&#32;integrated&#32;within&#32;the\r\n"
+ "&gt;&#32;&gt;&#32;mtk_ddp_comp&#32;framework.\r\n"
+ "&gt;&#32;&gt;&#32;\r\n"
+ "&gt;&#32;&gt;&#32;Signed-off-by:&#32;Nancy.Lin&#32;&lt;nancy.lin@mediatek.com&gt;\r\n"
+ "&gt;&#32;&gt;&#32;Signed-off-by:&#32;Paul-pl.Chen&#32;&lt;paul-pl.chen@mediatek.com&gt;\r\n"
+ "&gt;&#32;&gt;&#32;---\r\n"
+ "&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/Makefile&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#32;|&#160;&#160;&#32;1&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_ddp_comp.c&#160;&#160;&#160;&#160;&#160;&#160;&#32;|&#160;&#32;25&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_ddp_comp.h&#160;&#160;&#160;&#160;&#160;&#160;&#32;|&#160;&#160;&#32;1&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_disp_drv.h&#160;&#160;&#160;&#160;&#160;&#160;&#32;|&#160;&#32;31&#32;+-\r\n"
+ "&gt;&#32;&gt;&#32;&#160;.../drm/mediatek/mtk_disp_ovlsys_adaptor.c&#160;&#160;&#160;&#32;|&#32;758\r\n"
+ "&gt;&#32;&gt;&#32;++++++++++++++++++\r\n"
+ "&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_drm_drv.c&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#32;|&#160;&#32;61&#32;+-\r\n"
+ "&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_drm_drv.h&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#32;|&#160;&#32;11&#32;+-\r\n"
+ "&gt;&#32;&gt;&#32;&#160;7&#32;files&#32;changed,&#32;884&#32;insertions(+),&#32;4&#32;deletions(-)\r\n"
+ "&gt;&#32;&gt;&#32;&#160;create&#32;mode&#32;100644\r\n"
+ "&gt;&#32;&gt;&#32;drivers/gpu/drm/mediatek/mtk_disp_ovlsys_adaptor.c\r\n"
+ "&gt;&#32;&gt;&#32;\r\n"
+ "&gt;&#32;&gt;&#32;diff&#32;--git&#32;a/drivers/gpu/drm/mediatek/Makefile\r\n"
+ "&gt;&#32;&gt;&#32;b/drivers/gpu/drm/mediatek/Makefile\r\n"
+ "&gt;&#32;&gt;&#32;\r\n"
+ "//snip\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_disp_blender.h&quot;\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_disp_drv.h&quot;\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_crtc.h&quot;\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Alphabetic&#32;order.\r\n"
+ "&gt;&#32;\r\n"
+ "Ok,&#32;I&#32;will&#32;fix&#32;this&#32;part.\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_ddp_comp.h&quot;\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_drm_drv.h&quot;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+enum&#32;mtk_ovlsys_adaptor_comp_type&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_EXDMA&#32;=&#32;0,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_OUTPROC,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_NUM,\r\n"
+ "&gt;&#32;&gt;&#32;+};\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+enum&#32;mtk_ovlsys_adaptor_comp_id&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA0,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA1,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA2,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA3,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA4,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA5,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA6,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA7,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA8,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA9,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA10,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA11,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA12,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA13,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA14,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA15,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA16,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA17,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA18,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA19,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER0,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER1,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER2,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER3,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER4,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER5,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER6,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER7,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER8,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER9,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER10,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER11,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER12,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER13,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER14,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER15,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER16,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER17,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER18,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER19,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC0,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC1,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC2,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC3,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC4,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC5,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC6,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC7,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC8,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC9,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC10,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC11,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_ID_MAX\r\n"
+ "&gt;&#32;&gt;&#32;+};\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;ovlsys_adaptor_comp_match&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+enum&#32;mtk_ovlsys_adaptor_comp_type&#32;type;\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;alias_id;\r\n"
+ "&gt;&#32;&gt;&#32;+enum&#32;mtk_ddp_comp_id&#32;comp_id;\r\n"
+ "&gt;&#32;&gt;&#32;+};\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;device&#32;*ovl_adaptor_comp[OVLSYS_ADAPTOR_ID_MAX];\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;device&#32;*mmsys_dev;\r\n"
+ "&gt;&#32;&gt;&#32;+const&#32;unsigned&#32;int&#32;*path;\r\n"
+ "&gt;&#32;&gt;&#32;+unsigned&#32;int&#32;path_size;\r\n"
+ "&gt;&#32;&gt;&#32;+unsigned&#32;int&#32;layer_nr;\r\n"
+ "&gt;&#32;&gt;&#32;+bool&#32;children_bound;\r\n"
+ "&gt;&#32;&gt;&#32;+unsigned&#32;int&#32;max_size;\r\n"
+ "&gt;&#32;&gt;&#32;+};\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;const&#32;char&#32;*&#32;const\r\n"
+ "&gt;&#32;&gt;&#32;private_comp_stem[OVLSYS_ADAPTOR_TYPE_NUM]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_TYPE_EXDMA]=&#32;&quot;exdma&quot;,\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_TYPE_BLENDER]=&#32;&quot;blender&quot;,\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_TYPE_OUTPROC]=&#32;&quot;outproc&quot;,\r\n"
+ "&gt;&#32;&gt;&#32;+};\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;const&#32;struct&#32;ovlsys_adaptor_comp_match\r\n"
+ "&gt;&#32;&gt;&#32;comp_matches[OVLSYS_ADAPTOR_ID_MAX]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA0]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,\r\n"
+ "&gt;&#32;&gt;&#32;0,&#32;DDP_COMPONENT_ID_MAX},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA1]&#160;&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;1,&#32;DDP_COMPONENT_ID_MAX},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA2]&#160;&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;2,&#32;DDP_COMPONENT_OVL0_EXDMA2},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA3]&#160;&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;3,&#32;DDP_COMPONENT_OVL0_EXDMA3},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA4]&#160;&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;4,&#32;DDP_COMPONENT_OVL0_EXDMA4},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA5]&#160;&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;5,&#32;DDP_COMPONENT_OVL0_EXDMA5},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA6]&#160;&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;6,&#32;DDP_COMPONENT_OVL0_EXDMA6},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA7]&#160;&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;7,&#32;DDP_COMPONENT_OVL0_EXDMA7},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA8]&#160;&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;8,&#32;DDP_COMPONENT_OVL0_EXDMA8},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA9]&#160;&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;9,&#32;DDP_COMPONENT_OVL0_EXDMA9},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA10]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,\r\n"
+ "&gt;&#32;&gt;&#32;10,&#32;DDP_COMPONENT_ID_MAX},\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;EXDMA10&#32;has&#32;no&#32;component&#32;id,&#32;so&#32;just&#32;drop&#32;OVLSYS_ADAPTOR_EXDMA10.\r\n"
+ "&gt;&#32;\r\n"
+ "OK&#32;I&#32;will&#32;check&#32;this&#32;part.\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA11]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,\r\n"
+ "&gt;&#32;&gt;&#32;11,&#32;DDP_COMPONENT_ID_MAX},\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Ditto.\r\n"
+ "&gt;&#32;\r\n"
+ "OK&#32;I&#32;will&#32;check&#32;this&#32;part,&#32;too.\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA12]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,\r\n"
+ "&gt;&#32;&gt;&#32;12,&#32;DDP_COMPONENT_OVL1_EXDMA2},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA13]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,\r\n"
+ "&gt;&#32;&gt;&#32;13,&#32;DDP_COMPONENT_OVL1_EXDMA3},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA14]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,\r\n"
+ "&gt;&#32;&gt;&#32;14,&#32;DDP_COMPONENT_OVL1_EXDMA4},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA15]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,\r\n"
+ "&gt;&#32;&gt;&#32;15,&#32;DDP_COMPONENT_OVL1_EXDMA5},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA16]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,\r\n"
+ "&gt;&#32;&gt;&#32;16,&#32;DDP_COMPONENT_OVL1_EXDMA6},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA17]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,\r\n"
+ "&gt;&#32;&gt;&#32;17,&#32;DDP_COMPONENT_OVL1_EXDMA7},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA18]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,\r\n"
+ "&gt;&#32;&gt;&#32;18,&#32;DDP_COMPONENT_OVL1_EXDMA8},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_EXDMA19]&#160;&#160;&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,\r\n"
+ "&gt;&#32;&gt;&#32;19,&#32;DDP_COMPONENT_OVL1_EXDMA9},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER0]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,\r\n"
+ "&gt;&#32;&gt;&#32;0,&#32;DDP_COMPONENT_ID_MAX},\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Ditto.\r\n"
+ "&gt;&#32;\r\n"
+ "OK&#32;I&#32;will&#32;check&#32;this&#32;part,&#32;too.\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER1]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,\r\n"
+ "&gt;&#32;&gt;&#32;1,&#32;DDP_COMPONENT_OVL0_BLENDER1},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER2]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,\r\n"
+ "&gt;&#32;&gt;&#32;2,&#32;DDP_COMPONENT_OVL0_BLENDER2},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER3]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,\r\n"
+ "&gt;&#32;&gt;&#32;3,&#32;DDP_COMPONENT_OVL0_BLENDER3},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER4]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,\r\n"
+ "&gt;&#32;&gt;&#32;4,&#32;DDP_COMPONENT_OVL0_BLENDER4},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER5]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,\r\n"
+ "&gt;&#32;&gt;&#32;5,&#32;DDP_COMPONENT_OVL0_BLENDER5},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER6]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,\r\n"
+ "&gt;&#32;&gt;&#32;6,&#32;DDP_COMPONENT_OVL0_BLENDER6},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER7]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,\r\n"
+ "&gt;&#32;&gt;&#32;7,&#32;DDP_COMPONENT_OVL0_BLENDER7},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER8]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,\r\n"
+ "&gt;&#32;&gt;&#32;8,&#32;DDP_COMPONENT_OVL0_BLENDER8},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER9]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,\r\n"
+ "&gt;&#32;&gt;&#32;9,&#32;DDP_COMPONENT_OVL0_BLENDER9},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER10]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;10,&#32;DDP_COMPONENT_ID_MAX},\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Ditto.\r\n"
+ "&gt;&#32;\r\n"
+ "\r\n"
+ "OK&#32;I&#32;will&#32;check&#32;this&#32;part,&#32;too.\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER11]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;11,\r\n"
+ "&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER1},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER12]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;12,\r\n"
+ "&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER2},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER13]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;13,\r\n"
+ "&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER3},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER14]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;14,\r\n"
+ "&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER4},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER15]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;15,\r\n"
+ "&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER5},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER16]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;16,\r\n"
+ "&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER6},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER17]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;17,\r\n"
+ "&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER7},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER18]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;18,\r\n"
+ "&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER8},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_BLENDER19]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;19,\r\n"
+ "&gt;&#32;&gt;&#32;DDP_COMPONENT_OVL1_BLENDER9},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC0]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,\r\n"
+ "&gt;&#32;&gt;&#32;0,&#32;DDP_COMPONENT_OVL0_OUTPROC0},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC1]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,\r\n"
+ "&gt;&#32;&gt;&#32;1,&#32;DDP_COMPONENT_OVL0_OUTPROC1},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC2]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,\r\n"
+ "&gt;&#32;&gt;&#32;2,&#32;DDP_COMPONENT_ID_MAX},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC3]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,\r\n"
+ "&gt;&#32;&gt;&#32;3,&#32;DDP_COMPONENT_ID_MAX},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC4]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,\r\n"
+ "&gt;&#32;&gt;&#32;4,&#32;DDP_COMPONENT_ID_MAX},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC5]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,\r\n"
+ "&gt;&#32;&gt;&#32;5,&#32;DDP_COMPONENT_ID_MAX},\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Ditto.\r\n"
+ "&gt;&#32;\r\n"
+ "\r\n"
+ "OK&#32;I&#32;will&#32;check&#32;this&#32;part,&#32;too.\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC6]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,\r\n"
+ "&gt;&#32;&gt;&#32;6,&#32;DDP_COMPONENT_OVL1_OUTPROC0},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC7]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,\r\n"
+ "&gt;&#32;&gt;&#32;7,&#32;DDP_COMPONENT_ID_MAX},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC8]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,\r\n"
+ "&gt;&#32;&gt;&#32;8,&#32;DDP_COMPONENT_ID_MAX},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC9]&#32;=&#32;{&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,\r\n"
+ "&gt;&#32;&gt;&#32;9,&#32;DDP_COMPONENT_ID_MAX},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC10]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,&#32;10,&#32;DDP_COMPONENT_ID_MAX},\r\n"
+ "&gt;&#32;&gt;&#32;+[OVLSYS_ADAPTOR_OUTPROC11]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC,&#32;11,&#32;DDP_COMPONENT_ID_MAX},\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Ditto.\r\n"
+ "&gt;&#32;\r\n"
+ "\r\n"
+ "OK&#32;I&#32;will&#32;check&#32;this&#32;part,&#32;too.\r\n"
+ "&gt;&#32;&gt;&#32;+};\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;const&#32;unsigned&#32;int&#32;mt8196_mtk_ovl_main[]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA2,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER1,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA3,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER2,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA4,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER3,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA5,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER4,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC0,\r\n"
+ "&gt;&#32;&gt;&#32;+};\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;const&#32;unsigned&#32;int&#32;mt8196_mtk_ovl_ext[]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA6,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER5,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA7,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER6,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA8,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER7,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA9,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER8,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC1,\r\n"
+ "&gt;&#32;&gt;&#32;+};\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;const&#32;unsigned&#32;int&#32;mt8196_mtk_ovl_third[]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA12,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER11,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA13,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER12,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA14,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER13,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_EXDMA15,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_BLENDER14,\r\n"
+ "&gt;&#32;&gt;&#32;+OVLSYS_ADAPTOR_OUTPROC6,\r\n"
+ "&gt;&#32;&gt;&#32;+};\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;enum&#32;mtk_ovlsys_adaptor_comp_type&#32;get_type(enum\r\n"
+ "&gt;&#32;&gt;&#32;mtk_ovlsys_adaptor_comp_id&#32;id)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;comp_matches[id].type;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;enum&#32;mtk_ddp_comp_id&#32;get_ddp_comp_id(enum\r\n"
+ "&gt;&#32;&gt;&#32;mtk_ovlsys_adaptor_comp_id&#32;id)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;comp_matches[id].comp_id;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;struct&#32;device&#32;*get_comp_by_type_idx(struct&#32;device&#32;*dev,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#32;enum\r\n"
+ "&gt;&#32;&gt;&#32;mtk_ovlsys_adaptor_comp_type&#32;type,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#32;unsigned&#32;int&#32;idx)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;i;\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;count&#32;=&#32;0;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size;&#32;i++)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(get_type(priv-&gt;path[i])&#32;==&#32;type)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(count&#32;==&#32;idx)\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]];\r\n"
+ "&gt;&#32;&gt;&#32;+count++;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;NULL;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_layer_config(struct&#32;device&#32;*dev,&#32;unsigned\r\n"
+ "&gt;&#32;&gt;&#32;int&#32;idx,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#32;struct&#32;mtk_plane_state\r\n"
+ "&gt;&#32;&gt;&#32;*state,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#32;struct&#32;cmdq_pkt&#32;*cmdq_pkt)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_plane_pending_state&#32;*pending&#32;=&#32;&amp;state-&gt;pending;\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;device&#32;*exdma;\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;device&#32;*blender;\r\n"
+ "&gt;&#32;&gt;&#32;+unsigned&#32;int&#32;align_width&#32;=&#32;0;\r\n"
+ "&gt;&#32;&gt;&#32;+const&#32;struct&#32;drm_format_info&#32;*fmt_info&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;drm_format_info(pending-&gt;format);\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+dev_dbg(dev,&#32;&quot;%s+&#32;idx:%d,&#32;enable:%d,&#32;fmt:0x%x&#92;n&quot;,\r\n"
+ "&gt;&#32;&gt;&#32;__func__,&#32;idx,\r\n"
+ "&gt;&#32;&gt;&#32;+pending-&gt;enable,&#32;pending-&gt;format);\r\n"
+ "&gt;&#32;&gt;&#32;+dev_dbg(dev,&#32;&quot;addr&#32;0x%pad,&#32;fb&#32;w:%d,&#32;{%d,%d,%d,%d}&#92;n&quot;,\r\n"
+ "&gt;&#32;&gt;&#32;+&amp;pending-&gt;addr,&#32;(pending-&gt;pitch&#32;/&#32;fmt_info-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;cpp[0]),\r\n"
+ "&gt;&#32;&gt;&#32;+pending-&gt;x,&#32;pending-&gt;y,&#32;pending-&gt;width,&#32;pending-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;height);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+exdma&#32;=&#32;get_comp_by_type_idx(dev,\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA,&#32;idx);\r\n"
+ "&gt;&#32;&gt;&#32;+blender&#32;=&#32;get_comp_by_type_idx(dev,\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER,&#32;idx);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+/*&#32;OVLSYS&#32;is&#32;in&#32;1T2P&#32;domain,&#32;width&#32;needs&#32;to&#32;be&#32;2&#32;pixels\r\n"
+ "&gt;&#32;&gt;&#32;align&#32;*/\r\n"
+ "&gt;&#32;&gt;&#32;+align_width&#32;=&#32;ALIGN_DOWN(pending-&gt;width,&#32;2);\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;align_width&#32;is&#32;useless,&#32;so&#32;drop&#32;it.\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(!pending-&gt;enable&#32;||&#32;pending-&gt;height&#32;==&#32;0&#32;||\r\n"
+ "&gt;&#32;&gt;&#32;align_width&#32;==&#32;0&#32;||\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#32;pending-&gt;x&#32;&gt;&#32;priv-&gt;max_size&#32;||&#32;pending-&gt;y&#32;&gt;&#32;priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;max_size)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+pending-&gt;enable&#32;=&#32;false;\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_exdma_stop(exdma,&#32;cmdq_pkt);\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_blender_layer_config(blender,&#32;state,\r\n"
+ "&gt;&#32;&gt;&#32;cmdq_pkt);\r\n"
+ "&gt;&#32;&gt;&#32;+return;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_exdma_config(exdma,&#32;state,&#32;cmdq_pkt);\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;mtk_disp_exdma_config()&#32;does&#32;something&#32;like&#32;mtk_ovl_layer_config(),\r\n"
+ "&gt;&#32;so&#32;I&#32;would&#32;like&#32;to&#32;rename&#32;it&#32;to&#32;mtk_disp_exdma_layer_config().\r\n"
+ "&gt;&#32;\r\n"
+ "Sure,&#32;I&#32;will&#32;rename&#32;the&#32;function&#32;name.\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_blender_layer_config(blender,&#32;state,&#32;cmdq_pkt);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_exdma_start(exdma,&#32;cmdq_pkt);\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Why&#32;call&#32;start&#32;in&#32;layer&#32;config&#63;\r\n"
+ "&gt;&#32;start&#32;should&#32;be&#32;called&#32;in&#32;start.\r\n"
+ "&gt;&#32;\r\n"
+ "\r\n"
+ "Sure,&#32;I&#32;will&#32;fix&#32;the&#32;order&#32;of&#32;setting.\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_blender_start(blender,&#32;cmdq_pkt);\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Ditto.\r\n"
+ "\r\n"
+ "OK&#32;I&#32;will&#32;check&#32;this&#32;part,&#32;too.\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_config(struct&#32;device&#32;*dev,&#32;unsigned&#32;int&#32;w,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#160;&#32;unsigned&#32;int&#32;h,&#32;unsigned&#32;int\r\n"
+ "&gt;&#32;&gt;&#32;vrefresh,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#160;&#32;unsigned&#32;int&#32;bpc,&#32;struct&#32;cmdq_pkt\r\n"
+ "&gt;&#32;&gt;&#32;*cmdq_pkt)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;i;\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;blender_idx&#32;=&#32;0;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size;&#32;i++)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+enum&#32;mtk_disp_blender_layer&#32;blender;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(get_type(priv-&gt;path[i])&#32;==\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+blender_idx++;\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(priv-&gt;layer_nr&#32;==&#32;1)\r\n"
+ "&gt;&#32;&gt;&#32;+blender&#32;=&#32;SINGLE_BLENDER;\r\n"
+ "&gt;&#32;&gt;&#32;+else&#32;if&#32;(blender_idx&#32;==&#32;1)\r\n"
+ "&gt;&#32;&gt;&#32;+blender&#32;=&#32;FIRST_BLENDER;\r\n"
+ "&gt;&#32;&gt;&#32;+else&#32;if&#32;(blender_idx&#32;==&#32;priv-&gt;layer_nr)\r\n"
+ "&gt;&#32;&gt;&#32;+blender&#32;=&#32;LAST_BLENDER;\r\n"
+ "&gt;&#32;&gt;&#32;+else\r\n"
+ "&gt;&#32;&gt;&#32;+blender&#32;=&#32;OTHERS;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_blender_config(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]],&#32;w,&#32;h,\r\n"
+ "&gt;&#32;&gt;&#32;+vrefresh,&#32;bpc,\r\n"
+ "&gt;&#32;&gt;&#32;blender,&#32;cmdq_pkt);\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;mtk_disp_blender_config(priv-&gt;ovl_adaptor_comp[priv-&gt;path[i]],&#32;w,&#32;h,\r\n"
+ "&gt;&#32;vrefresh,&#32;bpc,&#32;blender_idx&#32;==&#32;1,&#32;blender_idx\r\n"
+ "&gt;&#32;==&#32;priv-&gt;layer_nr,&#32;cmdq_pkt);\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;&gt;&#32;+}&#32;else&#32;if&#32;(get_type(priv-&gt;path[i])&#32;==\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_OUTPROC)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_outproc_config(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]],&#32;w,&#32;h,\r\n"
+ "&gt;&#32;&gt;&#32;+vrefresh,&#32;bpc,\r\n"
+ "&gt;&#32;&gt;&#32;cmdq_pkt);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;mtk_ovlsys_adaptor_layer_check(struct&#32;device&#32;*dev,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#32;unsigned&#32;int&#32;idx,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#32;struct&#32;mtk_plane_state\r\n"
+ "&gt;&#32;&gt;&#32;*mtk_state)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;drm_plane_state&#32;*state&#32;=&#32;&amp;mtk_state-&gt;base;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+/*&#32;Check&#32;if&#32;any&#32;unsupported&#32;rotation&#32;is&#32;set&#32;*/\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(state-&gt;rotation&#32;&amp;&#32;&#126;DRM_MODE_ROTATE_0)\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;-EINVAL;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;0;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_start(struct&#32;device&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;i;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size;&#32;i++)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(get_type(priv-&gt;path[i])&#32;==\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA)\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_exdma_start(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]],&#32;NULL);\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;The&#32;start&#32;never&#32;use&#32;cmdq,&#32;so&#32;remove&#32;the&#32;cmdq&#32;parameter.\r\n"
+ "\r\n"
+ "Ok,&#32;I&#32;will&#32;fix&#32;this&#32;part.\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;&gt;&#32;+else&#32;if&#32;(get_type(priv-&gt;path[i])&#32;==\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER)\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_blender_start(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]],&#32;NULL);\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Ditto.\r\n"
+ "&gt;&#32;\r\n"
+ "Ok,&#32;I&#32;will&#32;fix&#32;this&#32;part.&gt;&#32;&gt;&#32;+else\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_outproc_start(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]]);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_stop(struct&#32;device&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;i;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size;&#32;i++)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(get_type(priv-&gt;path[i])&#32;==\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_EXDMA)\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_exdma_stop(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]],&#32;NULL);\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Ditto.\r\n"
+ "\r\n"
+ "Ok,&#32;I&#32;will&#32;fix&#32;this&#32;part.th.\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;&gt;&#32;+else&#32;if&#32;(get_type(priv-&gt;path[i])&#32;==\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER)\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_blender_stop(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]],&#32;NULL);\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Ditto.\r\n"
+ "\r\n"
+ "Ok,&#32;I&#32;will&#32;fix&#32;this&#32;part.\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;&gt;&#32;+else\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_outproc_stop(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[i]]);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;mtk_ovlsys_adaptor_clk_enable(struct&#32;device&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;device&#32;*comp;\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;ret;\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;i;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;OVLSYS_ADAPTOR_ID_MAX;&#32;i++)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+comp&#32;=&#32;priv-&gt;ovl_adaptor_comp[i];\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(!comp)\r\n"
+ "&gt;&#32;&gt;&#32;+continue;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(get_type(i)&#32;!=&#32;OVLSYS_ADAPTOR_TYPE_EXDMA)\r\n"
+ "&gt;&#32;&gt;&#32;+continue;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+ret&#32;=&#32;pm_runtime_get_sync(comp);\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Refer&#32;to&#32;mtk_ovl_adaptor_power_on().\r\n"
+ "&gt;&#32;This&#32;should&#32;be&#32;done&#32;in&#32;power_on()&#32;callback&#32;function.\r\n"
+ "\r\n"
+ "Sure,&#32;I&#32;will&#32;align&#32;the&#32;power&#32;sequence&#32;with&#32;the&#32;function\r\n"
+ "mtk_ovl_adaptor_power_on().\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(ret&#32;&lt;&#32;0)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+dev_err(dev,&#32;&quot;Failed&#32;to&#32;enable&#32;power\r\n"
+ "&gt;&#32;&gt;&#32;domain&#32;%d,&#32;err&#32;%d&#92;n&quot;,&#32;i,&#32;ret);\r\n"
+ "&gt;&#32;&gt;&#32;+goto&#32;pwr_err;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;OVLSYS_ADAPTOR_ID_MAX;&#32;i++)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+comp&#32;=&#32;priv-&gt;ovl_adaptor_comp[i];\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(!comp)\r\n"
+ "&gt;&#32;&gt;&#32;+continue;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(get_type(i)&#32;==&#32;OVLSYS_ADAPTOR_TYPE_EXDMA)\r\n"
+ "&gt;&#32;&gt;&#32;+ret&#32;=&#32;mtk_disp_exdma_clk_enable(comp);\r\n"
+ "&gt;&#32;&gt;&#32;+else&#32;if&#32;(get_type(i)&#32;==\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER)\r\n"
+ "&gt;&#32;&gt;&#32;+ret&#32;=&#32;mtk_disp_blender_clk_enable(comp);\r\n"
+ "&gt;&#32;&gt;&#32;+else\r\n"
+ "&gt;&#32;&gt;&#32;+ret&#32;=&#32;mtk_disp_outproc_clk_enable(comp);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(ret)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+dev_err(dev,&#32;&quot;Failed&#32;to&#32;enable&#32;clock&#32;%d,\r\n"
+ "&gt;&#32;&gt;&#32;err&#32;%d&#92;n&quot;,&#32;i,&#32;ret);\r\n"
+ "&gt;&#32;&gt;&#32;+goto&#32;clk_err;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;ret;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+clk_err:\r\n"
+ "&gt;&#32;&gt;&#32;+while&#32;(--i&#32;&gt;=&#32;0)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+comp&#32;=&#32;priv-&gt;ovl_adaptor_comp[i];\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(!comp)\r\n"
+ "&gt;&#32;&gt;&#32;+continue;\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(get_type(i)&#32;==&#32;OVLSYS_ADAPTOR_TYPE_EXDMA)\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_exdma_clk_disable(comp);\r\n"
+ "&gt;&#32;&gt;&#32;+else&#32;if&#32;(get_type(i)&#32;==\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER)\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_blender_clk_disable(comp);\r\n"
+ "&gt;&#32;&gt;&#32;+else\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_outproc_clk_disable(comp);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+i&#32;=&#32;OVLSYS_ADAPTOR_BLENDER0;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+pwr_err:\r\n"
+ "&gt;&#32;&gt;&#32;+while&#32;(--i&#32;&gt;=&#32;0)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+comp&#32;=&#32;priv-&gt;ovl_adaptor_comp[i];\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(!comp)\r\n"
+ "&gt;&#32;&gt;&#32;+continue;\r\n"
+ "&gt;&#32;&gt;&#32;+pm_runtime_put(priv-&gt;ovl_adaptor_comp[i]);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;ret;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_clk_disable(struct&#32;device&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;device&#32;*comp;\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;i;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;OVLSYS_ADAPTOR_ID_MAX;&#32;i++)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+comp&#32;=&#32;priv-&gt;ovl_adaptor_comp[i];\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(!comp)\r\n"
+ "&gt;&#32;&gt;&#32;+continue;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(get_type(i)&#32;==&#32;OVLSYS_ADAPTOR_TYPE_EXDMA)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_exdma_clk_disable(comp);\r\n"
+ "&gt;&#32;&gt;&#32;+pm_runtime_put(comp);\r\n"
+ "&gt;&#32;&gt;&#32;+}&#32;else&#32;if&#32;(get_type(i)&#32;==\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_blender_clk_disable(comp);\r\n"
+ "&gt;&#32;&gt;&#32;+}&#32;else&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_outproc_clk_disable(comp);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+unsigned&#32;int&#32;mtk_ovlsys_adaptor_layer_nr(struct&#32;device&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;priv-&gt;layer_nr;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;device&#32;*mtk_ovlsys_adaptor_dma_dev_get(struct&#32;device&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;priv-&gt;ovl_adaptor_comp[priv-&gt;path[0]];\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_register_vblank_cb(struct&#32;device&#32;*dev,\r\n"
+ "&gt;&#32;&gt;&#32;void&#32;(*vblank_cb)(void&#32;*),\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#32;void&#32;*vblank_cb_data)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_outproc_register_vblank_cb(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[priv-&gt;path_size&#32;-&#32;1]],\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#32;vblank_cb,\r\n"
+ "&gt;&#32;&gt;&#32;vblank_cb_data);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_unregister_vblank_cb(struct&#32;device&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;device&#32;*comp&#32;=&#32;priv-&gt;ovl_adaptor_comp[priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;path[priv-&gt;path_size&#32;-&#32;1]];\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(!priv-&gt;children_bound)\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;In&#32;ovl&#32;adaptor,&#32;it&#32;does&#32;not&#32;check&#32;this.&#32;So&#32;remove&#32;this&#32;checking.\r\n"
+ "\r\n"
+ "This&#32;is&#32;because&#32;of&#32;the&#32;mt8916&#39;s&#32;new&#32;hardwarew&#32;design.\r\n"
+ "\r\n"
+ "ovlsys&#32;adaptor&#32;have&#32;to&#32;find&#32;the&#32;possible&#32;path.\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;&gt;&#32;+return;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_outproc_unregister_vblank_cb(comp);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_enable_vblank(struct&#32;device&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_outproc_enable_vblank(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[priv-&gt;path_size&#32;-&#32;1]]);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_disable_vblank(struct&#32;device&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_disp_outproc_disable_vblank(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[priv-&gt;path_size&#32;-&#32;1]]);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+const&#32;u32&#32;*mtk_ovlsys_adaptor_get_formats(struct&#32;device&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;mtk_disp_exdma_get_formats(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[0]]);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+size_t&#32;mtk_ovlsys_adaptor_get_num_formats(struct&#32;device&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;mtk_disp_exdma_get_num_formats(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ovl_adaptor_comp[priv-&gt;path[0]]);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_add_comp(struct&#32;device&#32;*dev,&#32;struct\r\n"
+ "&gt;&#32;&gt;&#32;mtk_mutex&#32;*mutex)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;i;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size;&#32;i++)\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_mutex_add_comp(mutex,&#32;get_ddp_comp_id(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;path[i]));\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_remove_comp(struct&#32;device&#32;*dev,&#32;struct\r\n"
+ "&gt;&#32;&gt;&#32;mtk_mutex&#32;*mutex)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;i;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size;&#32;i++)\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_mutex_remove_comp(mutex,&#32;get_ddp_comp_id(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;path[i]));\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_connect(struct&#32;device&#32;*dev,&#32;struct&#32;device\r\n"
+ "&gt;&#32;&gt;&#32;*mmsys_dev,&#32;unsigned&#32;int&#32;next)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;i;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size&#32;-&#32;1;&#32;i++)\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_mmsys_ddp_connect(mmsys_dev,\r\n"
+ "&gt;&#32;&gt;&#32;get_ddp_comp_id(priv-&gt;path[i]),\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#32;get_ddp_comp_id(priv-&gt;path[i\r\n"
+ "&gt;&#32;&gt;&#32;+&#32;1]));\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_mmsys_ddp_connect(mmsys_dev,&#32;get_ddp_comp_id(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;path[i]),&#32;next);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_ovlsys_adaptor_disconnect(struct&#32;device&#32;*dev,&#32;struct\r\n"
+ "&gt;&#32;&gt;&#32;device&#32;*mmsys_dev,&#32;unsigned&#32;int&#32;next)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;i;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size&#32;-&#32;1;&#32;i++)\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_mmsys_ddp_disconnect(mmsys_dev,\r\n"
+ "&gt;&#32;&gt;&#32;get_ddp_comp_id(priv-&gt;path[i]),\r\n"
+ "&gt;&#32;&gt;&#32;+&#32;get_ddp_comp_id(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;path[i&#32;+&#32;1]));\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_mmsys_ddp_disconnect(mmsys_dev,&#32;get_ddp_comp_id(priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;path[i]),&#32;next);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;int&#32;ovlsys_adaptor_comp_get_id(struct&#32;device&#32;*dev,&#32;struct\r\n"
+ "&gt;&#32;&gt;&#32;device_node&#32;*node,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#32;enum\r\n"
+ "&gt;&#32;&gt;&#32;mtk_ovlsys_adaptor_comp_type&#32;type,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#32;enum&#32;mtk_ddp_comp_id\r\n"
+ "&gt;&#32;&gt;&#32;*comp_id)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;alias_id&#32;=&#32;of_alias_get_id(node,\r\n"
+ "&gt;&#32;&gt;&#32;private_comp_stem[type]);\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;i;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;ARRAY_SIZE(comp_matches);&#32;i++)\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(comp_matches[i].type&#32;==&#32;type&#32;&amp;&amp;\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#32;comp_matches[i].alias_id&#32;==&#32;alias_id)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+*comp_id&#32;=&#32;comp_matches[i].comp_id;\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;i;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+dev_warn(dev,&#32;&quot;Failed&#32;to&#32;get&#32;id.&#32;type:&#32;%d,&#32;alias:&#32;%d&#92;n&quot;,\r\n"
+ "&gt;&#32;&gt;&#32;type,&#32;alias_id);\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;-EINVAL;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;const&#32;struct&#32;of_device_id&#32;mtk_ovlsys_adaptor_comp_dt_ids[]\r\n"
+ "&gt;&#32;&gt;&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+.compatible&#32;=&#32;&quot;mediatek,mt8196-exdma&quot;,\r\n"
+ "&gt;&#32;&gt;&#32;+.data&#32;=&#32;(void&#32;*)OVLSYS_ADAPTOR_TYPE_EXDMA,\r\n"
+ "&gt;&#32;&gt;&#32;+},&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+.compatible&#32;=&#32;&quot;mediatek,mt8196-blender&quot;,\r\n"
+ "&gt;&#32;&gt;&#32;+.data&#32;=&#32;(void&#32;*)OVLSYS_ADAPTOR_TYPE_BLENDER,\r\n"
+ "&gt;&#32;&gt;&#32;+},&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+.compatible&#32;=&#32;&quot;mediatek,mt8196-outproc&quot;,\r\n"
+ "&gt;&#32;&gt;&#32;+.data&#32;=&#32;(void&#32;*)OVLSYS_ADAPTOR_TYPE_OUTPROC,\r\n"
+ "&gt;&#32;&gt;&#32;+},\r\n"
+ "&gt;&#32;&gt;&#32;+{},\r\n"
+ "&gt;&#32;&gt;&#32;+};\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;int&#32;ovlsys_adaptor_comp_init(struct&#32;device&#32;*dev,&#32;struct\r\n"
+ "&gt;&#32;&gt;&#32;component_match&#32;**match)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;device_node&#32;*node,&#32;*parent;\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;platform_device&#32;*comp_pdev;\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;i;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+parent&#32;=&#32;dev-&gt;parent-&gt;parent-&gt;of_node-&gt;parent;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+for_each_child_of_node(parent,&#32;node)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+const&#32;struct&#32;of_device_id&#32;*of_id;\r\n"
+ "&gt;&#32;&gt;&#32;+enum&#32;mtk_ovlsys_adaptor_comp_type&#32;type;\r\n"
+ "&gt;&#32;&gt;&#32;+enum&#32;mtk_ddp_comp_id&#32;comp_id;\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;id;\r\n"
+ "&gt;&#32;&gt;&#32;+bool&#32;found&#32;=&#32;false;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+of_id&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;of_match_node(mtk_ovlsys_adaptor_comp_dt_ids,&#32;node);\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(!of_id)\r\n"
+ "&gt;&#32;&gt;&#32;+continue;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(!of_device_is_available(node))&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+dev_dbg(dev,&#32;&quot;Skipping&#32;disabled&#32;component\r\n"
+ "&gt;&#32;&gt;&#32;%pOF&#92;n&quot;,\r\n"
+ "&gt;&#32;&gt;&#32;+node);\r\n"
+ "&gt;&#32;&gt;&#32;+continue;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+type&#32;=&#32;(enum\r\n"
+ "&gt;&#32;&gt;&#32;mtk_ovlsys_adaptor_comp_type)(uintptr_t)of_id-&gt;data;\r\n"
+ "&gt;&#32;&gt;&#32;+id&#32;=&#32;ovlsys_adaptor_comp_get_id(dev,&#32;node,&#32;type,\r\n"
+ "&gt;&#32;&gt;&#32;&amp;comp_id);\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(id&#32;&lt;&#32;0)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+dev_warn(dev,&#32;&quot;Skipping&#32;unknown&#32;component\r\n"
+ "&gt;&#32;&gt;&#32;%pOF&#92;n&quot;,\r\n"
+ "&gt;&#32;&gt;&#32;+&#32;node);\r\n"
+ "&gt;&#32;&gt;&#32;+continue;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size;&#32;i++)\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(priv-&gt;path[i]&#32;==&#32;id)\r\n"
+ "&gt;&#32;&gt;&#32;+found&#32;=&#32;true;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(!found)\r\n"
+ "&gt;&#32;&gt;&#32;+continue;\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;ovl&#32;adaptor&#32;does&#32;not&#32;check&#32;this,&#32;why&#32;ovlsys&#32;need&#32;this&#63;\r\n"
+ "&gt;&#32;If&#32;this&#32;is&#32;removed,&#32;this&#32;function&#32;is&#32;similar&#32;to&#32;the&#32;one&#32;in&#32;ovl\r\n"
+ "&gt;&#32;adaptor,\r\n"
+ "&gt;&#32;would&#32;you&#32;try&#32;to&#32;rewrite&#32;this&#32;function&#32;to&#32;be&#32;almost&#32;the&#32;same&#32;with&#32;the\r\n"
+ "&gt;&#32;one&#32;in&#32;ovl&#32;adator&#63;\r\n"
+ "&gt;&#32;Not&#32;merging&#32;it,&#32;just&#32;implement&#32;almost&#32;the&#32;same.\r\n"
+ "This&#32;is&#32;because&#32;of&#32;the&#32;mt8916&#39;s&#32;new&#32;hardwarew&#32;design.\r\n"
+ "\r\n"
+ "ovlsys&#32;adaptor&#32;have&#32;to&#32;find&#32;the&#32;possible&#32;path.\r\n"
+ "\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+comp_pdev&#32;=&#32;of_find_device_by_node(node);\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(!comp_pdev)\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;-EPROBE_DEFER;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;ovl_adaptor_comp[id]&#32;=&#32;&amp;comp_pdev-&gt;dev;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+drm_of_component_match_add(dev,&#32;match,\r\n"
+ "&gt;&#32;&gt;&#32;component_compare_of,&#32;node);\r\n"
+ "&gt;&#32;&gt;&#32;+dev_dbg(dev,&#32;&quot;Adding&#32;component&#32;match&#32;for&#32;%pOF&#92;n&quot;,\r\n"
+ "&gt;&#32;&gt;&#32;node);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(!*match)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+dev_err(dev,&#32;&quot;No&#32;match&#32;device&#32;for\r\n"
+ "&gt;&#32;&gt;&#32;ovlsys_adaptor&#92;n&quot;);\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;-ENODEV;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;0;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;int&#32;mtk_disp_ovlsys_adaptor_comp_bind(struct&#32;device&#32;*dev,\r\n"
+ "&gt;&#32;&gt;&#32;struct&#32;device&#32;*master,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#32;void&#32;*data)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(!priv-&gt;children_bound)\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;-EPROBE_DEFER;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;0;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;void&#32;mtk_disp_ovlsys_adaptor_comp_unbind(struct&#32;device\r\n"
+ "&gt;&#32;&gt;&#32;*dev,&#32;struct&#32;device&#32;*master,\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;*data)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;const&#32;struct&#32;component_ops&#32;mtk_disp_ovlsys_adaptor_comp_ops\r\n"
+ "&gt;&#32;&gt;&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+.bind=&#32;mtk_disp_ovlsys_adaptor_comp_bind,\r\n"
+ "&gt;&#32;&gt;&#32;+.unbind&#32;=&#32;mtk_disp_ovlsys_adaptor_comp_unbind,\r\n"
+ "&gt;&#32;&gt;&#32;+};\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;int&#32;mtk_disp_ovlsys_adaptor_master_bind(struct&#32;device&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;ret,&#32;i;\r\n"
+ "&gt;&#32;&gt;&#32;+unsigned&#32;int&#32;layer_nr&#32;=&#32;0;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+ret&#32;=&#32;component_bind_all(dev,&#32;priv-&gt;mmsys_dev);\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(ret)\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;dev_err_probe(dev,&#32;ret,&#32;&quot;component_bind_all\r\n"
+ "&gt;&#32;&gt;&#32;failed!&#92;n&quot;);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;children_bound&#32;=&#32;true;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;priv-&gt;path_size;&#32;i++)\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(comp_matches[priv-&gt;path[i]].type&#32;==\r\n"
+ "&gt;&#32;&gt;&#32;OVLSYS_ADAPTOR_TYPE_BLENDER)\r\n"
+ "&gt;&#32;&gt;&#32;+layer_nr++;\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;layer_nr&#32;=&#32;layer_nr;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;0;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;void&#32;mtk_disp_ovlsys_adaptor_master_unbind(struct&#32;device\r\n"
+ "&gt;&#32;&gt;&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;children_bound&#32;=&#32;false;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;const&#32;struct&#32;component_master_ops\r\n"
+ "&gt;&#32;&gt;&#32;mtk_disp_ovlsys_adaptor_master_ops&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+.bind=&#32;mtk_disp_ovlsys_adaptor_master_bind,\r\n"
+ "&gt;&#32;&gt;&#32;+.unbind=\r\n"
+ "&gt;&#32;&gt;&#32;mtk_disp_ovlsys_adaptor_master_unbind,\r\n"
+ "&gt;&#32;&gt;&#32;+};\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;const&#32;struct&#32;mtk_disp_ovlsys_adaptor\r\n"
+ "&gt;&#32;&gt;&#32;mt8196_ovlsys_adaptor_driver_data&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+.max_size&#32;=&#32;8191,\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;This&#32;is&#32;the&#32;first&#32;SoC&#32;has&#32;ovlsys,&#32;so&#32;it&#39;s&#32;not&#32;necessary&#32;to&#32;has&#32;driver\r\n"
+ "&gt;&#32;data.\r\n"
+ "&gt;&#32;After&#32;other&#32;SoC&#32;ovlsys&#32;is&#32;added,&#32;then&#32;consider&#32;to&#32;add&#32;driver&#32;data.\r\n"
+ "&gt;&#32;So,\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;#define&#32;OVLSYS_MAX_SIZE&#32;8191\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;&gt;&#32;+};\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;int&#32;mtk_disp_ovlsys_adaptor_probe(struct&#32;platform_device\r\n"
+ "&gt;&#32;&gt;&#32;*pdev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_ovlsys_adaptor&#32;*priv;\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;device&#32;*dev&#32;=&#32;&amp;pdev-&gt;dev;\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;component_match&#32;*match&#32;=&#32;NULL;\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_drm_ovlsys_private&#32;*ovlsys_priv;\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;ret;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+priv&#32;=&#32;devm_kzalloc(dev,&#32;sizeof(*priv),&#32;GFP_KERNEL);\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(!priv)\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;-ENOMEM;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+platform_set_drvdata(pdev,&#32;priv);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+ovlsys_priv&#32;=&#32;pdev-&gt;dev.platform_data;\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;mmsys_dev&#32;=&#32;ovlsys_priv-&gt;mmsys_dev;\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;max_size&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;mt8196_ovlsys_adaptor_driver_data.max_size;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(ovlsys_priv-&gt;use_path&#32;==&#32;0)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;path&#32;=&#32;mt8196_mtk_ovl_main;\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;path_size&#32;=&#32;ARRAY_SIZE(mt8196_mtk_ovl_main);\r\n"
+ "&gt;&#32;&gt;&#32;+}&#32;else&#32;if&#32;(ovlsys_priv-&gt;use_path&#32;==&#32;1)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;path&#32;=&#32;mt8196_mtk_ovl_ext;\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;path_size&#32;=&#32;ARRAY_SIZE(mt8196_mtk_ovl_ext);\r\n"
+ "&gt;&#32;&gt;&#32;+}&#32;else&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;path&#32;=&#32;mt8196_mtk_ovl_third;\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;path_size&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;ARRAY_SIZE(mt8196_mtk_ovl_third);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+ret&#32;=&#32;ovlsys_adaptor_comp_init(dev,&#32;&amp;match);\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(ret&#32;&lt;&#32;0)\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;ret;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+component_master_add_with_match(dev,\r\n"
+ "&gt;&#32;&gt;&#32;&amp;mtk_disp_ovlsys_adaptor_master_ops,&#32;match);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+pm_runtime_enable(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+ret&#32;=&#32;component_add(dev,\r\n"
+ "&gt;&#32;&gt;&#32;&amp;mtk_disp_ovlsys_adaptor_comp_ops);\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(ret&#32;!=&#32;0)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+pm_runtime_disable(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+dev_err(dev,&#32;&quot;Failed&#32;to&#32;add&#32;component:&#32;%d&#92;n&quot;,\r\n"
+ "&gt;&#32;&gt;&#32;ret);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;ret;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;void&#32;mtk_disp_ovlsys_adaptor_remove(struct&#32;platform_device\r\n"
+ "&gt;&#32;&gt;&#32;*pdev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+component_master_del(&amp;pdev-&gt;dev,\r\n"
+ "&gt;&#32;&gt;&#32;&amp;mtk_disp_ovlsys_adaptor_master_ops);\r\n"
+ "&gt;&#32;&gt;&#32;+pm_runtime_disable(&amp;pdev-&gt;dev);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;platform_driver&#32;mtk_disp_ovlsys_adaptor_driver&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+.probe=&#32;mtk_disp_ovlsys_adaptor_probe,\r\n"
+ "&gt;&#32;&gt;&#32;+.remove=&#32;mtk_disp_ovlsys_adaptor_remove,\r\n"
+ "&gt;&#32;&gt;&#32;+.driver=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+.name=&#32;&quot;mediatek-disp-ovlsys-adaptor&quot;,\r\n"
+ "&gt;&#32;&gt;&#32;+.owner=&#32;THIS_MODULE,\r\n"
+ "&gt;&#32;&gt;&#32;+},\r\n"
+ "&gt;&#32;&gt;&#32;+};\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+MODULE_AUTHOR(&quot;Nancy&#32;Lin&#32;&lt;nancy.lin@mediatek.com&gt;&quot;);\r\n"
+ "&gt;&#32;&gt;&#32;+MODULE_DESCRIPTION(&quot;MediaTek&#32;Ovlsys&#32;Adaptor&#32;Driver&quot;);\r\n"
+ "&gt;&#32;&gt;&#32;+MODULE_LICENSE(&quot;GPL&quot;);\r\n"
+ "&gt;&#32;&gt;&#32;diff&#32;--git&#32;a/drivers/gpu/drm/mediatek/mtk_drm_drv.c\r\n"
+ "&gt;&#32;&gt;&#32;b/drivers/gpu/drm/mediatek/mtk_drm_drv.c\r\n"
+ "&gt;&#32;&gt;&#32;index&#32;27190057bd8e..7526bc38bcc7&#32;100644\r\n"
+ "&gt;&#32;&gt;&#32;---&#32;a/drivers/gpu/drm/mediatek/mtk_drm_drv.c\r\n"
+ "&gt;&#32;&gt;&#32;+++&#32;b/drivers/gpu/drm/mediatek/mtk_drm_drv.c\r\n"
+ "&gt;&#32;&gt;&#32;@@&#32;-448,6&#32;+448,28&#32;@@&#32;static&#32;bool&#32;mtk_drm_find_mmsys_comp(struct\r\n"
+ "&gt;&#32;&gt;&#32;mtk_drm_private&#32;*private,&#32;int&#32;comp_id\r\n"
+ "&gt;&#32;&gt;&#32;&#160;return&#32;false;\r\n"
+ "&gt;&#32;&gt;&#32;&#160;}\r\n"
+ "&gt;&#32;&gt;&#32;&#160;\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;int&#32;mtk_drm_mmsys_comp_in_path(struct&#32;mtk_drm_private\r\n"
+ "&gt;&#32;&gt;&#32;*private,&#32;int&#32;comp_id)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+const&#32;struct&#32;mtk_mmsys_driver_data&#32;*drv_data&#32;=&#32;private-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;data;\r\n"
+ "&gt;&#32;&gt;&#32;+int&#32;i;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(drv_data-&gt;main_path)\r\n"
+ "&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;drv_data-&gt;main_len;&#32;i++)\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(drv_data-&gt;main_path[i]&#32;==&#32;comp_id)\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;0;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(drv_data-&gt;ext_path)\r\n"
+ "&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;drv_data-&gt;ext_len;&#32;i++)\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(drv_data-&gt;ext_path[i]&#32;==&#32;comp_id)\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;1;\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(drv_data-&gt;third_path)\r\n"
+ "&gt;&#32;&gt;&#32;+for&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;drv_data-&gt;third_len;&#32;i++)\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(drv_data-&gt;third_path[i]&#32;==&#32;comp_id)\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;2;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;-1;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;&#160;static&#32;int&#32;mtk_drm_kms_init(struct&#32;drm_device&#32;*drm)\r\n"
+ "&gt;&#32;&gt;&#32;&#160;{\r\n"
+ "&gt;&#32;&gt;&#32;&#160;struct&#32;mtk_drm_private&#32;*private&#32;=&#32;drm-&gt;dev_private;\r\n"
+ "&gt;&#32;&gt;&#32;@@&#32;-463,8&#32;+485,8&#32;@@&#32;static&#32;int&#32;mtk_drm_kms_init(struct&#32;drm_device\r\n"
+ "&gt;&#32;&gt;&#32;*drm)\r\n"
+ "&gt;&#32;&gt;&#32;&#160;if&#32;(ret)\r\n"
+ "&gt;&#32;&gt;&#32;&#160;goto&#32;put_mutex_dev;\r\n"
+ "&gt;&#32;&gt;&#32;&#160;\r\n"
+ "&gt;&#32;&gt;&#32;-drm-&gt;mode_config.min_width&#32;=&#32;64;\r\n"
+ "&gt;&#32;&gt;&#32;-drm-&gt;mode_config.min_height&#32;=&#32;64;\r\n"
+ "&gt;&#32;&gt;&#32;+drm-&gt;mode_config.min_width&#32;=&#32;1;\r\n"
+ "&gt;&#32;&gt;&#32;+drm-&gt;mode_config.min_height&#32;=&#32;1;\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;You&#32;change&#32;other&#32;SoC&#32;setting.\r\n"
+ "&gt;&#32;If&#32;8196&#32;has&#32;different&#32;setting,&#32;query&#32;min&#32;width/height&#32;from&#32;ddp\r\n"
+ "&gt;&#32;component&#32;and&#32;separate&#32;this&#32;to&#32;another&#32;patch.\r\n"
+ "&gt;&#32;\r\n"
+ "\r\n"
+ "Ok,&#32;I&#32;will&#32;separate&#32;this&#32;to&#32;another&#32;patch.\r\n"
+ "&gt;&#32;&gt;&#32;&#160;\r\n"
+ "&gt;&#32;&gt;&#32;&#160;/*\r\n"
+ "&gt;&#32;&gt;&#32;&#160;&#32;*&#32;set&#32;max&#32;width&#32;and&#32;height&#32;as&#32;default&#32;value(4096x4096).\r\n"
+ "&gt;&#32;&gt;&#32;@@&#32;-1107,6&#32;+1129,40&#32;@@&#32;static&#32;int&#32;mtk_drm_probe(struct\r\n"
+ "&gt;&#32;&gt;&#32;platform_device&#32;*pdev)\r\n"
+ "&gt;&#32;&gt;&#32;&#160;component_match_add(dev,&#32;&amp;match,&#32;compare_dev,\r\n"
+ "&gt;&#32;&gt;&#32;&amp;ovl_adaptor-&gt;dev);\r\n"
+ "&gt;&#32;&gt;&#32;&#160;}\r\n"
+ "&gt;&#32;&gt;&#32;&#160;\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(mtk_drm_find_mmsys_comp(private,\r\n"
+ "&gt;&#32;&gt;&#32;DDP_COMPONENT_DRM_OVLSYS_ADAPTOR0))&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_drm_ovlsys_private&#32;ovlsys_priv;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+ovlsys_priv.mmsys_dev&#32;=&#32;private-&gt;mmsys_dev;\r\n"
+ "&gt;&#32;&gt;&#32;+ovlsys_priv.use_path&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_drm_mmsys_comp_in_path(private,\r\n"
+ "&gt;&#32;&gt;&#32;DDP_COMPONENT_DRM_OVLSYS_ADAPTOR0);\r\n"
+ "&gt;&#32;&gt;&#32;+ovl_adaptor&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;+platform_device_register_data(dev,\r\n"
+ "&gt;&#32;&gt;&#32;&quot;mediatek-disp-ovlsys-adaptor&quot;,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;\r\n"
+ "&gt;&#32;&gt;&#32;PLATFORM_DEVID_AUTO,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#32;(void\r\n"
+ "&gt;&#32;&gt;&#32;*)&amp;ovlsys_priv,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;\r\n"
+ "&gt;&#32;&gt;&#32;sizeof(struct&#32;mtk_drm_ovlsys_private));\r\n"
+ "&gt;&#32;&gt;&#32;+private-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ddp_comp[DDP_COMPONENT_DRM_OVLSYS_ADAPTOR0].dev&#32;=&#32;&amp;ovl_adaptor-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;dev;\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_ddp_comp_init(NULL,&#32;&amp;private-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ddp_comp[DDP_COMPONENT_DRM_OVLSYS_ADAPTOR0],\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;\r\n"
+ "&gt;&#32;&gt;&#32;DDP_COMPONENT_DRM_OVLSYS_ADAPTOR0);\r\n"
+ "&gt;&#32;&gt;&#32;+component_match_add(dev,&#32;&amp;match,&#32;compare_dev,\r\n"
+ "&gt;&#32;&gt;&#32;&amp;ovl_adaptor-&gt;dev);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(mtk_drm_find_mmsys_comp(private,\r\n"
+ "&gt;&#32;&gt;&#32;DDP_COMPONENT_DRM_OVLSYS_ADAPTOR1))&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_drm_ovlsys_private&#32;ovlsys_priv;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+ovlsys_priv.mmsys_dev&#32;=&#32;private-&gt;mmsys_dev;\r\n"
+ "&gt;&#32;&gt;&#32;+ovlsys_priv.use_path&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_drm_mmsys_comp_in_path(private,\r\n"
+ "&gt;&#32;&gt;&#32;DDP_COMPONENT_DRM_OVLSYS_ADAPTOR1);\r\n"
+ "&gt;&#32;&gt;&#32;+ovl_adaptor&#32;=\r\n"
+ "&gt;&#32;&gt;&#32;+platform_device_register_data(dev,\r\n"
+ "&gt;&#32;&gt;&#32;&quot;mediatek-disp-ovlsys-adaptor&quot;,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;\r\n"
+ "&gt;&#32;&gt;&#32;PLATFORM_DEVID_AUTO,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#32;(void\r\n"
+ "&gt;&#32;&gt;&#32;*)&amp;ovlsys_priv,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;\r\n"
+ "&gt;&#32;&gt;&#32;sizeof(struct&#32;mtk_drm_ovlsys_private));\r\n"
+ "&gt;&#32;&gt;&#32;+private-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ddp_comp[DDP_COMPONENT_DRM_OVLSYS_ADAPTOR1].dev&#32;=&#32;&amp;ovl_adaptor-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;dev;\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_ddp_comp_init(NULL,&#32;&amp;private-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;ddp_comp[DDP_COMPONENT_DRM_OVLSYS_ADAPTOR1],\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;\r\n"
+ "&gt;&#32;&gt;&#32;DDP_COMPONENT_DRM_OVLSYS_ADAPTOR1);\r\n"
+ "&gt;&#32;&gt;&#32;+component_match_add(dev,&#32;&amp;match,&#32;compare_dev,\r\n"
+ "&gt;&#32;&gt;&#32;&amp;ovl_adaptor-&gt;dev);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;&#160;/*&#32;Iterate&#32;over&#32;sibling&#32;DISP&#32;function&#32;blocks&#32;*/\r\n"
+ "&gt;&#32;&gt;&#32;&#160;for_each_child_of_node(phandle-&gt;parent,&#32;node)&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;&#160;enum&#32;mtk_ddp_comp_type&#32;comp_type;\r\n"
+ "&gt;&#32;&gt;&#32;@@&#32;-1268,6&#32;+1324,7&#32;@@&#32;static&#32;struct&#32;platform_driver&#32;*&#32;const\r\n"
+ "&gt;&#32;&gt;&#32;mtk_drm_drivers[]&#32;=&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;&#160;&amp;mtk_disp_outproc_driver,\r\n"
+ "&gt;&#32;&gt;&#32;&#160;&amp;mtk_disp_ovl_adaptor_driver,\r\n"
+ "&gt;&#32;&gt;&#32;&#160;&amp;mtk_disp_ovl_driver,\r\n"
+ "&gt;&#32;&gt;&#32;+&amp;mtk_disp_ovlsys_adaptor_driver,\r\n"
+ "&gt;&#32;&gt;&#32;&#160;&amp;mtk_disp_rdma_driver,\r\n"
+ "&gt;&#32;&gt;&#32;&#160;&amp;mtk_dpi_driver,\r\n"
+ "&gt;&#32;&gt;&#32;&#160;&amp;mtk_drm_platform_driver,\r\n"
+ "&gt;&#32;&gt;&#32;diff&#32;--git&#32;a/drivers/gpu/drm/mediatek/mtk_drm_drv.h\r\n"
+ "&gt;&#32;&gt;&#32;b/drivers/gpu/drm/mediatek/mtk_drm_drv.h\r\n"
+ "&gt;&#32;&gt;&#32;index&#32;c4717c37b0f1..aa17e743a1d0&#32;100644\r\n"
+ "&gt;&#32;&gt;&#32;---&#32;a/drivers/gpu/drm/mediatek/mtk_drm_drv.h\r\n"
+ "&gt;&#32;&gt;&#32;+++&#32;b/drivers/gpu/drm/mediatek/mtk_drm_drv.h\r\n"
+ "&gt;&#32;&gt;&#32;@@&#32;-11,7&#32;+11,9&#32;@@\r\n"
+ "&gt;&#32;&gt;&#32;&#160;\r\n"
+ "&gt;&#32;&gt;&#32;&#160;#define&#32;MAX_CONNECTOR2\r\n"
+ "&gt;&#32;&gt;&#32;&#160;#define&#32;DDP_COMPONENT_DRM_OVL_ADAPTOR&#32;(DDP_COMPONENT_ID_MAX&#32;+&#32;1)\r\n"
+ "&gt;&#32;&gt;&#32;-#define&#32;DDP_COMPONENT_DRM_ID_MAX&#32;(DDP_COMPONENT_DRM_OVL_ADAPTOR&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;1)\r\n"
+ "&gt;&#32;&gt;&#32;+#define&#32;DDP_COMPONENT_DRM_OVLSYS_ADAPTOR0\r\n"
+ "&gt;&#32;&gt;&#32;(DDP_COMPONENT_DRM_OVL_ADAPTOR&#32;+&#32;1)\r\n"
+ "&gt;&#32;&gt;&#32;+#define&#32;DDP_COMPONENT_DRM_OVLSYS_ADAPTOR1\r\n"
+ "&gt;&#32;&gt;&#32;(DDP_COMPONENT_DRM_OVLSYS_ADAPTOR0&#32;+&#32;1)\r\n"
+ "&gt;&#32;&gt;&#32;+#define&#32;DDP_COMPONENT_DRM_ID_MAX\r\n"
+ "&gt;&#32;&gt;&#32;(DDP_COMPONENT_DRM_OVLSYS_ADAPTOR1&#32;+&#32;1)\r\n"
+ "&gt;&#32;&gt;&#32;&#160;\r\n"
+ "&gt;&#32;&gt;&#32;&#160;enum&#32;mtk_crtc_path&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;&#160;CRTC_MAIN,\r\n"
+ "&gt;&#32;&gt;&#32;@@&#32;-69,6&#32;+71,12&#32;@@&#32;struct&#32;mtk_drm_private&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;&#160;struct&#32;mtk_drm_private&#32;**all_drm_private;\r\n"
+ "&gt;&#32;&gt;&#32;&#160;};\r\n"
+ "&gt;&#32;&gt;&#32;&#160;\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_drm_ovlsys_private&#32;{\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;ovlsys&#32;has&#32;its&#32;own&#32;private&#32;data&#32;structure.\r\n"
+ "&gt;&#32;mtk_ovlsys_platform_data&#32;is&#32;better.\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Regards,\r\n"
+ "&gt;&#32;CK\r\n"
+ "&gt;&#32;\r\n"
+ "\r\n"
+ "Ok,&#32;I&#32;will&#32;fix&#32;this&#32;problem.\r\n"
+ "\r\n"
+ "\r\n"
+ "Best,&#32;Paul\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;device&#32;*mmsys_dev;\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;device&#32;*mutex_dev;\r\n"
+ "&gt;&#32;&gt;&#32;+unsigned&#32;int&#32;use_path;\r\n"
+ "&gt;&#32;&gt;&#32;+};\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_disp_aal_driver;\r\n"
+ "&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_disp_blender_driver;\r\n"
+ "&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_disp_ccorr_driver;\r\n"
+ "&gt;&#32;&gt;&#32;@@&#32;-79,6&#32;+87,7&#32;@@&#32;extern&#32;struct&#32;platform_driver\r\n"
+ "&gt;&#32;&gt;&#32;mtk_disp_merge_driver;\r\n"
+ "&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_disp_outproc_driver;\r\n"
+ "&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_disp_ovl_adaptor_driver;\r\n"
+ "&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_disp_ovl_driver;\r\n"
+ "&gt;&#32;&gt;&#32;+extern&#32;struct&#32;platform_driver&#32;mtk_disp_ovlsys_adaptor_driver;\r\n"
+ "&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_disp_rdma_driver;\r\n"
+ "&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_dpi_driver;\r\n"
+ "&gt;&#32;&gt;&#32;&#160;extern&#32;struct&#32;platform_driver&#32;mtk_dsi_driver;\r\n"
+ "&gt;&#32;\r\n"
+ "\r\n"
+ "\r\n"
+ "</pre>\r\n"
+ "</p></body></html><!--type:text--><!--{--><pre>************* MEDIATEK Confidentiality Notice ********************\r\n"
+ "The information contained in this e-mail message (including any \r\n"
+ "attachments) may be confidential, proprietary, privileged, or otherwise\r\n"
+ "exempt from disclosure under applicable laws. It is intended to be \r\n"
+ "conveyed only to the designated recipient(s). Any use, dissemination, \r\n"
+ "distribution, printing, retaining or copying of this e-mail (including its \r\n"
+ "attachments) by unintended recipient(s) is strictly prohibited and may \r\n"
+ "be unlawful. If you are not an intended recipient of this e-mail, or believe \r\n"
+ "that you have received this e-mail in error, please notify the sender \r\n"
+ "immediately (by replying to this e-mail), delete any and all copies of \r\n"
+ "this e-mail (including any attachments) from your system, and do not\r\n"
+ "disclose the content of this e-mail to any other person. Thank you!\r\n"
+ </pre><!--}-->
 
-f33a85ca19bbab0dc6a0724483ae712cb83693e9f9abc64d94b40932dc534551
+33566c3cd4ba33f184bd79abd58892e5a74b9a244d95bfde5e5f848e8b190536

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.