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

diff --git a/N1/2.bin b/N1/2.bin
new file mode 100644
index 0000000..d7c727d
--- /dev/null
+++ b/N1/2.bin
@@ -0,0 +1,271 @@
+<html><body><p>
+<pre>
+On&#32;Wed,&#32;2025-02-12&#32;at&#32;04:08&#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;OUTPROC&#32;handles&#32;the&#32;post-stage&#32;of&#32;pixel&#32;processing&#32;in
+&gt;&#32;&gt;&#32;the&#32;overlapping&#32;procedure.OUTPROC&#32;manages&#32;pixels&#32;for
+&gt;&#32;&gt;&#32;gamma&#32;correction&#32;and&#32;ensures&#32;that&#32;pixel&#32;values&#32;are
+&gt;&#32;&gt;&#32;within&#32;the&#32;correct&#32;range.
+&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;&#32;|&#160;&#160;&#32;1&#32;+
+&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_ddp_comp.c&#160;&#160;&#160;&#160;&#32;|&#160;&#160;&#32;1&#32;+
+&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_ddp_comp.h&#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;&#32;|&#160;&#32;14&#32;++
+&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_disp_outproc.c&#32;|&#32;244
+&gt;&#32;&gt;&#32;++++++++++++++++++++
+&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_disp_outproc.h&#32;|&#160;&#32;22&#32;++
+&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_drm_drv.c&#160;&#160;&#160;&#160;&#160;&#32;|&#160;&#160;&#32;1&#32;+
+&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_drm_drv.h&#160;&#160;&#160;&#160;&#160;&#32;|&#160;&#160;&#32;1&#32;+
+&gt;&#32;&gt;&#32;&#160;8&#32;files&#32;changed,&#32;285&#32;insertions(+)
+&gt;&#32;&gt;&#32;&#160;create&#32;mode&#32;100644&#32;drivers/gpu/drm/mediatek/mtk_disp_outproc.c
+&gt;&#32;&gt;&#32;&#160;create&#32;mode&#32;100644&#32;drivers/gpu/drm/mediatek/mtk_disp_outproc.h
+&gt;&#32;&gt;&#32;
+&gt;&#32;&gt;&#32;
+//snip
+&gt;&#32;&gt;&#32;diff&#32;--git&#32;a/drivers/gpu/drm/mediatek/mtk_disp_outproc.c
+&gt;&#32;&gt;&#32;b/drivers/gpu/drm/mediatek/mtk_disp_outproc.c
+&gt;&#32;&gt;&#32;new&#32;file&#32;mode&#32;100644
+&gt;&#32;&gt;&#32;index&#32;000000000000..af473eb2fb77
+&gt;&#32;&gt;&#32;---&#32;/dev/null
+&gt;&#32;&gt;&#32;+++&#32;b/drivers/gpu/drm/mediatek/mtk_disp_outproc.c
+&gt;&#32;&gt;&#32;@@&#32;-0,0&#32;+1,244&#32;@@
+&gt;&#32;&gt;&#32;+//&#32;SPDX-License-Identifier:&#32;GPL-2.0-only
+&gt;&#32;&gt;&#32;+/*
+&gt;&#32;&gt;&#32;+&#32;*&#32;Copyright&#32;(c)&#32;2021&#32;MediaTek&#32;Inc.
+&gt;&#32;&gt;&#32;+&#32;*/
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+#include&#32;&lt;drm/drm_fourcc.h&gt;
+&gt;&#32;&gt;&#32;+#include&#32;&lt;drm/drm_framebuffer.h&gt;
+&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/clk.h&gt;
+&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/component.h&gt;
+&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/of_device.h&gt;
+&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/of_address.h&gt;
+&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/platform_device.h&gt;
+&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/reset.h&gt;
+&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/soc/mediatek/mtk-cmdq.h&gt;
+&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/soc/mediatek/mtk-mmsys.h&gt;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_crtc.h&quot;
+&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_ddp_comp.h&quot;
+&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/of.h&gt;
+&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_drm_drv.h&quot;
+&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_disp_outproc.h&quot;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+#define
+&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_INTEN0x004
+&gt;&#32;&gt;&#32;+#define
+&gt;&#32;&gt;&#32;OVL_OUTPROC_FME_CPL_INTENBIT(1)
+&gt;&#32;&gt;&#32;+#define
+&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_INTSTA0x008
+&gt;&#32;&gt;&#32;+#define
+&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_DATAPATH_CON0x010
+&gt;&#32;&gt;&#32;+#define
+&gt;&#32;&gt;&#32;DATAPATH_CON_OUTPUT_CLAMPBIT(26)
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+#define
+&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_EN0x020
+&gt;&#32;&gt;&#32;+#define
+&gt;&#32;&gt;&#32;OVL_OUTPROC_OVL_ENBIT(0)
+&gt;&#32;&gt;&#32;+#define
+&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_RST0x024
+&gt;&#32;&gt;&#32;+#define
+&gt;&#32;&gt;&#32;OVL_OUTPROC_RSTBIT(0)
+&gt;&#32;&gt;&#32;+#define
+&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_SHADOW_CTRL0x028
+&gt;&#32;&gt;&#32;+#define
+&gt;&#32;&gt;&#32;OVL_OUTPROC_BYPASS_SHADOWBIT(2)
+&gt;&#32;&gt;&#32;+#define
+&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_ROI_SIZE0x030
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_outproc&#32;{
+&gt;&#32;&gt;&#32;+void&#32;__iomem*regs;
+&gt;&#32;&gt;&#32;+struct&#32;clk*clk;
+&gt;&#32;&gt;&#32;+void(*vblank_cb)(void&#32;*data);
+&gt;&#32;&gt;&#32;+void*vblank_cb_data;
+&gt;&#32;&gt;&#32;+intirq;
+&gt;&#32;&gt;&#32;+struct&#32;cmdq_client_regcmdq_reg;
+&gt;&#32;&gt;&#32;+};
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_disp_outproc_register_vblank_cb(struct&#32;device&#32;*dev,
+&gt;&#32;&gt;&#32;+&#32;void&#32;(*vblank_cb)(void
+&gt;&#32;&gt;&#32;*),
+&gt;&#32;&gt;&#32;+&#32;void&#32;*vblank_cb_data)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_outproc&#32;*priv&#32;=&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+priv-&gt;vblank_cb&#32;=&#32;vblank_cb;
+&gt;&#32;&gt;&#32;+priv-&gt;vblank_cb_data&#32;=&#32;vblank_cb_data;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_disp_outproc_unregister_vblank_cb(struct&#32;device&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_outproc&#32;*priv&#32;=&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+priv-&gt;vblank_cb&#32;=&#32;NULL;
+&gt;&#32;&gt;&#32;+priv-&gt;vblank_cb_data&#32;=&#32;NULL;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_disp_outproc_enable_vblank(struct&#32;device&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_outproc&#32;*priv&#32;=&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+writel(OVL_OUTPROC_FME_CPL_INTEN,&#32;priv-&gt;regs&#32;+
+&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_INTEN);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_disp_outproc_disable_vblank(struct&#32;device&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_outproc&#32;*priv&#32;=&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+writel(0x0,&#32;priv-&gt;regs&#32;+&#32;DISP_REG_OVL_OUTPROC_INTEN);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+static&#32;irqreturn_t&#32;mtk_disp_outproc_irq_handler(int&#32;irq,&#32;void
+&gt;&#32;&gt;&#32;*dev_id)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_outproc&#32;*priv&#32;=&#32;dev_id;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+writel(0x0,&#32;priv-&gt;regs&#32;+&#32;DISP_REG_OVL_OUTPROC_INTSTA);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(!priv-&gt;vblank_cb)
+&gt;&#32;&gt;&#32;+return&#32;IRQ_NONE;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+priv-&gt;vblank_cb(priv-&gt;vblank_cb_data);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+return&#32;IRQ_HANDLED;
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_disp_outproc_config(struct&#32;device&#32;*dev,&#32;unsigned&#32;int&#32;w,
+&gt;&#32;&gt;&#32;+&#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;&#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_outproc&#32;*priv&#32;=&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+unsigned&#32;int&#32;tmp;
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+dev_dbg(dev,&#32;&quot;%s-w:%d,&#32;h:%d&#92;n&quot;,&#32;__func__,&#32;w,&#32;h);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+tmp&#32;=&#32;readl(priv-&gt;regs&#32;+
+&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_SHADOW_CTRL);
+&gt;&#32;&gt;&#32;+tmp&#32;=&#32;tmp&#32;|&#32;OVL_OUTPROC_BYPASS_SHADOW;
+&gt;&#32;&gt;&#32;+writel(tmp,&#32;priv-&gt;regs&#32;+
+&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_SHADOW_CTRL);
+&gt;&#32;
+&gt;&#32;Move&#32;bypass&#32;shadow&#32;to&#32;mtk_disp_outproc_start().
+&gt;&#32;
+
+Sure,&#32;we&#32;will&#32;move&#32;the&#32;bypass&#32;shadow&#32;to&#32;mtk_disp_outproc_start().
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+mtk_ddp_write_mask(cmdq_pkt,&#32;h&#32;&lt;&lt;&#32;16&#32;|&#32;w,&#32;&amp;priv-&gt;cmdq_reg,
+&gt;&#32;&gt;&#32;priv-&gt;regs,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#32;DISP_REG_OVL_OUTPROC_ROI_SIZE,&#32;&#126;0);
+&gt;&#32;
+&gt;&#32;mtk_ddp_write();
+&gt;&#32;
+&gt;&#32;&gt;&#32;+mtk_ddp_write_mask(cmdq_pkt,&#32;DATAPATH_CON_OUTPUT_CLAMP,
+&gt;&#32;&gt;&#32;&amp;priv-&gt;cmdq_reg,&#32;priv-&gt;regs,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#32;DISP_REG_OVL_OUTPROC_DATAPATH_CON,
+&gt;&#32;&gt;&#32;DATAPATH_CON_OUTPUT_CLAMP);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_disp_outproc_start(struct&#32;device&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_outproc&#32;*priv&#32;=&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+mtk_ddp_write_mask(NULL,&#32;OVL_OUTPROC_RST,&#32;&amp;priv-&gt;cmdq_reg,
+&gt;&#32;&gt;&#32;priv-&gt;regs,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#32;DISP_REG_OVL_OUTPROC_RST,
+&gt;&#32;&gt;&#32;OVL_OUTPROC_RST);
+&gt;&#32;
+&gt;&#32;writel();
+&gt;&#32;
+
+Sure,&#32;I&#32;will&#32;use&#32;the&#32;writel()&#32;to&#32;replace&#32;the&#32;mtk_ddp_write_mask().
+&gt;&#32;&gt;&#32;+mtk_ddp_write_mask(NULL,&#32;0,&#32;&amp;priv-&gt;cmdq_reg,&#32;priv-&gt;regs,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#32;DISP_REG_OVL_OUTPROC_RST,
+&gt;&#32;&gt;&#32;OVL_OUTPROC_RST);
+&gt;&#32;
+&gt;&#32;Some&#32;hardware&#32;reset&#32;before&#32;start.
+&gt;&#32;Some&#32;hardware&#32;reset&#32;after&#32;stop.
+&gt;&#32;
+&gt;&#32;Could&#32;align&#32;this&#63;
+&gt;&#32;
+Sure,&#32;we&#32;will&#32;align&#32;this&#32;part.
+&gt;&#32;&gt;&#32;+mtk_ddp_write(NULL,&#32;0,&#32;&amp;priv-&gt;cmdq_reg,&#32;priv-&gt;regs,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#32;DISP_REG_OVL_OUTPROC_INTSTA);
+&gt;&#32;&gt;&#32;+mtk_ddp_write_mask(NULL,&#32;OVL_OUTPROC_OVL_EN,&#32;&amp;priv-
+&gt;&#32;&gt;&#32;&gt;cmdq_reg,&#32;priv-&gt;regs,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#32;DISP_REG_OVL_OUTPROC_EN,
+&gt;&#32;&gt;&#32;OVL_OUTPROC_OVL_EN);
+&gt;&#32;&gt;&#32;+}
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+void&#32;mtk_disp_outproc_stop(struct&#32;device&#32;*dev)
+&gt;&#32;&gt;&#32;+{
+&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_outproc&#32;*priv&#32;=&#32;dev_get_drvdata(dev);
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+mtk_ddp_write(NULL,&#32;0,&#32;&amp;priv-&gt;cmdq_reg,&#32;priv-&gt;regs,
+&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#32;DISP_REG_OVL_OUTPROC_INTEN);
+&gt;&#32;
+&gt;&#32;OVL&#32;driver&#32;does&#32;not&#32;disable&#32;interrupt&#32;when&#32;stop.
+&gt;&#32;Align&#32;this&#32;with&#32;OVL&#32;driver.
+&gt;&#32;
+Sure&#32;I&#32;will&#32;check&#32;the&#32;driver&#32;and&#32;align&#32;this&#32;part.
+
+&gt;&#32;
+//snip
+&gt;&#32;&gt;&#32;+#if&#32;IS_REACHABLE(CONFIG_MTK_CMDQ)
+&gt;&#32;&gt;&#32;+ret&#32;=&#32;cmdq_dev_get_client_reg(dev,&#32;&amp;priv-&gt;cmdq_reg,&#32;0);
+&gt;&#32;&gt;&#32;+if&#32;(ret)
+&gt;&#32;&gt;&#32;+dev_dbg(dev,&#32;&quot;No&#32;mediatek,gce-client-reg&#92;n&quot;);
+&gt;&#32;&gt;&#32;+#endif
+&gt;&#32;&gt;&#32;+
+&gt;&#32;&gt;&#32;+if&#32;(of_property_read_u32_index(dev-&gt;of_node,&#32;&quot;interrupts&quot;,
+&gt;&#32;&gt;&#32;0,&#32;&amp;ret))&#32;{
+&gt;&#32;&gt;&#32;+dev_dbg(dev,&#32;&quot;interrupts&#32;not&#32;defined&#92;n&quot;);
+&gt;&#32;
+&gt;&#32;In&#32;binding&#32;document,&#32;interrupt&#32;is&#32;required.
+&gt;&#32;So&#32;return&#32;with&#32;error&#32;code.
+&gt;&#32;
+The&#32;interrupt&#32;is&#32;not&#32;required,&#32;I&#32;have&#32;rewrite&#32;the&#32;binding&#32;document.&#32;
+&gt;&#32;&gt;&#32;+}&#32;else&#32;{
+&gt;&#32;&gt;&#32;+priv-&gt;irq&#32;=&#32;platform_get_irq(pdev,&#32;0);
+&gt;&#32;&gt;&#32;+if&#32;(priv-&gt;irq&#32;&lt;&#32;0)
+&gt;&#32;&gt;&#32;+priv-&gt;irq&#32;=&#32;0;
+&gt;&#32;
+&gt;&#32;In&#32;binding&#32;document,&#32;interrupt&#32;is&#32;required.
+&gt;&#32;So&#32;return&#32;with&#32;error&#32;code.
+&gt;&#32;
+&gt;&#32;Regards,
+&gt;&#32;CK
+&gt;&#32;
+The&#32;interrupt&#32;is&#32;not&#32;required,&#32;I&#32;have&#32;rewrite&#32;the&#32;binding&#32;document.&#32;
+The&#32;next&#32;upstream&#32;version&#32;of&#32;patch&#32;would&#32;fix&#32;this&#32;problem
+
+
+Best,&#32;
+
+Paul
+&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 bd7d94b..dbc6430 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 04:08 +0000, CK Hu (\350\203\241\344\277\212\345\205\211) wrote:\n"
  "> Hi, Paul:\n"
@@ -281,5 +281,278 @@
  "\n"
  "Paul\n"
  >
+ "\01:2\0"
+ "b\0"
+ "<html><body><p>\r\n"
+ "<pre>\r\n"
+ "On&#32;Wed,&#32;2025-02-12&#32;at&#32;04:08&#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;OUTPROC&#32;handles&#32;the&#32;post-stage&#32;of&#32;pixel&#32;processing&#32;in\r\n"
+ "&gt;&#32;&gt;&#32;the&#32;overlapping&#32;procedure.OUTPROC&#32;manages&#32;pixels&#32;for\r\n"
+ "&gt;&#32;&gt;&#32;gamma&#32;correction&#32;and&#32;ensures&#32;that&#32;pixel&#32;values&#32;are\r\n"
+ "&gt;&#32;&gt;&#32;within&#32;the&#32;correct&#32;range.\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;&#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;&#32;|&#160;&#160;&#32;1&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_ddp_comp.h&#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;&#32;|&#160;&#32;14&#32;++\r\n"
+ "&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_disp_outproc.c&#32;|&#32;244\r\n"
+ "&gt;&#32;&gt;&#32;++++++++++++++++++++\r\n"
+ "&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_disp_outproc.h&#32;|&#160;&#32;22&#32;++\r\n"
+ "&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_drm_drv.c&#160;&#160;&#160;&#160;&#160;&#32;|&#160;&#160;&#32;1&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;&#160;drivers/gpu/drm/mediatek/mtk_drm_drv.h&#160;&#160;&#160;&#160;&#160;&#32;|&#160;&#160;&#32;1&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;&#160;8&#32;files&#32;changed,&#32;285&#32;insertions(+)\r\n"
+ "&gt;&#32;&gt;&#32;&#160;create&#32;mode&#32;100644&#32;drivers/gpu/drm/mediatek/mtk_disp_outproc.c\r\n"
+ "&gt;&#32;&gt;&#32;&#160;create&#32;mode&#32;100644&#32;drivers/gpu/drm/mediatek/mtk_disp_outproc.h\r\n"
+ "&gt;&#32;&gt;&#32;\r\n"
+ "&gt;&#32;&gt;&#32;\r\n"
+ "//snip\r\n"
+ "&gt;&#32;&gt;&#32;diff&#32;--git&#32;a/drivers/gpu/drm/mediatek/mtk_disp_outproc.c\r\n"
+ "&gt;&#32;&gt;&#32;b/drivers/gpu/drm/mediatek/mtk_disp_outproc.c\r\n"
+ "&gt;&#32;&gt;&#32;new&#32;file&#32;mode&#32;100644\r\n"
+ "&gt;&#32;&gt;&#32;index&#32;000000000000..af473eb2fb77\r\n"
+ "&gt;&#32;&gt;&#32;---&#32;/dev/null\r\n"
+ "&gt;&#32;&gt;&#32;+++&#32;b/drivers/gpu/drm/mediatek/mtk_disp_outproc.c\r\n"
+ "&gt;&#32;&gt;&#32;@@&#32;-0,0&#32;+1,244&#32;@@\r\n"
+ "&gt;&#32;&gt;&#32;+//&#32;SPDX-License-Identifier:&#32;GPL-2.0-only\r\n"
+ "&gt;&#32;&gt;&#32;+/*\r\n"
+ "&gt;&#32;&gt;&#32;+&#32;*&#32;Copyright&#32;(c)&#32;2021&#32;MediaTek&#32;Inc.\r\n"
+ "&gt;&#32;&gt;&#32;+&#32;*/\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&lt;drm/drm_fourcc.h&gt;\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&lt;drm/drm_framebuffer.h&gt;\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/clk.h&gt;\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/component.h&gt;\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/of_device.h&gt;\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/of_address.h&gt;\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/platform_device.h&gt;\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/reset.h&gt;\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/soc/mediatek/mtk-cmdq.h&gt;\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/soc/mediatek/mtk-mmsys.h&gt;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_crtc.h&quot;\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_ddp_comp.h&quot;\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&lt;linux/of.h&gt;\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_drm_drv.h&quot;\r\n"
+ "&gt;&#32;&gt;&#32;+#include&#32;&quot;mtk_disp_outproc.h&quot;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+#define\r\n"
+ "&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_INTEN0x004\r\n"
+ "&gt;&#32;&gt;&#32;+#define\r\n"
+ "&gt;&#32;&gt;&#32;OVL_OUTPROC_FME_CPL_INTENBIT(1)\r\n"
+ "&gt;&#32;&gt;&#32;+#define\r\n"
+ "&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_INTSTA0x008\r\n"
+ "&gt;&#32;&gt;&#32;+#define\r\n"
+ "&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_DATAPATH_CON0x010\r\n"
+ "&gt;&#32;&gt;&#32;+#define\r\n"
+ "&gt;&#32;&gt;&#32;DATAPATH_CON_OUTPUT_CLAMPBIT(26)\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+#define\r\n"
+ "&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_EN0x020\r\n"
+ "&gt;&#32;&gt;&#32;+#define\r\n"
+ "&gt;&#32;&gt;&#32;OVL_OUTPROC_OVL_ENBIT(0)\r\n"
+ "&gt;&#32;&gt;&#32;+#define\r\n"
+ "&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_RST0x024\r\n"
+ "&gt;&#32;&gt;&#32;+#define\r\n"
+ "&gt;&#32;&gt;&#32;OVL_OUTPROC_RSTBIT(0)\r\n"
+ "&gt;&#32;&gt;&#32;+#define\r\n"
+ "&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_SHADOW_CTRL0x028\r\n"
+ "&gt;&#32;&gt;&#32;+#define\r\n"
+ "&gt;&#32;&gt;&#32;OVL_OUTPROC_BYPASS_SHADOWBIT(2)\r\n"
+ "&gt;&#32;&gt;&#32;+#define\r\n"
+ "&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_ROI_SIZE0x030\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_outproc&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;__iomem*regs;\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;clk*clk;\r\n"
+ "&gt;&#32;&gt;&#32;+void(*vblank_cb)(void&#32;*data);\r\n"
+ "&gt;&#32;&gt;&#32;+void*vblank_cb_data;\r\n"
+ "&gt;&#32;&gt;&#32;+intirq;\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;cmdq_client_regcmdq_reg;\r\n"
+ "&gt;&#32;&gt;&#32;+};\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_disp_outproc_register_vblank_cb(struct&#32;device&#32;*dev,\r\n"
+ "&gt;&#32;&gt;&#32;+&#32;void&#32;(*vblank_cb)(void\r\n"
+ "&gt;&#32;&gt;&#32;*),\r\n"
+ "&gt;&#32;&gt;&#32;+&#32;void&#32;*vblank_cb_data)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_outproc&#32;*priv&#32;=&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;vblank_cb&#32;=&#32;vblank_cb;\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;vblank_cb_data&#32;=&#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_disp_outproc_unregister_vblank_cb(struct&#32;device&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_outproc&#32;*priv&#32;=&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;vblank_cb&#32;=&#32;NULL;\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;vblank_cb_data&#32;=&#32;NULL;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_disp_outproc_enable_vblank(struct&#32;device&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_outproc&#32;*priv&#32;=&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+writel(OVL_OUTPROC_FME_CPL_INTEN,&#32;priv-&gt;regs&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_INTEN);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_disp_outproc_disable_vblank(struct&#32;device&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_outproc&#32;*priv&#32;=&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+writel(0x0,&#32;priv-&gt;regs&#32;+&#32;DISP_REG_OVL_OUTPROC_INTEN);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+static&#32;irqreturn_t&#32;mtk_disp_outproc_irq_handler(int&#32;irq,&#32;void\r\n"
+ "&gt;&#32;&gt;&#32;*dev_id)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_outproc&#32;*priv&#32;=&#32;dev_id;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+writel(0x0,&#32;priv-&gt;regs&#32;+&#32;DISP_REG_OVL_OUTPROC_INTSTA);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(!priv-&gt;vblank_cb)\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;IRQ_NONE;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;vblank_cb(priv-&gt;vblank_cb_data);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+return&#32;IRQ_HANDLED;\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_disp_outproc_config(struct&#32;device&#32;*dev,&#32;unsigned&#32;int&#32;w,\r\n"
+ "&gt;&#32;&gt;&#32;+&#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;&#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_outproc&#32;*priv&#32;=&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+unsigned&#32;int&#32;tmp;\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+dev_dbg(dev,&#32;&quot;%s-w:%d,&#32;h:%d&#92;n&quot;,&#32;__func__,&#32;w,&#32;h);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+tmp&#32;=&#32;readl(priv-&gt;regs&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_SHADOW_CTRL);\r\n"
+ "&gt;&#32;&gt;&#32;+tmp&#32;=&#32;tmp&#32;|&#32;OVL_OUTPROC_BYPASS_SHADOW;\r\n"
+ "&gt;&#32;&gt;&#32;+writel(tmp,&#32;priv-&gt;regs&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;DISP_REG_OVL_OUTPROC_SHADOW_CTRL);\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Move&#32;bypass&#32;shadow&#32;to&#32;mtk_disp_outproc_start().\r\n"
+ "&gt;&#32;\r\n"
+ "\r\n"
+ "Sure,&#32;we&#32;will&#32;move&#32;the&#32;bypass&#32;shadow&#32;to&#32;mtk_disp_outproc_start().\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_ddp_write_mask(cmdq_pkt,&#32;h&#32;&lt;&lt;&#32;16&#32;|&#32;w,&#32;&amp;priv-&gt;cmdq_reg,\r\n"
+ "&gt;&#32;&gt;&#32;priv-&gt;regs,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#32;DISP_REG_OVL_OUTPROC_ROI_SIZE,&#32;&#126;0);\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;mtk_ddp_write();\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_ddp_write_mask(cmdq_pkt,&#32;DATAPATH_CON_OUTPUT_CLAMP,\r\n"
+ "&gt;&#32;&gt;&#32;&amp;priv-&gt;cmdq_reg,&#32;priv-&gt;regs,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#32;DISP_REG_OVL_OUTPROC_DATAPATH_CON,\r\n"
+ "&gt;&#32;&gt;&#32;DATAPATH_CON_OUTPUT_CLAMP);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_disp_outproc_start(struct&#32;device&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_outproc&#32;*priv&#32;=&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_ddp_write_mask(NULL,&#32;OVL_OUTPROC_RST,&#32;&amp;priv-&gt;cmdq_reg,\r\n"
+ "&gt;&#32;&gt;&#32;priv-&gt;regs,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#32;DISP_REG_OVL_OUTPROC_RST,\r\n"
+ "&gt;&#32;&gt;&#32;OVL_OUTPROC_RST);\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;writel();\r\n"
+ "&gt;&#32;\r\n"
+ "\r\n"
+ "Sure,&#32;I&#32;will&#32;use&#32;the&#32;writel()&#32;to&#32;replace&#32;the&#32;mtk_ddp_write_mask().\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_ddp_write_mask(NULL,&#32;0,&#32;&amp;priv-&gt;cmdq_reg,&#32;priv-&gt;regs,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#32;DISP_REG_OVL_OUTPROC_RST,\r\n"
+ "&gt;&#32;&gt;&#32;OVL_OUTPROC_RST);\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Some&#32;hardware&#32;reset&#32;before&#32;start.\r\n"
+ "&gt;&#32;Some&#32;hardware&#32;reset&#32;after&#32;stop.\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Could&#32;align&#32;this&#63;\r\n"
+ "&gt;&#32;\r\n"
+ "Sure,&#32;we&#32;will&#32;align&#32;this&#32;part.\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_ddp_write(NULL,&#32;0,&#32;&amp;priv-&gt;cmdq_reg,&#32;priv-&gt;regs,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#32;DISP_REG_OVL_OUTPROC_INTSTA);\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_ddp_write_mask(NULL,&#32;OVL_OUTPROC_OVL_EN,&#32;&amp;priv-\r\n"
+ "&gt;&#32;&gt;&#32;&gt;cmdq_reg,&#32;priv-&gt;regs,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#32;DISP_REG_OVL_OUTPROC_EN,\r\n"
+ "&gt;&#32;&gt;&#32;OVL_OUTPROC_OVL_EN);\r\n"
+ "&gt;&#32;&gt;&#32;+}\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+void&#32;mtk_disp_outproc_stop(struct&#32;device&#32;*dev)\r\n"
+ "&gt;&#32;&gt;&#32;+{\r\n"
+ "&gt;&#32;&gt;&#32;+struct&#32;mtk_disp_outproc&#32;*priv&#32;=&#32;dev_get_drvdata(dev);\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+mtk_ddp_write(NULL,&#32;0,&#32;&amp;priv-&gt;cmdq_reg,&#32;priv-&gt;regs,\r\n"
+ "&gt;&#32;&gt;&#32;+&#160;&#160;&#160;&#160;&#160;&#32;DISP_REG_OVL_OUTPROC_INTEN);\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;OVL&#32;driver&#32;does&#32;not&#32;disable&#32;interrupt&#32;when&#32;stop.\r\n"
+ "&gt;&#32;Align&#32;this&#32;with&#32;OVL&#32;driver.\r\n"
+ "&gt;&#32;\r\n"
+ "Sure&#32;I&#32;will&#32;check&#32;the&#32;driver&#32;and&#32;align&#32;this&#32;part.\r\n"
+ "\r\n"
+ "&gt;&#32;\r\n"
+ "//snip\r\n"
+ "&gt;&#32;&gt;&#32;+#if&#32;IS_REACHABLE(CONFIG_MTK_CMDQ)\r\n"
+ "&gt;&#32;&gt;&#32;+ret&#32;=&#32;cmdq_dev_get_client_reg(dev,&#32;&amp;priv-&gt;cmdq_reg,&#32;0);\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(ret)\r\n"
+ "&gt;&#32;&gt;&#32;+dev_dbg(dev,&#32;&quot;No&#32;mediatek,gce-client-reg&#92;n&quot;);\r\n"
+ "&gt;&#32;&gt;&#32;+#endif\r\n"
+ "&gt;&#32;&gt;&#32;+\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(of_property_read_u32_index(dev-&gt;of_node,&#32;&quot;interrupts&quot;,\r\n"
+ "&gt;&#32;&gt;&#32;0,&#32;&amp;ret))&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+dev_dbg(dev,&#32;&quot;interrupts&#32;not&#32;defined&#92;n&quot;);\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;In&#32;binding&#32;document,&#32;interrupt&#32;is&#32;required.\r\n"
+ "&gt;&#32;So&#32;return&#32;with&#32;error&#32;code.\r\n"
+ "&gt;&#32;\r\n"
+ "The&#32;interrupt&#32;is&#32;not&#32;required,&#32;I&#32;have&#32;rewrite&#32;the&#32;binding&#32;document.&#32;\r\n"
+ "&gt;&#32;&gt;&#32;+}&#32;else&#32;{\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;irq&#32;=&#32;platform_get_irq(pdev,&#32;0);\r\n"
+ "&gt;&#32;&gt;&#32;+if&#32;(priv-&gt;irq&#32;&lt;&#32;0)\r\n"
+ "&gt;&#32;&gt;&#32;+priv-&gt;irq&#32;=&#32;0;\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;In&#32;binding&#32;document,&#32;interrupt&#32;is&#32;required.\r\n"
+ "&gt;&#32;So&#32;return&#32;with&#32;error&#32;code.\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Regards,\r\n"
+ "&gt;&#32;CK\r\n"
+ "&gt;&#32;\r\n"
+ "The&#32;interrupt&#32;is&#32;not&#32;required,&#32;I&#32;have&#32;rewrite&#32;the&#32;binding&#32;document.&#32;\r\n"
+ "The&#32;next&#32;upstream&#32;version&#32;of&#32;patch&#32;would&#32;fix&#32;this&#32;problem\r\n"
+ "\r\n"
+ "\r\n"
+ "Best,&#32;\r\n"
+ "\r\n"
+ "Paul\r\n"
+ "&gt;&#32;\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><!--}-->
 
-ce7edc7953b7b604556fc2a6430e82cf3858f77a30f3e1b48193ccf478d1c115
+3c9594f4a467451c47307e20aa1aa61d6ec78dc935105a58343d5c5f474d0544

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.