1/* SPDX-License-Identifier: MIT */
2/*
3 * Copyright © 2020 Intel Corporation
4 */
5
6#ifndef __INTEL_DRAM_H__
7#define __INTEL_DRAM_H__
8
9#include <linux/types.h>
10
11struct drm_i915_private;
12struct drm_device;
13
14struct dram_info {
15 enum intel_dram_type {
16 INTEL_DRAM_UNKNOWN,
17 INTEL_DRAM_DDR2,
18 INTEL_DRAM_DDR3,
19 INTEL_DRAM_DDR4,
20 INTEL_DRAM_LPDDR3,
21 INTEL_DRAM_LPDDR4,
22 INTEL_DRAM_DDR5,
23 INTEL_DRAM_LPDDR5,
24 INTEL_DRAM_GDDR,
25 INTEL_DRAM_GDDR_ECC,
26 __INTEL_DRAM_TYPE_MAX,
27 } type;
28 unsigned int fsb_freq;
29 unsigned int mem_freq;
30 u8 num_channels;
31 u8 num_qgv_points;
32 u8 num_psf_gv_points;
33 bool symmetric_memory;
34 bool has_16gb_dimms;
35};
36
37void intel_dram_edram_detect(struct drm_i915_private *i915);
38int intel_dram_detect(struct drm_i915_private *i915);
39unsigned int intel_fsb_freq(struct drm_i915_private *i915);
40unsigned int intel_mem_freq(struct drm_i915_private *i915);
41const struct dram_info *intel_dram_info(struct drm_device *drm);
42const char *intel_dram_type_str(enum intel_dram_type type);
43
44#endif /* __INTEL_DRAM_H__ */
45