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/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

+21 -20
+15 -20
drivers/gpu/drm/msm/msm_mdss.c
··· 19 19 #include "msm_mdss.h" 20 20 #include "msm_kms.h" 21 21 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> 29 23 30 24 #define MIN_IB_BW 400000000UL /* Min ib vote 400MB */ 31 25 ··· 77 83 78 84 chained_irq_enter(chip, desc); 79 85 80 - interrupts = readl_relaxed(msm_mdss->mmio + HW_INTR_STATUS); 86 + interrupts = readl_relaxed(msm_mdss->mmio + REG_MDSS_HW_INTR_STATUS); 81 87 82 88 while (interrupts) { 83 89 irq_hw_number_t hwirq = fls(interrupts) - 1; ··· 167 173 { 168 174 const struct msm_mdss_data *data = msm_mdss->mdss_data; 169 175 170 - writel_relaxed(data->ubwc_static, msm_mdss->mmio + UBWC_STATIC); 176 + writel_relaxed(data->ubwc_static, msm_mdss->mmio + REG_MDSS_UBWC_STATIC); 171 177 } 172 178 173 179 static void msm_mdss_setup_ubwc_dec_30(struct msm_mdss *msm_mdss) ··· 183 189 if (data->ubwc_enc_version == UBWC_1_0) 184 190 value |= BIT(8); 185 191 186 - writel_relaxed(value, msm_mdss->mmio + UBWC_STATIC); 192 + writel_relaxed(value, msm_mdss->mmio + REG_MDSS_UBWC_STATIC); 187 193 } 188 194 189 195 static void msm_mdss_setup_ubwc_dec_40(struct msm_mdss *msm_mdss) ··· 194 200 (data->highest_bank_bit & 0x7) << 4 | 195 201 (data->macrotile_mode & 0x1) << 12; 196 202 197 - writel_relaxed(value, msm_mdss->mmio + UBWC_STATIC); 203 + writel_relaxed(value, msm_mdss->mmio + REG_MDSS_UBWC_STATIC); 198 204 199 205 if (data->ubwc_enc_version == UBWC_3_0) { 200 - writel_relaxed(1, msm_mdss->mmio + UBWC_CTRL_2); 201 - writel_relaxed(0, msm_mdss->mmio + UBWC_PREDICTION_MODE); 206 + writel_relaxed(1, msm_mdss->mmio + REG_MDSS_UBWC_CTRL_2); 207 + writel_relaxed(0, msm_mdss->mmio + REG_MDSS_UBWC_PREDICTION_MODE); 202 208 } else { 203 209 if (data->ubwc_dec_version == UBWC_4_3) 204 - writel_relaxed(3, msm_mdss->mmio + UBWC_CTRL_2); 210 + writel_relaxed(3, msm_mdss->mmio + REG_MDSS_UBWC_CTRL_2); 205 211 else 206 - writel_relaxed(2, msm_mdss->mmio + UBWC_CTRL_2); 207 - writel_relaxed(1, msm_mdss->mmio + UBWC_PREDICTION_MODE); 212 + writel_relaxed(2, msm_mdss->mmio + REG_MDSS_UBWC_CTRL_2); 213 + writel_relaxed(1, msm_mdss->mmio + REG_MDSS_UBWC_PREDICTION_MODE); 208 214 } 209 215 } 210 216 211 - #define MDSS_HW_MAJ_MIN GENMASK(31, 16) 217 + #define MDSS_HW_MAJ_MIN \ 218 + (MDSS_HW_VERSION_MAJOR__MASK | MDSS_HW_VERSION_MINOR__MASK) 212 219 213 220 #define MDSS_HW_MSM8996 0x1007 214 221 #define MDSS_HW_MSM8937 0x100e ··· 230 235 if (!data) 231 236 return NULL; 232 237 233 - hw_rev = readl_relaxed(mdss->mmio + HW_REV); 238 + hw_rev = readl_relaxed(mdss->mmio + REG_MDSS_HW_VERSION); 234 239 hw_rev = FIELD_GET(MDSS_HW_MAJ_MIN, hw_rev); 235 240 236 241 if (hw_rev == MDSS_HW_MSM8996 || ··· 329 334 dev_err(msm_mdss->dev, "Unsupported UBWC decoder version %x\n", 330 335 msm_mdss->mdss_data->ubwc_dec_version); 331 336 dev_err(msm_mdss->dev, "HW_REV: 0x%x\n", 332 - readl_relaxed(msm_mdss->mmio + HW_REV)); 337 + readl_relaxed(msm_mdss->mmio + REG_MDSS_HW_VERSION)); 333 338 dev_err(msm_mdss->dev, "UBWC_DEC_HW_VERSION: 0x%x\n", 334 - readl_relaxed(msm_mdss->mmio + UBWC_DEC_HW_VERSION)); 339 + readl_relaxed(msm_mdss->mmio + REG_MDSS_UBWC_DEC_HW_VERSION)); 335 340 break; 336 341 } 337 342
+6
drivers/gpu/drm/msm/registers/display/mdss.xml
··· 18 18 <bitfield name="INTR_HDMI" pos="8" type="boolean"/> 19 19 <bitfield name="INTR_EDP" pos="12" type="boolean"/> 20 20 </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"/> 21 27 </domain> 22 28 23 29 </database>