Skip to content

Commit d742f7e

Browse files
committed
drm/msm/mdss: use register definitions instead of hand-coding them
Move existing register definitions to mdss.xml and use generated defines for registers access instead of hand-coding everything in the source file. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com> Patchwork: https://patchwork.freedesktop.org/patch/615312/ Link: https://lore.kernel.org/r/20240921-msm-mdss-ubwc-v1-2-411dcf309d05@linaro.org
1 parent 92de813 commit d742f7e

File tree

2 files changed

+21
-20
lines changed

2 files changed

+21
-20
lines changed

drivers/gpu/drm/msm/msm_mdss.c

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,7 @@
1919
#include "msm_mdss.h"
2020
#include "msm_kms.h"
2121

22-
#define HW_REV 0x0
23-
#define HW_INTR_STATUS 0x0010
24-
25-
#define UBWC_DEC_HW_VERSION 0x58
26-
#define UBWC_STATIC 0x144
27-
#define UBWC_CTRL_2 0x150
28-
#define UBWC_PREDICTION_MODE 0x154
22+
#include <generated/mdss.xml.h>
2923

3024
#define MIN_IB_BW 400000000UL /* Min ib vote 400MB */
3125

@@ -83,7 +77,7 @@ static void msm_mdss_irq(struct irq_desc *desc)
8377

8478
chained_irq_enter(chip, desc);
8579

86-
interrupts = readl_relaxed(msm_mdss->mmio + HW_INTR_STATUS);
80+
interrupts = readl_relaxed(msm_mdss->mmio + REG_MDSS_HW_INTR_STATUS);
8781

8882
while (interrupts) {
8983
irq_hw_number_t hwirq = fls(interrupts) - 1;
@@ -173,7 +167,7 @@ static void msm_mdss_setup_ubwc_dec_20(struct msm_mdss *msm_mdss)
173167
{
174168
const struct msm_mdss_data *data = msm_mdss->mdss_data;
175169

176-
writel_relaxed(data->ubwc_static, msm_mdss->mmio + UBWC_STATIC);
170+
writel_relaxed(data->ubwc_static, msm_mdss->mmio + REG_MDSS_UBWC_STATIC);
177171
}
178172

179173
static void msm_mdss_setup_ubwc_dec_30(struct msm_mdss *msm_mdss)
@@ -189,7 +183,7 @@ static void msm_mdss_setup_ubwc_dec_30(struct msm_mdss *msm_mdss)
189183
if (data->ubwc_enc_version == UBWC_1_0)
190184
value |= BIT(8);
191185

192-
writel_relaxed(value, msm_mdss->mmio + UBWC_STATIC);
186+
writel_relaxed(value, msm_mdss->mmio + REG_MDSS_UBWC_STATIC);
193187
}
194188

195189
static void msm_mdss_setup_ubwc_dec_40(struct msm_mdss *msm_mdss)
@@ -200,21 +194,22 @@ static void msm_mdss_setup_ubwc_dec_40(struct msm_mdss *msm_mdss)
200194
(data->highest_bank_bit & 0x7) << 4 |
201195
(data->macrotile_mode & 0x1) << 12;
202196

203-
writel_relaxed(value, msm_mdss->mmio + UBWC_STATIC);
197+
writel_relaxed(value, msm_mdss->mmio + REG_MDSS_UBWC_STATIC);
204198

205199
if (data->ubwc_enc_version == UBWC_3_0) {
206-
writel_relaxed(1, msm_mdss->mmio + UBWC_CTRL_2);
207-
writel_relaxed(0, msm_mdss->mmio + UBWC_PREDICTION_MODE);
200+
writel_relaxed(1, msm_mdss->mmio + REG_MDSS_UBWC_CTRL_2);
201+
writel_relaxed(0, msm_mdss->mmio + REG_MDSS_UBWC_PREDICTION_MODE);
208202
} else {
209203
if (data->ubwc_dec_version == UBWC_4_3)
210-
writel_relaxed(3, msm_mdss->mmio + UBWC_CTRL_2);
204+
writel_relaxed(3, msm_mdss->mmio + REG_MDSS_UBWC_CTRL_2);
211205
else
212-
writel_relaxed(2, msm_mdss->mmio + UBWC_CTRL_2);
213-
writel_relaxed(1, msm_mdss->mmio + UBWC_PREDICTION_MODE);
206+
writel_relaxed(2, msm_mdss->mmio + REG_MDSS_UBWC_CTRL_2);
207+
writel_relaxed(1, msm_mdss->mmio + REG_MDSS_UBWC_PREDICTION_MODE);
214208
}
215209
}
216210

217-
#define MDSS_HW_MAJ_MIN GENMASK(31, 16)
211+
#define MDSS_HW_MAJ_MIN \
212+
(MDSS_HW_VERSION_MAJOR__MASK | MDSS_HW_VERSION_MINOR__MASK)
218213

219214
#define MDSS_HW_MSM8996 0x1007
220215
#define MDSS_HW_MSM8937 0x100e
@@ -235,7 +230,7 @@ static const struct msm_mdss_data *msm_mdss_generate_mdp5_mdss_data(struct msm_m
235230
if (!data)
236231
return NULL;
237232

238-
hw_rev = readl_relaxed(mdss->mmio + HW_REV);
233+
hw_rev = readl_relaxed(mdss->mmio + REG_MDSS_HW_VERSION);
239234
hw_rev = FIELD_GET(MDSS_HW_MAJ_MIN, hw_rev);
240235

241236
if (hw_rev == MDSS_HW_MSM8996 ||
@@ -334,9 +329,9 @@ static int msm_mdss_enable(struct msm_mdss *msm_mdss)
334329
dev_err(msm_mdss->dev, "Unsupported UBWC decoder version %x\n",
335330
msm_mdss->mdss_data->ubwc_dec_version);
336331
dev_err(msm_mdss->dev, "HW_REV: 0x%x\n",
337-
readl_relaxed(msm_mdss->mmio + HW_REV));
332+
readl_relaxed(msm_mdss->mmio + REG_MDSS_HW_VERSION));
338333
dev_err(msm_mdss->dev, "UBWC_DEC_HW_VERSION: 0x%x\n",
339-
readl_relaxed(msm_mdss->mmio + UBWC_DEC_HW_VERSION));
334+
readl_relaxed(msm_mdss->mmio + REG_MDSS_UBWC_DEC_HW_VERSION));
340335
break;
341336
}
342337

drivers/gpu/drm/msm/registers/display/mdss.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ xsi:schemaLocation="https://gitlab.freedesktop.org/freedreno/ rules-fd.xsd">
1818
<bitfield name="INTR_HDMI" pos="8" type="boolean"/>
1919
<bitfield name="INTR_EDP" pos="12" type="boolean"/>
2020
</reg32>
21+
22+
<reg32 offset="0x00058" name="UBWC_DEC_HW_VERSION"/>
23+
24+
<reg32 offset="0x00144" name="UBWC_STATIC"/>
25+
<reg32 offset="0x00150" name="UBWC_CTRL_2"/>
26+
<reg32 offset="0x00154" name="UBWC_PREDICTION_MODE"/>
2127
</domain>
2228

2329
</database>

0 commit comments

Comments
 (0)