diff options
author | Samin Guo <samin.guo@starfivetech.com> | 2023-07-18 07:29:41 +0300 |
---|---|---|
committer | Samin Guo <samin.guo@starfivetech.com> | 2023-07-19 13:13:22 +0300 |
commit | 5ee167786796b88f1d477d1c7e8882780e49cb79 (patch) | |
tree | cadc73f07c4ebcf7d255bf7087db1f712b8c834a /board/starfive/evb | |
parent | 28908c780f6bbd9cd623a0f52544d9278633373e (diff) | |
download | u-boot-5ee167786796b88f1d477d1c7e8882780e49cb79.tar.xz |
board: starfive: evb: Add resize-ddr function
Add board-level resize-DDR function for evb
Signed-off-by: Samin Guo <samin.guo@starfivetech.com>
Diffstat (limited to 'board/starfive/evb')
-rw-r--r-- | board/starfive/evb/starfive_evb.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/board/starfive/evb/starfive_evb.c b/board/starfive/evb/starfive_evb.c index 6e3fc641ba..493f4394ca 100644 --- a/board/starfive/evb/starfive_evb.c +++ b/board/starfive/evb/starfive_evb.c @@ -302,3 +302,50 @@ err: } +#ifdef CONFIG_ID_EEPROM + +#include <asm/arch/eeprom.h> +#define STARFIVE_JH7110_EEPROM_DDRINFO_OFFSET 91 + +static bool check_eeprom_dram_info(ulong size) +{ + switch (size) { + case 1: + case 2: + case 4: + case 8: + case 16: + return true; + default: + return false; + } +} + +static int resize_ddr_from_eeprom(void) +{ + ulong size; + u32 len = 1; + u8 data = 0; + int ret; + + /* read memory size info */ + ret = get_data_from_eeprom(STARFIVE_JH7110_EEPROM_DDRINFO_OFFSET, len, &data); + if (ret == len) { + size = hextoul(&data, NULL); + if (check_eeprom_dram_info(size)) + return size; + } + return 0; +} +#else +static int resize_ddr_from_eeprom(void) +{ + return 0; +} +#endif /* CONFIG_ID_EEPROM */ + +int board_ddr_size(void) +{ + return resize_ddr_from_eeprom(); +} + |