dram_info
DIV_ROUND_CLOSEST(dram_info->fsb_freq, 1000) == latency->fsb_freq &&
DIV_ROUND_CLOSEST(dram_info->mem_freq, 1000) == latency->mem_freq)
intel_dram_type_str(dram_info->type),
dram_info->fsb_freq, dram_info->mem_freq);
const struct dram_info *dram_info = intel_dram_info(display);
bool is_ddr3 = dram_info->type == INTEL_DRAM_DDR3;
const struct dram_info *dram_info,
qi->num_points = dram_info->num_qgv_points;
qi->num_psf_points = dram_info->num_psf_gv_points;
switch (dram_info->type) {
MISSING_CASE(dram_info->type);
switch (dram_info->type) {
qi->t_bl = dram_info->type == INTEL_DRAM_DDR4 ? 4 : 8;
const struct dram_info *dram_info,
int num_channels = max_t(u8, 1, dram_info->num_channels);
ret = icl_get_qgv_points(display, dram_info, &qi, is_y_tile);
const struct dram_info *dram_info,
int num_channels = max_t(u8, 1, dram_info->num_channels);
ret = icl_get_qgv_points(display, dram_info, &qi, is_y_tile);
(dram_info->type == INTEL_DRAM_LPDDR4 || dram_info->type == INTEL_DRAM_LPDDR5))
const struct dram_info *dram_info,
int num_channels = dram_info->num_channels;
ret = icl_get_qgv_points(display, dram_info, &qi, true);
const struct dram_info *dram_info = intel_dram_info(display);
drm_WARN_ON(display->drm, dram_info->ecc_impacting_de_bw);
tgl_get_bw_info(display, dram_info, &xe3lpd_3002_sa_info);
tgl_get_bw_info(display, dram_info, &xe3lpd_sa_info);
if (dram_info->type == INTEL_DRAM_GDDR_ECC)
xe2_hpd_get_bw_info(display, dram_info, &xe2_hpd_ecc_sa_info);
xe2_hpd_get_bw_info(display, dram_info, &xe2_hpd_sa_info);
tgl_get_bw_info(display, dram_info, &mtl_sa_info);
tgl_get_bw_info(display, dram_info, &adlp_sa_info);
tgl_get_bw_info(display, dram_info, &adls_sa_info);
tgl_get_bw_info(display, dram_info, &rkl_sa_info);
tgl_get_bw_info(display, dram_info, &tgl_sa_info);
icl_get_bw_info(display, dram_info, &icl_sa_info);
const struct dram_info *info;
const struct dram_info *dram_info = intel_dram_info(display);
if (table[config].num_channels == dram_info->num_channels &&
table[config].type == dram_info->type)
static int i915_get_dram_info(struct intel_display *display, struct dram_info *dram_info)
dram_info->fsb_freq = intel_fsb_freq(display);
if (dram_info->fsb_freq)
drm_dbg_kms(display->drm, "FSB frequency: %d kHz\n", dram_info->fsb_freq);
dram_info->mem_freq = intel_mem_freq(display);
if (dram_info->mem_freq)
drm_dbg_kms(display->drm, "DDR speed: %d kHz\n", dram_info->mem_freq);
dram_info->type = pnv_dram_type(display);
skl_dram_get_channels_info(struct intel_display *display, struct dram_info *dram_info)
dram_info->has_16gb_dimms = true;
dram_info->num_channels++;
dram_info->num_channels++;
if (dram_info->num_channels == 0) {
dram_info->has_16gb_dimms = ch0.is_16gb_dimm || ch1.is_16gb_dimm;
dram_info->symmetric_memory = intel_is_dram_symmetric(&ch0, &ch1);
str_yes_no(dram_info->symmetric_memory));
str_yes_no(dram_info->has_16gb_dimms));
skl_get_dram_info(struct intel_display *display, struct dram_info *dram_info)
dram_info->type = skl_get_dram_type(display);
ret = skl_dram_get_channels_info(display, dram_info);
static int bxt_get_dram_info(struct intel_display *display, struct dram_info *dram_info)
dram_info->num_channels++;
dram_info->type != INTEL_DRAM_UNKNOWN &&
dram_info->type != type);
dram_info->type = type;
if (dram_info->type == INTEL_DRAM_UNKNOWN || valid_ranks == 0) {
struct dram_info *dram_info)
dram_info->type = INTEL_DRAM_DDR4;
dram_info->type = INTEL_DRAM_DDR5;
dram_info->type = INTEL_DRAM_LPDDR5;
dram_info->type = INTEL_DRAM_LPDDR4;
dram_info->type = INTEL_DRAM_DDR3;
dram_info->type = INTEL_DRAM_LPDDR3;
dram_info->type = INTEL_DRAM_DDR4;
dram_info->type = INTEL_DRAM_DDR3;
dram_info->type = INTEL_DRAM_LPDDR3;
dram_info->type = INTEL_DRAM_LPDDR4;
dram_info->num_channels = (val & 0xf0) >> 4;
dram_info->num_qgv_points = (val & 0xf00) >> 8;
dram_info->num_psf_gv_points = (val & 0x3000) >> 12;
static int gen11_get_dram_info(struct intel_display *display, struct dram_info *dram_info)
ret = skl_dram_get_channels_info(display, dram_info);
return icl_pcode_read_mem_global_info(display, dram_info);
static int gen12_get_dram_info(struct intel_display *display, struct dram_info *dram_info)
return icl_pcode_read_mem_global_info(display, dram_info);
static int xelpdp_get_dram_info(struct intel_display *display, struct dram_info *dram_info)
dram_info->type = INTEL_DRAM_DDR4;
dram_info->type = INTEL_DRAM_DDR5;
dram_info->type = INTEL_DRAM_LPDDR5;
dram_info->type = INTEL_DRAM_LPDDR4;
dram_info->type = INTEL_DRAM_DDR3;
dram_info->type = INTEL_DRAM_LPDDR3;
dram_info->type = INTEL_DRAM_GDDR;
dram_info->type = INTEL_DRAM_GDDR_ECC;
dram_info->num_channels = REG_FIELD_GET(MTL_N_OF_POPULATED_CH_MASK, val);
dram_info->num_qgv_points = REG_FIELD_GET(MTL_N_OF_ENABLED_QGV_POINTS_MASK, val);
dram_info->ecc_impacting_de_bw = REG_FIELD_GET(XE3P_ECC_IMPACTING_DE, val);
struct dram_info *dram_info;
dram_info = drmm_kzalloc(display->drm, sizeof(*dram_info), GFP_KERNEL);
if (!dram_info)
display->dram.info = dram_info;
ret = xelpdp_get_dram_info(display, dram_info);
ret = gen12_get_dram_info(display, dram_info);
ret = gen11_get_dram_info(display, dram_info);
ret = bxt_get_dram_info(display, dram_info);
ret = skl_get_dram_info(display, dram_info);
ret = i915_get_dram_info(display, dram_info);
intel_dram_type_str(dram_info->type));
drm_dbg_kms(display->drm, "DRAM channels: %u\n", dram_info->num_channels);
drm_dbg_kms(display->drm, "Num QGV points %u\n", dram_info->num_qgv_points);
drm_dbg_kms(display->drm, "Num PSF GV points %u\n", dram_info->num_psf_gv_points);
const struct dram_info *intel_dram_info(struct intel_display *display)
const struct dram_info *intel_dram_info(struct intel_display *display);
const struct dram_info *dram_info = intel_dram_info(display);
return dram_info->symmetric_memory;
const struct dram_info *dram_info = intel_dram_info(display);
DISPLAY_VER(display) == 11) && dram_info->has_16gb_dimms;
struct dram_info;
struct iwl_dram_sec_info dram_info;
struct iwl_dram_sec_info dram_info;
struct iwl_dram_info *dram_info)
data = &dram_info->dram_frags[alloc_id - 1];
struct iwl_dram_info *dram_info;
dram_info = frags->block;
memset(dram_info, 0, sizeof(*dram_info));
ret = iwl_dbg_tlv_update_dram(fwrt, i, dram_info);
dram_info->first_word = cpu_to_le32(DRAM_INFO_FIRST_MAGIC_WORD);
dram_info->second_word = cpu_to_le32(DRAM_INFO_SECOND_MAGIC_WORD);
struct iwl_dbgc1_info dram_info = {};
dram_info.dbgc1_add_lsb =
dram_info.dbgc1_add_msb =
dram_info.dbgc1_size = cpu_to_le32(le32_to_cpu(dram_size) - 0x400);
address + offset, &dram_info, 4);
offsetofend(struct iwl_tx_cmd_v9, dram_info) >
offsetofend(struct iwl_tx_cmd, dram_info) >