mirror of
https://github.com/torvalds/linux.git
synced 2026-04-27 11:02:31 -04:00
Starting with Xe3p_LPD, we now have a new field in MEM_SS_INFO_GLOBAL
that indicates whether the memory has enabled ECC that limits display
bandwidth. Add the field ecc_impacting_de_bw to struct dram_info to
contain that information and set it appropriately when probing for
memory info.
Currently there are no instructions in Bspec on how to handle that case,
so let's throw a warning if we ever find such a scenario.
v2:
- s/ecc_impacting_de/ecc_impacting_de_bw/ to be more specific. (Matt
Atwood)
- Add warning if ecc_impacting_de_bw is true, since we currently do
not have instructions on how to handle it. (Matt Roper)
v3:
- Check on ecc_impacting_de_bw for the warning only for Xe3p_LPD and
beyond.
- Change warning macro from drm_WARN_ON_ONCE() to drm_WARN_ON().
Bspec: 69131
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Matt Atwood <matthew.s.atwood@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Link: https://patch.msgid.link/20251103-xe3p_lpd-basic-enabling-v3-15-00e87b510ae7@intel.com
Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
46 lines
1.1 KiB
C
46 lines
1.1 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2020 Intel Corporation
|
|
*/
|
|
|
|
#ifndef __INTEL_DRAM_H__
|
|
#define __INTEL_DRAM_H__
|
|
|
|
#include <linux/types.h>
|
|
|
|
struct drm_i915_private;
|
|
struct drm_device;
|
|
|
|
struct dram_info {
|
|
enum intel_dram_type {
|
|
INTEL_DRAM_UNKNOWN,
|
|
INTEL_DRAM_DDR2,
|
|
INTEL_DRAM_DDR3,
|
|
INTEL_DRAM_DDR4,
|
|
INTEL_DRAM_LPDDR3,
|
|
INTEL_DRAM_LPDDR4,
|
|
INTEL_DRAM_DDR5,
|
|
INTEL_DRAM_LPDDR5,
|
|
INTEL_DRAM_GDDR,
|
|
INTEL_DRAM_GDDR_ECC,
|
|
__INTEL_DRAM_TYPE_MAX,
|
|
} type;
|
|
unsigned int fsb_freq;
|
|
unsigned int mem_freq;
|
|
u8 num_channels;
|
|
u8 num_qgv_points;
|
|
u8 num_psf_gv_points;
|
|
bool ecc_impacting_de_bw; /* Only valid from Xe3p_LPD onward. */
|
|
bool symmetric_memory;
|
|
bool has_16gb_dimms;
|
|
};
|
|
|
|
void intel_dram_edram_detect(struct drm_i915_private *i915);
|
|
int intel_dram_detect(struct drm_i915_private *i915);
|
|
unsigned int intel_fsb_freq(struct drm_i915_private *i915);
|
|
unsigned int intel_mem_freq(struct drm_i915_private *i915);
|
|
const struct dram_info *intel_dram_info(struct drm_device *drm);
|
|
const char *intel_dram_type_str(enum intel_dram_type type);
|
|
|
|
#endif /* __INTEL_DRAM_H__ */
|