Skip to content

Commit a85c238

Browse files
lumagAbhinav Kumar
authored andcommitted
drm/msm/mdss: correct UBWC programming for SM8550
The SM8550 platform employs newer UBWC decoder, which requires slightly different programming. Fixes: a2f3399 ("drm/msm: mdss: add support for SM8550") Signed-off-by: Dmitry Baryshkov <[email protected]> Reviewed-by: Abhinav Kumar <[email protected]> Patchwork: https://patchwork.freedesktop.org/patch/546934/ Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Abhinav Kumar <[email protected]>
1 parent cd036d5 commit a85c238

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

drivers/gpu/drm/msm/msm_mdss.c

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ static int _msm_mdss_irq_domain_add(struct msm_mdss *msm_mdss)
189189
#define UBWC_2_0 0x20000000
190190
#define UBWC_3_0 0x30000000
191191
#define UBWC_4_0 0x40000000
192+
#define UBWC_4_3 0x40030000
192193

193194
static void msm_mdss_setup_ubwc_dec_20(struct msm_mdss *msm_mdss)
194195
{
@@ -227,7 +228,10 @@ static void msm_mdss_setup_ubwc_dec_40(struct msm_mdss *msm_mdss)
227228
writel_relaxed(1, msm_mdss->mmio + UBWC_CTRL_2);
228229
writel_relaxed(0, msm_mdss->mmio + UBWC_PREDICTION_MODE);
229230
} else {
230-
writel_relaxed(2, msm_mdss->mmio + UBWC_CTRL_2);
231+
if (data->ubwc_dec_version == UBWC_4_3)
232+
writel_relaxed(3, msm_mdss->mmio + UBWC_CTRL_2);
233+
else
234+
writel_relaxed(2, msm_mdss->mmio + UBWC_CTRL_2);
231235
writel_relaxed(1, msm_mdss->mmio + UBWC_PREDICTION_MODE);
232236
}
233237
}
@@ -271,6 +275,7 @@ static int msm_mdss_enable(struct msm_mdss *msm_mdss)
271275
msm_mdss_setup_ubwc_dec_30(msm_mdss);
272276
break;
273277
case UBWC_4_0:
278+
case UBWC_4_3:
274279
msm_mdss_setup_ubwc_dec_40(msm_mdss);
275280
break;
276281
default:
@@ -569,6 +574,16 @@ static const struct msm_mdss_data sm8250_data = {
569574
.macrotile_mode = 1,
570575
};
571576

577+
static const struct msm_mdss_data sm8550_data = {
578+
.ubwc_version = UBWC_4_0,
579+
.ubwc_dec_version = UBWC_4_3,
580+
.ubwc_swizzle = 6,
581+
.ubwc_static = 1,
582+
/* TODO: highest_bank_bit = 2 for LP_DDR4 */
583+
.highest_bank_bit = 3,
584+
.macrotile_mode = 1,
585+
};
586+
572587
static const struct of_device_id mdss_dt_match[] = {
573588
{ .compatible = "qcom,mdss" },
574589
{ .compatible = "qcom,msm8998-mdss" },
@@ -585,7 +600,7 @@ static const struct of_device_id mdss_dt_match[] = {
585600
{ .compatible = "qcom,sm8250-mdss", .data = &sm8250_data },
586601
{ .compatible = "qcom,sm8350-mdss", .data = &sm8250_data },
587602
{ .compatible = "qcom,sm8450-mdss", .data = &sm8250_data },
588-
{ .compatible = "qcom,sm8550-mdss", .data = &sm8250_data },
603+
{ .compatible = "qcom,sm8550-mdss", .data = &sm8550_data },
589604
{}
590605
};
591606
MODULE_DEVICE_TABLE(of, mdss_dt_match);

0 commit comments

Comments
 (0)