Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/dp: Parse all DSC slice count caps for eDP 1.5

eDP 1.5 supports all the slice counts reported via DP_DSC_SLICE_CAP_1,
so adjust drm_dp_dsc_sink_max_slice_count() accordingly.

Cc: dri-devel@lists.freedesktop.org
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Acked-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://patch.msgid.link/20251215192357.172201-2-imre.deak@intel.com

Imre Deak cc1b7534 6a359152

+18 -23
+18 -23
drivers/gpu/drm/display/drm_dp_helper.c
··· 2725 2725 { 2726 2726 u8 slice_cap1 = dsc_dpcd[DP_DSC_SLICE_CAP_1 - DP_DSC_SUPPORT]; 2727 2727 2728 - if (is_edp) { 2729 - /* For eDP, register DSC_SLICE_CAPABILITIES_1 gives slice count */ 2730 - if (slice_cap1 & DP_DSC_4_PER_DP_DSC_SINK) 2731 - return 4; 2732 - if (slice_cap1 & DP_DSC_2_PER_DP_DSC_SINK) 2733 - return 2; 2734 - if (slice_cap1 & DP_DSC_1_PER_DP_DSC_SINK) 2735 - return 1; 2736 - } else { 2728 + if (!is_edp) { 2737 2729 /* For DP, use values from DSC_SLICE_CAP_1 and DSC_SLICE_CAP2 */ 2738 2730 u8 slice_cap2 = dsc_dpcd[DP_DSC_SLICE_CAP_2 - DP_DSC_SUPPORT]; 2739 2731 ··· 2735 2743 return 20; 2736 2744 if (slice_cap2 & DP_DSC_16_PER_DP_DSC_SINK) 2737 2745 return 16; 2738 - if (slice_cap1 & DP_DSC_12_PER_DP_DSC_SINK) 2739 - return 12; 2740 - if (slice_cap1 & DP_DSC_10_PER_DP_DSC_SINK) 2741 - return 10; 2742 - if (slice_cap1 & DP_DSC_8_PER_DP_DSC_SINK) 2743 - return 8; 2744 - if (slice_cap1 & DP_DSC_6_PER_DP_DSC_SINK) 2745 - return 6; 2746 - if (slice_cap1 & DP_DSC_4_PER_DP_DSC_SINK) 2747 - return 4; 2748 - if (slice_cap1 & DP_DSC_2_PER_DP_DSC_SINK) 2749 - return 2; 2750 - if (slice_cap1 & DP_DSC_1_PER_DP_DSC_SINK) 2751 - return 1; 2752 2746 } 2747 + 2748 + /* DP, eDP v1.5+ */ 2749 + if (slice_cap1 & DP_DSC_12_PER_DP_DSC_SINK) 2750 + return 12; 2751 + if (slice_cap1 & DP_DSC_10_PER_DP_DSC_SINK) 2752 + return 10; 2753 + if (slice_cap1 & DP_DSC_8_PER_DP_DSC_SINK) 2754 + return 8; 2755 + if (slice_cap1 & DP_DSC_6_PER_DP_DSC_SINK) 2756 + return 6; 2757 + /* DP, eDP v1.4+ */ 2758 + if (slice_cap1 & DP_DSC_4_PER_DP_DSC_SINK) 2759 + return 4; 2760 + if (slice_cap1 & DP_DSC_2_PER_DP_DSC_SINK) 2761 + return 2; 2762 + if (slice_cap1 & DP_DSC_1_PER_DP_DSC_SINK) 2763 + return 1; 2753 2764 2754 2765 return 0; 2755 2766 }