huayang duan has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/34433 )
Change subject: mediatek/mt8183: support get current DRAM type ......................................................................
mediatek/mt8183: support get current DRAM type
read the ramid to get the DRAM type of current platform
BUG=b:80501386 BRANCH=none TEST=Memory test pass on EMCP platform
Change-Id: Icf875427347418f796cbf193070bf047844d2267 Signed-off-by: Huayang Duan huayang.duan@mediatek.com --- M src/soc/mediatek/mt8183/emi.c M src/soc/mediatek/mt8183/include/soc/emi.h 2 files changed, 30 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/33/34433/1
diff --git a/src/soc/mediatek/mt8183/emi.c b/src/soc/mediatek/mt8183/emi.c index 937d06d..084a7a3 100644 --- a/src/soc/mediatek/mt8183/emi.c +++ b/src/soc/mediatek/mt8183/emi.c @@ -13,6 +13,7 @@ * GNU General Public License for more details. */
+#include <boardid.h> #include <device/mmio.h> #include <soc/emi.h> #include <soc/infracfg.h> @@ -42,6 +43,30 @@ return read32(&mt8183_infracfg->dramc_wbr); }
+int get_dram_type(void) +{ + uint32_t ramcode = ram_code(); + uint32_t dram_type; + + switch (ramcode) { + case 0: + case 1: + case 2: + dram_type = DRAM_TYPE_DISCRETE; + break; + case 3: + case 4: + case 5: + case 6: + case 7: + default: + dram_type = DRAM_TYPE_EMCP; + break; + } + + return dram_type; +} + static u64 get_ch_rank_size(u8 chn, u8 rank) { u32 shift_for_16bit = 1; diff --git a/src/soc/mediatek/mt8183/include/soc/emi.h b/src/soc/mediatek/mt8183/include/soc/emi.h index 2c04a50..f075429 100644 --- a/src/soc/mediatek/mt8183/include/soc/emi.h +++ b/src/soc/mediatek/mt8183/include/soc/emi.h @@ -33,6 +33,10 @@ u16 delay_cell_unit; };
+enum { + DRAM_TYPE_DISCRETE, + DRAM_TYPE_EMCP, +}; extern const u8 phy_mapping[CHANNEL_MAX][16];
int complex_mem_test(u8 *start, unsigned int len); @@ -41,5 +45,6 @@ void enable_emi_dcm(void); void mt_set_emi(const struct sdram_params *params); void mt_mem_init(const struct sdram_params *params); +int get_dram_type(void);
#endif /* SOC_MEDIATEK_MT8183_EMI_H */