OSDN Git Service

drm/bridge/synopsys: dsi: allow sending longer LP commands
authorAntonio Borneo <antonio.borneo@st.com>
Wed, 1 Jul 2020 14:31:31 +0000 (16:31 +0200)
committerNeil Armstrong <narmstrong@baylibre.com>
Mon, 7 Sep 2020 08:04:02 +0000 (10:04 +0200)
Current code does not properly computes the max length of LP
commands that can be send during H or V sync, and rely on static
values.
Limiting the max LP length to 4 byte during the V-sync is overly
conservative.

Relax the limit and allows longer LP commands (16 bytes) to be
sent during V-sync.

Signed-off-by: Antonio Borneo <antonio.borneo@st.com>
Tested-by: Philippe Cornu <philippe.cornu@st.com>
Reviewed-by: Philippe Cornu <philippe.cornu@st.com>
Acked-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200701143131.841-1-yannick.fertre@st.com
drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c

index d41ce1d..e9a0f42 100644 (file)
@@ -361,6 +361,15 @@ static void dw_mipi_message_config(struct dw_mipi_dsi *dsi,
        bool lpm = msg->flags & MIPI_DSI_MSG_USE_LPM;
        u32 val = 0;
 
+       /*
+        * TODO dw drv improvements
+        * largest packet sizes during hfp or during vsa/vpb/vfp
+        * should be computed according to byte lane, lane number and only
+        * if sending lp cmds in high speed is enable (PHY_TXREQUESTCLKHS)
+        */
+       dsi_write(dsi, DSI_DPI_LP_CMD_TIM, OUTVACT_LPCMD_TIME(16)
+                 | INVACT_LPCMD_TIME(4));
+
        if (msg->flags & MIPI_DSI_MSG_REQ_ACK)
                val |= ACK_RQST_EN;
        if (lpm)
@@ -619,14 +628,6 @@ static void dw_mipi_dsi_dpi_config(struct dw_mipi_dsi *dsi,
        dsi_write(dsi, DSI_DPI_VCID, DPI_VCID(dsi->channel));
        dsi_write(dsi, DSI_DPI_COLOR_CODING, color);
        dsi_write(dsi, DSI_DPI_CFG_POL, val);
-       /*
-        * TODO dw drv improvements
-        * largest packet sizes during hfp or during vsa/vpb/vfp
-        * should be computed according to byte lane, lane number and only
-        * if sending lp cmds in high speed is enable (PHY_TXREQUESTCLKHS)
-        */
-       dsi_write(dsi, DSI_DPI_LP_CMD_TIM, OUTVACT_LPCMD_TIME(4)
-                 | INVACT_LPCMD_TIME(4));
 }
 
 static void dw_mipi_dsi_packet_handler_config(struct dw_mipi_dsi *dsi)