From da0efd5be7125d159a1284dea3243807aefe776c Mon Sep 17 00:00:00 2001 From: YouMin Chen Date: Fri, 4 Aug 2023 11:41:58 +0800 Subject: [PATCH] rk3588: ddr: update ddrbin to v1.13 build from: 25cee80c4f rk3588: ddr: fix LPDDR5 528MHz write training issue update feature: 1. fix LPDDR5 528MHz write training issue 2. fsp_param update vref_inner for each channel 3. Support both per-bank refresh and derating enabled Note: BL31 should be update to V1.41 Signed-off-by: YouMin Chen Change-Id: I78f0d2ab4f10b71330ce677c4f6ae0d31d982ef2 --- RKBOOT/RK3588MINIALL.ini | 6 ++--- RKBOOT/RK3588MINIALL_IPC.ini | 8 +++--- RKBOOT/RK3588MINIALL_RAMBOOT.ini | 4 +-- ...588_ddr_lp4_2112MHz_lp5_2736MHz_v1.13.bin} | Bin 72816 -> 72912 bytes doc/release/RK3588_CN.md | 23 ++++++++++++++++++ doc/release/RK3588_EN.md | 23 ++++++++++++++++++ 6 files changed, 55 insertions(+), 9 deletions(-) rename bin/rk35/{rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.12.bin => rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.13.bin} (56%) diff --git a/RKBOOT/RK3588MINIALL.ini b/RKBOOT/RK3588MINIALL.ini index 109933f2..9b57df07 100644 --- a/RKBOOT/RK3588MINIALL.ini +++ b/RKBOOT/RK3588MINIALL.ini @@ -5,7 +5,7 @@ MAJOR=1 MINOR=11 [CODE471_OPTION] NUM=1 -Path1=bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.12.bin +Path1=bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.13.bin Sleep=1 [CODE472_OPTION] NUM=1 @@ -14,10 +14,10 @@ Path1=bin/rk35/rk3588_usbplug_v1.10.bin NUM=2 LOADER1=FlashData LOADER2=FlashBoot -FlashData=bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.12.bin +FlashData=bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.13.bin FlashBoot=bin/rk35/rk3588_spl_v1.12.bin [OUTPUT] -PATH=rk3588_spl_loader_v1.12.112.bin +PATH=rk3588_spl_loader_v1.13.112.bin [SYSTEM] NEWIDB=true [FLAG] diff --git a/RKBOOT/RK3588MINIALL_IPC.ini b/RKBOOT/RK3588MINIALL_IPC.ini index 0eeb5664..01729c91 100644 --- a/RKBOOT/RK3588MINIALL_IPC.ini +++ b/RKBOOT/RK3588MINIALL_IPC.ini @@ -5,7 +5,7 @@ MAJOR=1 MINOR=11 [CODE471_OPTION] NUM=1 -Path1=bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.12.bin +Path1=bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.13.bin Sleep=1 [CODE472_OPTION] NUM=1 @@ -14,11 +14,11 @@ Path1=bin/rk35/rk3588_usbplug_v1.10.bin NUM=2 LOADER1=FlashData LOADER2=FlashBoot -FlashData=bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.12.bin +FlashData=bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.13.bin FlashBoot=bin/rk35/rk3588_spl_v1.12.bin [OUTPUT] -PATH=rk3588_download_v1.12.112.bin -IDB_PATH=rk3588_idblock_v1.12.112.img +PATH=rk3588_download_v1.13.112.bin +IDB_PATH=rk3588_idblock_v1.13.112.img [SYSTEM] NEWIDB=true [FLAG] diff --git a/RKBOOT/RK3588MINIALL_RAMBOOT.ini b/RKBOOT/RK3588MINIALL_RAMBOOT.ini index d1231f52..f6ac0dcd 100644 --- a/RKBOOT/RK3588MINIALL_RAMBOOT.ini +++ b/RKBOOT/RK3588MINIALL_RAMBOOT.ini @@ -5,7 +5,7 @@ MAJOR=1 MINOR=6 [CODE471_OPTION] NUM=1 -Path1=bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.12.bin +Path1=bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.13.bin Sleep=1 [CODE472_OPTION] NUM=1 @@ -17,7 +17,7 @@ LOADER2=FlashBoot FlashData=bin/rk35/rk3588_ramboot_null0.bin FlashBoot=bin/rk35/rk3588_ramboot_null1.bin [OUTPUT] -PATH=rk3588_ramboot_loader_v1.12.106.bin +PATH=rk3588_ramboot_loader_v1.13.106.bin [SYSTEM] NEWIDB=true [FLAG] diff --git a/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.12.bin b/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.13.bin similarity index 56% rename from bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.12.bin rename to bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.13.bin index 72b27c74404f35202ef87750f0284e50c484d2aa..06bbdef8de9b51cc255420d9e86b72525806bed5 100644 GIT binary patch delta 11662 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 delta 11891 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