]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/msm/mdss: Add support for SM8750
authorKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Wed, 18 Jun 2025 14:32:42 +0000 (16:32 +0200)
committerDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Fri, 4 Jul 2025 13:35:20 +0000 (16:35 +0300)
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>
drivers/gpu/drm/msm/msm_mdss.c
drivers/gpu/drm/msm/msm_mdss.h

index 709979fcfab6062c0f316f7655823e888638bfea..422da5ebf802676afbfc5f242a5a84e6d488dda1 100644 (file)
@@ -222,6 +222,24 @@ static void msm_mdss_setup_ubwc_dec_40(struct msm_mdss *msm_mdss)
        }
 }
 
+static void msm_mdss_setup_ubwc_dec_50(struct msm_mdss *msm_mdss)
+{
+       const struct msm_mdss_data *data = msm_mdss->mdss_data;
+       u32 value = MDSS_UBWC_STATIC_UBWC_SWIZZLE(data->ubwc_swizzle) |
+                   MDSS_UBWC_STATIC_HIGHEST_BANK_BIT(data->highest_bank_bit);
+
+       if (data->ubwc_bank_spread)
+               value |= MDSS_UBWC_STATIC_UBWC_BANK_SPREAD;
+
+       if (data->macrotile_mode)
+               value |= MDSS_UBWC_STATIC_MACROTILE_MODE;
+
+       writel_relaxed(value, msm_mdss->mmio + REG_MDSS_UBWC_STATIC);
+
+       writel_relaxed(4, msm_mdss->mmio + REG_MDSS_UBWC_CTRL_2);
+       writel_relaxed(1, msm_mdss->mmio + REG_MDSS_UBWC_PREDICTION_MODE);
+}
+
 #define MDSS_HW_MAJ_MIN                \
        (MDSS_HW_VERSION_MAJOR__MASK | MDSS_HW_VERSION_MINOR__MASK)
 
@@ -339,6 +357,9 @@ static int msm_mdss_enable(struct msm_mdss *msm_mdss)
        case UBWC_4_3:
                msm_mdss_setup_ubwc_dec_40(msm_mdss);
                break;
+       case UBWC_5_0:
+               msm_mdss_setup_ubwc_dec_50(msm_mdss);
+               break;
        default:
                dev_err(msm_mdss->dev, "Unsupported UBWC decoder version %x\n",
                        msm_mdss->mdss_data->ubwc_dec_version);
@@ -732,6 +753,17 @@ static const struct msm_mdss_data sm8550_data = {
        .reg_bus_bw = 57000,
 };
 
+static const struct msm_mdss_data sm8750_data = {
+       .ubwc_enc_version = UBWC_5_0,
+       .ubwc_dec_version = UBWC_5_0,
+       .ubwc_swizzle = 6,
+       .ubwc_bank_spread = true,
+       /* TODO: highest_bank_bit = 2 for LP_DDR4 */
+       .highest_bank_bit = 3,
+       .macrotile_mode = true,
+       .reg_bus_bw = 57000,
+};
+
 static const struct msm_mdss_data x1e80100_data = {
        .ubwc_enc_version = UBWC_4_0,
        .ubwc_dec_version = UBWC_4_3,
@@ -767,6 +799,7 @@ static const struct of_device_id mdss_dt_match[] = {
        { .compatible = "qcom,sm8450-mdss", .data = &sm8350_data },
        { .compatible = "qcom,sm8550-mdss", .data = &sm8550_data },
        { .compatible = "qcom,sm8650-mdss", .data = &sm8550_data},
+       { .compatible = "qcom,sm8750-mdss", .data = &sm8750_data},
        { .compatible = "qcom,x1e80100-mdss", .data = &x1e80100_data},
        {}
 };
index 14dc53704314558841ee1fe08d93309fd2233812..dd0160c6ba1a297cea5b87cd8b03895b2aa08213 100644 (file)
@@ -22,6 +22,7 @@ struct msm_mdss_data {
 #define UBWC_3_0 0x30000000
 #define UBWC_4_0 0x40000000
 #define UBWC_4_3 0x40030000
+#define UBWC_5_0 0x50000000
 
 const struct msm_mdss_data *msm_mdss_get_mdss_data(struct device *dev);