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/i915/dram: Use REG_GENMASK() & co. for the SKL+ DIMM regs

Modernize the SKL/ICL DIMM registers with REG_GENMASK() & co.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20251029204215.12292-2-ville.syrjala@linux.intel.com
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>

+29 -34
+23 -28
drivers/gpu/drm/i915/intel_mchbar_regs.h
··· 130 130 #define DG1_DRAM_T_RAS_MASK REG_GENMASK(8, 1) 131 131 132 132 #define SKL_MAD_INTER_CHANNEL_0_0_0_MCHBAR_MCMAIN _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x5000) 133 - #define SKL_DRAM_DDR_TYPE_MASK (0x3 << 0) 134 - #define SKL_DRAM_DDR_TYPE_DDR4 (0 << 0) 135 - #define SKL_DRAM_DDR_TYPE_DDR3 (1 << 0) 136 - #define SKL_DRAM_DDR_TYPE_LPDDR3 (2 << 0) 137 - #define SKL_DRAM_DDR_TYPE_LPDDR4 (3 << 0) 133 + #define SKL_DRAM_DDR_TYPE_MASK REG_GENMASK(1, 0) 134 + #define SKL_DRAM_DDR_TYPE_DDR4 REG_FIELD_PREP(SKL_DRAM_DDR_TYPE_MASK, 0) 135 + #define SKL_DRAM_DDR_TYPE_DDR3 REG_FIELD_PREP(SKL_DRAM_DDR_TYPE_MASK, 1) 136 + #define SKL_DRAM_DDR_TYPE_LPDDR3 REG_FIELD_PREP(SKL_DRAM_DDR_TYPE_MASK, 2) 137 + #define SKL_DRAM_DDR_TYPE_LPDDR4 REG_FIELD_PREP(SKL_DRAM_DDR_TYPE_MASK, 3) 138 138 139 139 /* snb MCH registers for reading the DRAM channel configuration */ 140 140 #define MAD_DIMM_C0 _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x5004) ··· 161 161 #define SKL_MAD_DIMM_CH0_0_0_0_MCHBAR_MCMAIN _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x500C) 162 162 #define SKL_MAD_DIMM_CH1_0_0_0_MCHBAR_MCMAIN _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x5010) 163 163 #define SKL_DRAM_S_SHIFT 16 164 - #define SKL_DRAM_SIZE_MASK 0x3F 165 - #define SKL_DRAM_WIDTH_MASK (0x3 << 8) 166 - #define SKL_DRAM_WIDTH_SHIFT 8 167 - #define SKL_DRAM_WIDTH_X8 (0x0 << 8) 168 - #define SKL_DRAM_WIDTH_X16 (0x1 << 8) 169 - #define SKL_DRAM_WIDTH_X32 (0x2 << 8) 170 - #define SKL_DRAM_RANK_MASK (0x1 << 10) 171 - #define SKL_DRAM_RANK_SHIFT 10 172 - #define SKL_DRAM_RANK_1 (0x0 << 10) 173 - #define SKL_DRAM_RANK_2 (0x1 << 10) 174 - #define SKL_DRAM_RANK_MASK (0x1 << 10) 175 - #define ICL_DRAM_SIZE_MASK 0x7F 176 - #define ICL_DRAM_WIDTH_MASK (0x3 << 7) 177 - #define ICL_DRAM_WIDTH_SHIFT 7 178 - #define ICL_DRAM_WIDTH_X8 (0x0 << 7) 179 - #define ICL_DRAM_WIDTH_X16 (0x1 << 7) 180 - #define ICL_DRAM_WIDTH_X32 (0x2 << 7) 181 - #define ICL_DRAM_RANK_MASK (0x3 << 9) 182 - #define ICL_DRAM_RANK_SHIFT 9 183 - #define ICL_DRAM_RANK_1 (0x0 << 9) 184 - #define ICL_DRAM_RANK_2 (0x1 << 9) 185 - #define ICL_DRAM_RANK_3 (0x2 << 9) 186 - #define ICL_DRAM_RANK_4 (0x3 << 9) 164 + #define SKL_DRAM_SIZE_MASK REG_GENMASK(5, 0) 165 + #define SKL_DRAM_WIDTH_MASK REG_GENMASK(9, 8) 166 + #define SKL_DRAM_WIDTH_X8 REG_FIELD_PREP(SKL_DRAM_WIDTH_MASK, 0) 167 + #define SKL_DRAM_WIDTH_X16 REG_FIELD_PREP(SKL_DRAM_WIDTH_MASK, 1) 168 + #define SKL_DRAM_WIDTH_X32 REG_FIELD_PREP(SKL_DRAM_WIDTH_MASK, 2) 169 + #define SKL_DRAM_RANK_MASK REG_GENMASK(10, 10) 170 + #define SKL_DRAM_RANK_1 REG_FIELD_PREP(SKL_DRAM_RANK_MASK, 0) 171 + #define SKL_DRAM_RANK_2 REG_FIELD_PREP(SKL_DRAM_RANK_MASK, 1) 172 + #define ICL_DRAM_SIZE_MASK REG_GENMASK(6, 0) 173 + #define ICL_DRAM_WIDTH_MASK REG_GENMASK(8, 7) 174 + #define ICL_DRAM_WIDTH_X8 REG_FIELD_PREP(ICL_DRAM_WIDTH_MASK, 0) 175 + #define ICL_DRAM_WIDTH_X16 REG_FIELD_PREP(ICL_DRAM_WIDTH_MASK, 1) 176 + #define ICL_DRAM_WIDTH_X32 REG_FIELD_PREP(ICL_DRAM_WIDTH_MASK, 2) 177 + #define ICL_DRAM_RANK_MASK REG_GENMASK(10, 9) 178 + #define ICL_DRAM_RANK_1 REG_FIELD_PREP(ICL_DRAM_RANK_MASK, 0) 179 + #define ICL_DRAM_RANK_2 REG_FIELD_PREP(ICL_DRAM_RANK_MASK, 1) 180 + #define ICL_DRAM_RANK_3 REG_FIELD_PREP(ICL_DRAM_RANK_MASK, 2) 181 + #define ICL_DRAM_RANK_4 REG_FIELD_PREP(ICL_DRAM_RANK_MASK, 3) 187 182 188 183 #define SA_PERF_STATUS_0_0_0_MCHBAR_PC _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x5918) 189 184 #define DG1_QCLK_RATIO_MASK REG_GENMASK(9, 2)
+6 -6
drivers/gpu/drm/i915/soc/intel_dram.c
··· 269 269 /* Returns total Gb for the whole DIMM */ 270 270 static int skl_get_dimm_size(u16 val) 271 271 { 272 - return (val & SKL_DRAM_SIZE_MASK) * 8; 272 + return REG_FIELD_GET(SKL_DRAM_SIZE_MASK, val) * 8; 273 273 } 274 274 275 275 static int skl_get_dimm_width(u16 val) ··· 281 281 case SKL_DRAM_WIDTH_X8: 282 282 case SKL_DRAM_WIDTH_X16: 283 283 case SKL_DRAM_WIDTH_X32: 284 - val = (val & SKL_DRAM_WIDTH_MASK) >> SKL_DRAM_WIDTH_SHIFT; 284 + val = REG_FIELD_GET(SKL_DRAM_WIDTH_MASK, val); 285 285 return 8 << val; 286 286 default: 287 287 MISSING_CASE(val); ··· 294 294 if (skl_get_dimm_size(val) == 0) 295 295 return 0; 296 296 297 - val = (val & SKL_DRAM_RANK_MASK) >> SKL_DRAM_RANK_SHIFT; 297 + val = REG_FIELD_GET(SKL_DRAM_RANK_MASK, val); 298 298 299 299 return val + 1; 300 300 } ··· 302 302 /* Returns total Gb for the whole DIMM */ 303 303 static int icl_get_dimm_size(u16 val) 304 304 { 305 - return (val & ICL_DRAM_SIZE_MASK) * 8 / 2; 305 + return REG_FIELD_GET(ICL_DRAM_SIZE_MASK, val) * 8 / 2; 306 306 } 307 307 308 308 static int icl_get_dimm_width(u16 val) ··· 314 314 case ICL_DRAM_WIDTH_X8: 315 315 case ICL_DRAM_WIDTH_X16: 316 316 case ICL_DRAM_WIDTH_X32: 317 - val = (val & ICL_DRAM_WIDTH_MASK) >> ICL_DRAM_WIDTH_SHIFT; 317 + val = REG_FIELD_GET(ICL_DRAM_WIDTH_MASK, val); 318 318 return 8 << val; 319 319 default: 320 320 MISSING_CASE(val); ··· 327 327 if (icl_get_dimm_size(val) == 0) 328 328 return 0; 329 329 330 - val = (val & ICL_DRAM_RANK_MASK) >> ICL_DRAM_RANK_SHIFT; 330 + val = REG_FIELD_GET(ICL_DRAM_RANK_MASK, val); 331 331 332 332 return val + 1; 333 333 }