drm/mediatek: dsi: Add dsi cmdq_ctl to send panel initial code
authorShuijing Li <shuijing.li@mediatek.com>
Mon, 11 Sep 2023 12:07:59 +0000 (20:07 +0800)
committerChun-Kuang Hu <chunkuang.hu@kernel.org>
Mon, 11 Sep 2023 14:54:11 +0000 (14:54 +0000)
For mt8188, add dsi cmdq reg control to send long packets to panel
initialization. MT8188 hardware has been changed to automatically
set the cmdq_size value by default when sending long packets.
In this patch, the cmdq_size value is set manually instead.
Remain consistent with previous IC.

Signed-off-by: Shuijing Li <shuijing.li@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://patchwork.kernel.org/project/dri-devel/patch/20230911120800.17369-3-shuijing.li@mediatek.com/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
drivers/gpu/drm/mediatek/mtk_dsi.c

index d8bfc2cce54dc634cbe1d4c8675ad629046b14c3..623aa829ef6b690cea4dbdc63751c77d27713f70 100644 (file)
@@ -86,6 +86,7 @@
 
 #define DSI_CMDQ_SIZE          0x60
 #define CMDQ_SIZE                      0x3f
+#define CMDQ_SIZE_SEL          BIT(15)
 
 #define DSI_HSTX_CKL_WC                0x64
 
@@ -178,6 +179,7 @@ struct mtk_dsi_driver_data {
        const u32 reg_cmdq_off;
        bool has_shadow_ctl;
        bool has_size_ctl;
+       bool cmdq_long_packet_ctl;
 };
 
 struct mtk_dsi {
@@ -996,6 +998,10 @@ static void mtk_dsi_cmdq(struct mtk_dsi *dsi, const struct mipi_dsi_msg *msg)
 
        mtk_dsi_mask(dsi, reg_cmdq_off, cmdq_mask, reg_val);
        mtk_dsi_mask(dsi, DSI_CMDQ_SIZE, CMDQ_SIZE, cmdq_size);
+       if (dsi->driver_data->cmdq_long_packet_ctl) {
+               /* Disable setting cmdq_size automatically for long packets */
+               mtk_dsi_mask(dsi, DSI_CMDQ_SIZE, CMDQ_SIZE_SEL, CMDQ_SIZE_SEL);
+       }
 }
 
 static ssize_t mtk_dsi_host_send_cmd(struct mtk_dsi *dsi,