On Tue, 2025-05-27 at 12:25 +0300, Jani Nikula wrote: > Figure out the struct dram_info pointer in one place, and pass that > around to be filled in, instead of all places poking at i915->dram_info > directly. > > Signed-off-by: Jani Nikula <jani.nik...@intel.com> > --- > drivers/gpu/drm/i915/soc/intel_dram.c | 40 ++++++++++++--------------- > 1 file changed, 18 insertions(+), 22 deletions(-) >
Reviewed-by: Vinod Govindapillai <vinod.govindapil...@intel.com> > diff --git a/drivers/gpu/drm/i915/soc/intel_dram.c > b/drivers/gpu/drm/i915/soc/intel_dram.c > index 76c225fd6c70..f42dcdb74d40 100644 > --- a/drivers/gpu/drm/i915/soc/intel_dram.c > +++ b/drivers/gpu/drm/i915/soc/intel_dram.c > @@ -383,9 +383,8 @@ intel_is_dram_symmetric(const struct dram_channel_info > *ch0, > } > > static int > -skl_dram_get_channels_info(struct drm_i915_private *i915) > +skl_dram_get_channels_info(struct drm_i915_private *i915, struct dram_info > *dram_info) > { > - struct dram_info *dram_info = &i915->dram_info; > struct dram_channel_info ch0 = {}, ch1 = {}; > u32 val; > int ret; > @@ -446,14 +445,13 @@ skl_get_dram_type(struct drm_i915_private *i915) > } > > static int > -skl_get_dram_info(struct drm_i915_private *i915) > +skl_get_dram_info(struct drm_i915_private *i915, struct dram_info *dram_info) > { > - struct dram_info *dram_info = &i915->dram_info; > int ret; > > dram_info->type = skl_get_dram_type(i915); > > - ret = skl_dram_get_channels_info(i915); > + ret = skl_dram_get_channels_info(i915, dram_info); > if (ret) > return ret; > > @@ -538,9 +536,8 @@ static void bxt_get_dimm_info(struct dram_dimm_info > *dimm, u32 val) > dimm->size = bxt_get_dimm_size(val) * intel_dimm_num_devices(dimm); > } > > -static int bxt_get_dram_info(struct drm_i915_private *i915) > +static int bxt_get_dram_info(struct drm_i915_private *i915, struct dram_info > *dram_info) > { > - struct dram_info *dram_info = &i915->dram_info; > u32 val; > u8 valid_ranks = 0; > int i; > @@ -585,9 +582,9 @@ static int bxt_get_dram_info(struct drm_i915_private > *i915) > return 0; > } > > -static int icl_pcode_read_mem_global_info(struct drm_i915_private *dev_priv) > +static int icl_pcode_read_mem_global_info(struct drm_i915_private *dev_priv, > + struct dram_info *dram_info) > { > - struct dram_info *dram_info = &dev_priv->dram_info; > u32 val = 0; > int ret; > > @@ -647,27 +644,26 @@ static int icl_pcode_read_mem_global_info(struct > drm_i915_private *dev_priv) > return 0; > } > > -static int gen11_get_dram_info(struct drm_i915_private *i915) > +static int gen11_get_dram_info(struct drm_i915_private *i915, struct > dram_info *dram_info) > { > - int ret = skl_get_dram_info(i915); > + int ret = skl_get_dram_info(i915, dram_info); > > if (ret) > return ret; > > - return icl_pcode_read_mem_global_info(i915); > + return icl_pcode_read_mem_global_info(i915, dram_info); > } > > -static int gen12_get_dram_info(struct drm_i915_private *i915) > +static int gen12_get_dram_info(struct drm_i915_private *i915, struct > dram_info *dram_info) > { > - i915->dram_info.wm_lv_0_adjust_needed = false; > + dram_info->wm_lv_0_adjust_needed = false; > > - return icl_pcode_read_mem_global_info(i915); > + return icl_pcode_read_mem_global_info(i915, dram_info); > } > > -static int xelpdp_get_dram_info(struct drm_i915_private *i915) > +static int xelpdp_get_dram_info(struct drm_i915_private *i915, struct > dram_info *dram_info) > { > u32 val = intel_uncore_read(&i915->uncore, MTL_MEM_SS_INFO_GLOBAL); > - struct dram_info *dram_info = &i915->dram_info; > > switch (REG_FIELD_GET(MTL_DDR_TYPE_MASK, val)) { > case 0: > @@ -726,15 +722,15 @@ void intel_dram_detect(struct drm_i915_private *i915) > dram_info->wm_lv_0_adjust_needed = !IS_BROXTON(i915) && > !IS_GEMINILAKE(i915); > > if (DISPLAY_VER(i915) >= 14) > - ret = xelpdp_get_dram_info(i915); > + ret = xelpdp_get_dram_info(i915, dram_info); > else if (GRAPHICS_VER(i915) >= 12) > - ret = gen12_get_dram_info(i915); > + ret = gen12_get_dram_info(i915, dram_info); > else if (GRAPHICS_VER(i915) >= 11) > - ret = gen11_get_dram_info(i915); > + ret = gen11_get_dram_info(i915, dram_info); > else if (IS_BROXTON(i915) || IS_GEMINILAKE(i915)) > - ret = bxt_get_dram_info(i915); > + ret = bxt_get_dram_info(i915, dram_info); > else > - ret = skl_get_dram_info(i915); > + ret = skl_get_dram_info(i915, dram_info); > > drm_dbg_kms(&i915->drm, "DRAM type: %s\n", > intel_dram_type_str(dram_info->type));