drm/msm: update the high bitfield of certain DSI registers
authorAyushi Makhija <quic_amakhija@quicinc.com>
Wed, 30 Jul 2025 12:39:38 +0000 (18:09 +0530)
committerDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Wed, 13 Aug 2025 17:25:05 +0000 (20:25 +0300)
Currently, the high bitfield of certain DSI registers
do not align with the configuration of the SWI registers
description. This can lead to wrong programming these DSI
registers, for example for 4k resloution where H_TOTAL is
taking 13 bits but software is programming only 12 bits
because of the incorrect bitmask for H_TOTAL bitfeild,
this is causing DSI FIFO errors. To resolve this issue,
increase the high bitfield of the DSI registers from 12 bits
to 16 bits in dsi.xml to match the SWI register configuration.

Signed-off-by: Ayushi Makhija <quic_amakhija@quicinc.com>
Fixes: 4f52f5e63b62 ("drm/msm: import XML display registers database")
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Patchwork: https://patchwork.freedesktop.org/patch/666229/
Link: https://lore.kernel.org/r/20250730123938.1038640-1-quic_amakhija@quicinc.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
drivers/gpu/drm/msm/registers/display/dsi.xml

index 501ffc585a9f69963b362f1a44f14a609b67d54a..c7a7b633d747bc281bc27845c9df858f33c8bd2a 100644 (file)
@@ -159,28 +159,28 @@ xsi:schemaLocation="https://gitlab.freedesktop.org/freedreno/ rules-fd.xsd">
                <bitfield name="RGB_SWAP" low="12" high="14" type="dsi_rgb_swap"/>
        </reg32>
        <reg32 offset="0x00020" name="ACTIVE_H">
-               <bitfield name="START" low="0" high="11" type="uint"/>
-               <bitfield name="END" low="16" high="27" type="uint"/>
+               <bitfield name="START" low="0" high="15" type="uint"/>
+               <bitfield name="END" low="16" high="31" type="uint"/>
        </reg32>
        <reg32 offset="0x00024" name="ACTIVE_V">
-               <bitfield name="START" low="0" high="11" type="uint"/>
-               <bitfield name="END" low="16" high="27" type="uint"/>
+               <bitfield name="START" low="0" high="15" type="uint"/>
+               <bitfield name="END" low="16" high="31" type="uint"/>
        </reg32>
        <reg32 offset="0x00028" name="TOTAL">
-               <bitfield name="H_TOTAL" low="0" high="11" type="uint"/>
-               <bitfield name="V_TOTAL" low="16" high="27" type="uint"/>
+               <bitfield name="H_TOTAL" low="0" high="15" type="uint"/>
+               <bitfield name="V_TOTAL" low="16" high="31" type="uint"/>
        </reg32>
        <reg32 offset="0x0002c" name="ACTIVE_HSYNC">
-               <bitfield name="START" low="0" high="11" type="uint"/>
-               <bitfield name="END" low="16" high="27" type="uint"/>
+               <bitfield name="START" low="0" high="15" type="uint"/>
+               <bitfield name="END" low="16" high="31" type="uint"/>
        </reg32>
        <reg32 offset="0x00030" name="ACTIVE_VSYNC_HPOS">
-               <bitfield name="START" low="0" high="11" type="uint"/>
-               <bitfield name="END" low="16" high="27" type="uint"/>
+               <bitfield name="START" low="0" high="15" type="uint"/>
+               <bitfield name="END" low="16" high="31" type="uint"/>
        </reg32>
        <reg32 offset="0x00034" name="ACTIVE_VSYNC_VPOS">
-               <bitfield name="START" low="0" high="11" type="uint"/>
-               <bitfield name="END" low="16" high="27" type="uint"/>
+               <bitfield name="START" low="0" high="15" type="uint"/>
+               <bitfield name="END" low="16" high="31" type="uint"/>
        </reg32>
 
        <reg32 offset="0x00038" name="CMD_DMA_CTRL">
@@ -209,8 +209,8 @@ xsi:schemaLocation="https://gitlab.freedesktop.org/freedreno/ rules-fd.xsd">
                <bitfield name="WORD_COUNT" low="16" high="31" type="uint"/>
        </reg32>
        <reg32 offset="0x00058" name="CMD_MDP_STREAM0_TOTAL">
-               <bitfield name="H_TOTAL" low="0" high="11" type="uint"/>
-               <bitfield name="V_TOTAL" low="16" high="27" type="uint"/>
+               <bitfield name="H_TOTAL" low="0" high="15" type="uint"/>
+               <bitfield name="V_TOTAL" low="16" high="31" type="uint"/>
        </reg32>
        <reg32 offset="0x0005c" name="CMD_MDP_STREAM1_CTRL">
                <bitfield name="DATA_TYPE" low="0" high="5" type="uint"/>