From 8056896dcc43e3b83696f76eefaacfb5bf838377 Mon Sep 17 00:00:00 2001 From: Samin Guo Date: Tue, 27 Jun 2023 17:46:35 +0800 Subject: board: starfive: vf2: Adjust the CMA size adaptively Adaptively adjust the CMA size according to the DDR size Signed-off-by: Samin Guo --- include/configs/starfive-visionfive2.h | 35 +++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/include/configs/starfive-visionfive2.h b/include/configs/starfive-visionfive2.h index 1c958a147c..969ac55a3d 100644 --- a/include/configs/starfive-visionfive2.h +++ b/include/configs/starfive-visionfive2.h @@ -134,6 +134,37 @@ "fi; " \ "fi; \0" +#define CMA_SIZE_SET \ + "cma_start=70000000\0" \ + "cma_1g=b000000\0" \ + "cma_2g=20000000\0" \ + "cma_4g=40000000\0" \ + "cma_8g=60000000\0" \ + "cma_node=/reserved-memory/linux,cma\0" \ + "cma_ddr1g_set=" \ + "fdt set ${cma_node} size <0x0 0x${cma_1g}>;" \ + "fdt set ${cma_node} alloc-ranges <0x0 0x${cma_start} 0x0 0x${cma_1g}>;\0" \ + "cma_ddr2g_set=" \ + "fdt set ${cma_node} size <0x0 0x${cma_2g}>;" \ + "fdt set ${cma_node} alloc-ranges <0x0 0x${cma_start} 0x0 0x${cma_2g}>;\0" \ + "cma_ddr4g_set=" \ + "fdt set ${cma_node} size <0x0 0x${cma_4g}>;" \ + "fdt set ${cma_node} alloc-ranges <0x0 0x${cma_start} 0x0 0x${cma_4g}>;\0" \ + "cma_ddr8g_set=" \ + "fdt set ${cma_node} size <0x0 0x${cma_8g}>;" \ + "fdt set ${cma_node} alloc-ranges <0x0 0x${cma_start} 0x0 0x${cma_8g}>;\0" \ + "cma_resize=" \ + "if test ${memory_size} -eq 40000000; then " \ + "run cma_ddr1g_set;" \ + "elif test ${memory_size} -eq 80000000; then " \ + "run cma_ddr2g_set;" \ + "elif test ${memory_size} -eq 100000000; then " \ + "run cma_ddr4g_set;" \ + "elif test ${memory_size} -ge 200000000; then " \ + "run cma_ddr8g_set;" \ + "fi; \0 " + + #define VF2_DISTRO_BOOTENV \ "fatbootpart=1:3\0" \ "bootdev=mmc\0" \ @@ -201,7 +232,8 @@ #define VISIONFIVE2_MEM_SET \ "visionfive2_mem_set=" \ - "fdt memory ${memory_addr} ${memory_size};\0" + "fdt memory ${memory_addr} ${memory_size};" \ + "run cma_resize; \0" #define CHIPA_SET \ "chipa_set=" \ @@ -298,6 +330,7 @@ CPU_SPEED_1250_SET \ CPU_SPEED_1500_SET \ CPU_FREQ_VOL_SET \ + CMA_SIZE_SET \ CHIPA_SET_FORCE \ VISIONFIVE2_MEM_SET \ "type_guid_gpt_loader1=" TYPE_GUID_LOADER1 "\0" \ -- cgit v1.2.3