1 // SPDX-License-Identifier: BSD-2-Clause 2 /* 3 * Copyright 2017-2021 NXP 4 * 5 * Peng Fan <peng.fan@nxp.com> 6 */ 7 8 #include <arm.h> 9 #include <io.h> 10 #include <imx.h> 11 #include <mm/core_mmu.h> 12 #include <mm/core_memprot.h> 13 #include <mmdc.h> 14 #include <platform_config.h> 15 #include <stdint.h> 16 imx_get_ddr_type(void)17int imx_get_ddr_type(void) 18 { 19 uint32_t val = 0; 20 uint32_t off = 0; 21 bool is_mx7 = soc_is_imx7ds(); 22 vaddr_t mmdc_base = 0; 23 24 if (is_mx7) 25 off = DDRC_MSTR; 26 else 27 off = MMDC_MDMISC; 28 29 mmdc_base = core_mmu_get_va(MMDC_P0_BASE, MEM_AREA_IO_SEC, 30 off + sizeof(uint32_t)); 31 val = io_read32(mmdc_base + off); 32 33 if (is_mx7) { 34 if (val & MSTR_DDR3) 35 return IMX_DDR_TYPE_DDR3; 36 else if (val & MSTR_LPDDR2) 37 return IMX_DDR_TYPE_LPDDR2; 38 else if (val & MSTR_LPDDR3) 39 return IMX_DDR_TYPE_LPDDR3; 40 else 41 return -1; 42 } 43 44 return (val & MDMISC_DDR_TYPE_MASK) >> MDMISC_DDR_TYPE_SHIFT; 45 } 46