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

drm/msm/mdss: Add support for SM8750

Add support for the Qualcomm SM8750 platform.

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/659625/
Link: https://lore.kernel.org/r/20250618-b4-sm8750-display-v7-13-a591c609743d@linaro.org
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>

authored by

Krzysztof Kozlowski and committed by
Dmitry Baryshkov
e450952b 68baf833

+34
+33
drivers/gpu/drm/msm/msm_mdss.c
··· 222 222 } 223 223 } 224 224 225 + static void msm_mdss_setup_ubwc_dec_50(struct msm_mdss *msm_mdss) 226 + { 227 + const struct msm_mdss_data *data = msm_mdss->mdss_data; 228 + u32 value = MDSS_UBWC_STATIC_UBWC_SWIZZLE(data->ubwc_swizzle) | 229 + MDSS_UBWC_STATIC_HIGHEST_BANK_BIT(data->highest_bank_bit); 230 + 231 + if (data->ubwc_bank_spread) 232 + value |= MDSS_UBWC_STATIC_UBWC_BANK_SPREAD; 233 + 234 + if (data->macrotile_mode) 235 + value |= MDSS_UBWC_STATIC_MACROTILE_MODE; 236 + 237 + writel_relaxed(value, msm_mdss->mmio + REG_MDSS_UBWC_STATIC); 238 + 239 + writel_relaxed(4, msm_mdss->mmio + REG_MDSS_UBWC_CTRL_2); 240 + writel_relaxed(1, msm_mdss->mmio + REG_MDSS_UBWC_PREDICTION_MODE); 241 + } 242 + 225 243 #define MDSS_HW_MAJ_MIN \ 226 244 (MDSS_HW_VERSION_MAJOR__MASK | MDSS_HW_VERSION_MINOR__MASK) 227 245 ··· 356 338 case UBWC_4_0: 357 339 case UBWC_4_3: 358 340 msm_mdss_setup_ubwc_dec_40(msm_mdss); 341 + break; 342 + case UBWC_5_0: 343 + msm_mdss_setup_ubwc_dec_50(msm_mdss); 359 344 break; 360 345 default: 361 346 dev_err(msm_mdss->dev, "Unsupported UBWC decoder version %x\n", ··· 753 732 .reg_bus_bw = 57000, 754 733 }; 755 734 735 + static const struct msm_mdss_data sm8750_data = { 736 + .ubwc_enc_version = UBWC_5_0, 737 + .ubwc_dec_version = UBWC_5_0, 738 + .ubwc_swizzle = 6, 739 + .ubwc_bank_spread = true, 740 + /* TODO: highest_bank_bit = 2 for LP_DDR4 */ 741 + .highest_bank_bit = 3, 742 + .macrotile_mode = true, 743 + .reg_bus_bw = 57000, 744 + }; 745 + 756 746 static const struct msm_mdss_data x1e80100_data = { 757 747 .ubwc_enc_version = UBWC_4_0, 758 748 .ubwc_dec_version = UBWC_4_3, ··· 799 767 { .compatible = "qcom,sm8450-mdss", .data = &sm8350_data }, 800 768 { .compatible = "qcom,sm8550-mdss", .data = &sm8550_data }, 801 769 { .compatible = "qcom,sm8650-mdss", .data = &sm8550_data}, 770 + { .compatible = "qcom,sm8750-mdss", .data = &sm8750_data}, 802 771 { .compatible = "qcom,x1e80100-mdss", .data = &x1e80100_data}, 803 772 {} 804 773 };
+1
drivers/gpu/drm/msm/msm_mdss.h
··· 22 22 #define UBWC_3_0 0x30000000 23 23 #define UBWC_4_0 0x40000000 24 24 #define UBWC_4_3 0x40030000 25 + #define UBWC_5_0 0x50000000 25 26 26 27 const struct msm_mdss_data *msm_mdss_get_mdss_data(struct device *dev); 27 28