summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/soc/mediatek/mt8186/emi.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/soc/mediatek/mt8186/emi.c b/src/soc/mediatek/mt8186/emi.c
index 48a7b3ef07..6e2544185e 100644
--- a/src/soc/mediatek/mt8186/emi.c
+++ b/src/soc/mediatek/mt8186/emi.c
@@ -5,11 +5,30 @@
* Chapter number: 4.8
*/
+#include <assert.h>
+#include <cbmem.h>
+#include <commonlib/bsd/mem_chip_info.h>
#include <soc/emi.h>
size_t sdram_size(void)
{
- return (size_t)4 * GiB;
+ const struct mem_chip_info *mc;
+ size_t size = 0;
+
+ if (ENV_ROMSTAGE) {
+ size = mtk_dram_size();
+ printk(BIOS_INFO, "dram size (romstage): %#lx\n", size);
+ return size;
+ }
+
+ mc = cbmem_find(CBMEM_ID_MEM_CHIP_INFO);
+ assert(mc);
+
+ for (unsigned int i = 0; i < mc->num_channels; ++i)
+ size += mc->channel[i].density;
+
+ printk(BIOS_INFO, "dram size: %#lx\n", size);
+ return size;
}
void mt_set_emi(struct dramc_param *dparam)