From: dillon min <dillon.min...@gmail.com> strsep will change data from original memory address, in case the memory is in non-sdram/sram place, will run into a bug(hang at SDRAM: )
just add a temporary array to store bank_name[] to fix this bug. Fixes: f303aaf ("ram: stm32: add second SDRAM bank management") Signed-off-by: dillon min <dillon.min...@gmail.com> --- drivers/ram/stm32_sdram.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/ram/stm32_sdram.c b/drivers/ram/stm32_sdram.c index 540ad85..da27677 100644 --- a/drivers/ram/stm32_sdram.c +++ b/drivers/ram/stm32_sdram.c @@ -268,6 +268,7 @@ static int stm32_fmc_of_to_plat(struct udevice *dev) u32 swp_fmc; ofnode bank_node; char *bank_name; + char _bank_name[128] = {0}; u8 bank = 0; int ret; @@ -300,6 +301,8 @@ static int stm32_fmc_of_to_plat(struct udevice *dev) dev_for_each_subnode(bank_node, dev) { /* extract the bank index from DT */ bank_name = (char *)ofnode_get_name(bank_node); + strcpy(_bank_name, bank_name); + bank_name = _bank_name; strsep(&bank_name, "@"); if (!bank_name) { pr_err("missing sdram bank index"); -- 2.7.4