]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
drm: Fix DSC BPP increment decoding
authorImre Deak <imre.deak@intel.com>
Wed, 12 Feb 2025 16:18:51 +0000 (18:18 +0200)
committerImre Deak <imre.deak@intel.com>
Thu, 13 Feb 2025 08:20:30 +0000 (10:20 +0200)
Starting with DPCD version 2.0 bits 6:3 of the DP_DSC_BITS_PER_PIXEL_INC
DPCD register contains the NativeYCbCr422_MAX_bpp_DELTA field, which can
be non-zero as opposed to earlier DPCD versions, hence decoding the
bit_per_pixel increment value at bits 2:0 in the same register requires
applying a mask, do so.

Cc: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Fixes: 0c2287c96521 ("drm/display/dp: Add helper function to get DSC bpp precision")
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250212161851.4007005-1-imre.deak@intel.com
drivers/gpu/drm/display/drm_dp_helper.c
include/drm/display/drm_dp.h

index da3c8521a7fa7d3c9761377363cdd4b44ab1106e..61c7c2c588c6ea3989077c23ef8ee68d4ef59e45 100644 (file)
@@ -2544,7 +2544,7 @@ u8 drm_dp_dsc_sink_bpp_incr(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE])
 {
        u8 bpp_increment_dpcd = dsc_dpcd[DP_DSC_BITS_PER_PIXEL_INC - DP_DSC_SUPPORT];
 
-       switch (bpp_increment_dpcd) {
+       switch (bpp_increment_dpcd & DP_DSC_BITS_PER_PIXEL_MASK) {
        case DP_DSC_BITS_PER_PIXEL_1_16:
                return 16;
        case DP_DSC_BITS_PER_PIXEL_1_8:
index a6f8b098c56f1496402c77c48458998b7aec0111..3bd9f482f0c3e6db56b2b70e0cb0bec4e00ceab7 100644 (file)
 # define DP_DSC_BITS_PER_PIXEL_1_4          0x2
 # define DP_DSC_BITS_PER_PIXEL_1_2          0x3
 # define DP_DSC_BITS_PER_PIXEL_1_1          0x4
+# define DP_DSC_BITS_PER_PIXEL_MASK         0x7
 
 #define DP_PSR_SUPPORT                      0x070   /* XXX 1.2? */
 # define DP_PSR_IS_SUPPORTED                1