From 36f0949ef9854b82a9a3154d970da4e3b8d12a61 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Mon, 06 Nov 2023 07:23:29 +0000
Subject: [PATCH] rk3568 rkbin init

---
 rkbin/tools/ddrbin_tool_user_guide.txt |  262 +++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 187 insertions(+), 75 deletions(-)

diff --git a/rkbin/tools/ddrbin_tool_user_guide.txt b/rkbin/tools/ddrbin_tool_user_guide.txt
old mode 100644
new mode 100755
index 6ca5613..9c910d6
--- a/rkbin/tools/ddrbin_tool_user_guide.txt
+++ b/rkbin/tools/ddrbin_tool_user_guide.txt
@@ -9,41 +9,63 @@
 	./ddrbin_tool -g gen_param.txt px30_ddr_333MHz_v1.15.bin
 	The config will show in gen_param.txt.
 
-Note:	The function 1 and function 2 are two separate functions
-	The gen_param.txt file which is generated by function 2 no need use in function 1.
-
 The detail information as following:
 
 * support ddrbin version
-	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------+----------+----------------+
-	|   platform    | uart info | ddr freq | ssmod | DDR 2T | sr pd | drv, odt, Vref etc| dis training info | eye sacn | res space remap|
-	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------+----------+----------------+
-	|  PX30/RK3326  |   V1.11   |     X    |   X   |  V1.12 | V1.15 |          X        |         X         |     X    |       X        |
-	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------+----------+----------------+
-	|    RK1808     |   V1.03   |   V1.03  |   X   |  V1.03 | V1.04 |          X        |         X         |     X    |       X        |
-	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------+----------+----------------+
-	|    RK322x     |   V1.08   |   V1.08  |   X   |  V1.09 |   X   |          X        |         X         |     X    |       X        |
-	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------+----------+----------------+
-	|    RK322xh    |   V1.14   |     X    |   X   |  V1.16 | V1.17 |          X        |         X         |     X    |       X        |
-	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------+----------+----------------+
-	|    RK3288     |   V1.07   |     X    |   X   |  V1.08 |   X   |          X        |         X         |     X    |       X        |
-	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------+----------+----------------+
-	|    RK3308     |   V1.28   |   V1.28  |   X   |  V1.29 | V1.30 |          X        |         X         |     X    |       X        |
-	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------+----------+----------------+
-	|    RK3368     |   V2.04   |   V2.04  |   X   |  V2.05 |   X   |          X        |         X         |     X    |       X        |
-	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------+----------+----------------+
-	|    RK3328     |   V1.14   |     X    |   X   |  V1.16 | V1.17 |          X        |         X         |     X    |       X        |
-	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------+----------+----------------+
-	|    RK3399     |   V1.25   |     X    | V1.25 |    X   |   X   |          X        |         X         |     X    |       X        |
-	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------+----------+----------------+
-	| RK3399PRO NPU |   V1.03   |   V1.03  |   X   |  V1.03 |   X   |          X        |         X         |     X    |       X        |
-	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------+----------+----------------+
-	| RV1126/RV1109 |   V1.00   |   V1.00  | V1.05 |  V1.00 | V1.05 |        V1.05      |         X         |     X    |       X        |
-	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------+----------+----------------+
-	| RK3566/RK3568 |   V1.00   |   V1.00  | V1.06 |  V1.00 | V1.00 |        V1.06      |       V1.07       |     X    |       X        |
-	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------+----------+----------------+
-	|    RK3588     |   V1.00   |   V1.00  |   X   |  V1.00 | V1.00 |        V1.00      |       V1.03       |   V1.06  |      V1.06     |
-	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------+----------+----------------+
+	The 'X' means not support change those parameters by tool.
+	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------------+---------+
+	|   platform    | uart info | ddr freq | ssmod | DDR 2T | sr pd | drv, odt, Vref etc| dis print training info | dis CBT |
+	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------------+---------+
+	|    RV1108     |   V1.08   |   V1.08  | V1.10 |  V1.08 | V1.08 |          X        |            X            |    X    |
+	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------------+---------+
+	|  PX30/RK3326  |   V1.11   |     X    | V1.16 |  V1.12 | V1.15 |          X        |            X            |    X    |
+	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------------+---------+
+	|    RK1808     |   V1.03   |   V1.03  | V1.05 |  V1.03 | V1.04 |          X        |            X            |    X    |
+	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------------+---------+
+	|    RK322x     |   V1.08   |   V1.08  |   X   |  V1.09 |   X   |          X        |            X            |    X    |
+	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------------+---------+
+	|    RK322xh    |   V1.14   |     X    | V1.17 |  V1.16 | V1.17 |          X        |            X            |    X    |
+	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------------+---------+
+	|    RK3288     |   V1.11   |     X    |   X   |  V1.11 |   X   |          X        |            X            |    X    |
+	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------------+---------+
+	|    RK3308     |   V1.28   |   V1.28  | V1.31 |  V1.29 | V1.30 |          X        |            X            |    X    |
+	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------------+---------+
+	|    RK3308S    |   V2.05   |   V2.05  | V2.05 |  V2.05 | V2.05 |          X        |            X            |    X    |
+	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------------+---------+
+	|    RK3368     |   V2.04   |   V2.04  |   X   |  V2.05 |   X   |          X        |            X            |    X    |
+	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------------+---------+
+	|    RK3328     |   V1.14   |     X    | V1.17 |  V1.16 | V1.17 |          X        |            X            |    X    |
+	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------------+---------+
+	|    RK3399     |   V1.25   |     X    | V1.25 |    X   |   X   |          X        |            X            |    X    |
+	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------------+---------+
+	| RK3399PRO NPU |   V1.03   |   V1.03  |   X   |  V1.03 |   X   |          X        |            X            |    X    |
+	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------------+---------+
+	| RV1126/RV1109 |   V1.00   |   V1.00  | V1.05 |  V1.00 | V1.05 |        V1.05      |            X            |    X    |
+	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------------+---------+
+	| RK3566/RK3568 |   V1.00   |   V1.00  | V1.06 |  V1.00 | V1.00 |        V1.06      |          V1.07          |    X    |
+	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------------+---------+
+	|    RK3588     |   V1.00   |   V1.00  |   X   |  V1.00 | V1.00 |        V1.00      |            X            |    X    |
+	+---------------+-----------+----------+-------+--------+-------+-------------------+-------------------------+---------+
+
+| function                        | platform and ddrbin version            |
+| ------------------------------- | -------------------------------------- |
+| first scan channel/channel mask | RK3588 V1.00/RK3399 V1.25/RK3288 V1.11 |
+| stride type                     | RK3588 V1.00/RK3399 V1.25/RK3288 V1.11 |
+| ext_temp_ref                    | Null                                   |
+| link_ecc_en                     | Null                                   |
+| per_bank_ref_en                 | RK3588 V1.09                           |
+| derate_en                       | RK3588 V1.09                           |
+| auto_precharge_en               | Null                                   |
+| res_space_remap_portion         | RK3588 V1.09                           |
+| res_space_remap_all             | RK3588 V1.09                           |
+| rd_vref_scan_en                 | RK3588 V1.08                           |
+| wr_vref_scan_en                 | RK3588 V1.08                           |
+| eye_2d_scan_en                  | RK3588 V1.08                           |
+| ch/bank/rank_mask               | RK3588 V1.00                           |
+| pstore base_addr/buf_size       | RK3588 V1.09                           |
+| uboot/atf/optee/spl/tpl log en  | RK3588 V1.09                           |
+| boot_fsp                        | RK3588 V1.09                           |
+| pageclose                       | RK3588 V1.10                           |
 
 * UART info
 
@@ -54,18 +76,85 @@
 
 * disable print training information
 
-dis_printf_training: 1: will disabled print training information; 0: will enable print training information.
+dis_train_print: 1: will disabled print training information; 0: will enable print training information.
 
-* remap pcie 100M reg to DDR
+* recycle registers space(remap register space to DDR)
 
-res_space_remap: 1: will remap pcie 100M reg to DDR memory space.
+res_space_remap_portion
+1: will remap the part of registers to DDR memory space(will not larger than 4GB).
+It is PCIE and some reserved space in RK3588, and the PCIE can not be used when set to 1.
+
+res_space_remap_all
+1: will wrap all registers space(include res_space_remap_portion enable space) to DDR memory space. This space would be place in larger than 4GB.
+The PCIE can be used when set to 1 in RK3588.
 
 * DDR eye scanning
 1) eye_2d_scan_en: 1: will enable 2D eye scanning for debug purpose, vref and skew eye scanning.
 2) wr_vref_scan_en: 1: enable vref scan and use scanning result for write.
 3) rd_vref_scan_en: 1: enable vref scan and use scanning result for read.
 
-* DDR (final) freq(ddrx_f0_freq_mhz)
+* DDR auto precharge
+
+auto_precharge_en: 1: will enable the DDR auto precharge.
+
+* DDR refresh derate
+
+derate_en: 1: will enable derate function of the LP2/LP3/LP4/LP4X/LP5.
+The high temperature will issue more refresh command and the low temperature will less.
+
+* DDR per bank refresh
+
+per_bank_ref_en: 1: will enable per bank refresh
+
+* link ECC enable
+
+link_ecc_en: 1: read/write link ecc enable.
+
+* Extended temperature refresh
+
+ext_temp_ref:
+	0: ref1x for normal chip, 2x for 3568M/3568J
+	1: fix 2x ref for all chip
+	2: fix 4x ref for all chip
+	3: fix 1x ref for all chip
+Note: If derate-enabled DDR are configured with derate_en=1, the ext_temp_ref configuration does not take effect.
+
+* pstore_base_addr pstore_buf_size
+The pstore buffer base address: pstore_base_addr << 16, 64kB align.
+The pstore buffer size: pstore_buf_size * 4KB.
+It is define the addr and size to save ddrbin log for last log.
+
+* uboot_log_en
+1: enable uboot log.
+0: disable uboot log.
+
+* atf_log_en
+1: enable atf log.
+0: disable atf log.
+
+* optee_log_en
+1: enable optee log.
+0: disable optee log.
+
+* spl_log_en
+1: enable spl log.
+0: disable spl log.
+
+* tpl_log_en
+1: enable tpl log.
+0: disable tpl log.
+
+* pageclose
+1: enable pageclose.
+0: disable pageclose.
+
+* boot_fsp
+To choose the which DDR freq to boot system. 0 means fsp0_freq, 1 means fsp1_freq, 2 means fsp2_freq, 3 means fsp3_freq, the default is 0.
+
+* DDR (final) freq(also called ddrx_f0_freq_mhz/fsp0_freq)
+
+For RK3588, the boot_fsp used to choose which ddrx_fx_freq_mhz/fspx_freq to boot system, default is ddrx_f0_freq_mhz/fsp0_freq.
+For the others platform, it is the final freq to boot system.
 
 ddr2_freq(ddr2_f0_freq_mhz): ddr2 frequency,  unit:MHz.
 lp2_freq (lp2_f0_freq_mhz):  lpddr2 frequency,  unit:MHz.
@@ -76,47 +165,55 @@
 lp4x_freq(lp4x_f0_freq_mhz): lpddr4x frequency,  unit:MHz.
 lp5_freq (lp5_f0_freq_mhz):  lpddr5 frequency,  unit:MHz.
 
-For RV1126/RV1109, RK3566/RK3568, RK3588 those frequencies are the final freq in loader.
-
-+---------------+--------------------------------------------------------+
-|   platform    |                    support frequencies                 |
-+---------------+--------------------------------------------------------+
-|  PX30/RK3326  |                              X                         |
-+---------------+--------------------------------------------------------+
-|    RK1808     |                    333,400,533,666,786,933             |
-+---------------+--------------------------------------------------------+
-|    RK322x     |                     not larger than 800                |
-+---------------+--------------------------------------------------------+
-|    RK322xh    |                              X                         |
-+---------------+--------------------------------------------------------+
-|    RK3288     |                              X                         |
-+---------------+--------------------------------------------------------+
-|    RK3308     |                         393,451,589                    |
-+---------------+--------------------------------------------------------+
-|    RK3368     |    DDR3 not larger than 800, LP3 not larger than 666   |
-+---------------+--------------------------------------------------------+
-|    RK3328     |                              X                         |
-+---------------+--------------------------------------------------------+
-|    RK3399     |                              X                         |
-+---------------+--------------------------------------------------------+
-| RK3399PRO NPU |                   333,400,533,666,786,933              |
-+---------------+--------------------------------------------------------+
-| RV1126/RV1109 |               328,396,528,664,784,924,1056             |
-+---------------+--------------------------------------------------------+
-| RK3566/RK3568 |      324,396,528,630,780,920,1056,1184,1332,1560       |
-+---------------+--------------------------------------------------------+
-|    RK3588     | LP4/LP4x [306.5MHz - 2133MHz]; LP5: [400MHz - 2750MHz] |
-+---------------+--------------------------------------------------------+
+* support ddr frequency:
+The 'X' as follows means not support change frequencies by tool.
++---------------+-----------------------------------------------------------------+
+|   platform    |                    support frequencies(MHZ)                     |
++---------------+-----------------------------------------------------------------+
+|    RK1108     |               DDR2: 400; LP2: <= 533; DDR3: <= 800              |
++---------------+-----------------------------------------------------------------+
+|  PX30/RK3326  |                                  X                              |
++---------------+-----------------------------------------------------------------+
+|    RK1808     |                        333,400,533,666,786,933                  |
++---------------+-----------------------------------------------------------------+
+|    RK322x     |                  DDR2/LP2: <= 533; others: <= 800               |
++---------------+-----------------------------------------------------------------+
+|    RK322xh    |                                  X                              |
++---------------+-----------------------------------------------------------------+
+|    RK3288     |                                  X                              |
++---------------+-----------------------------------------------------------------+
+| RK3308/RK3308S|               DDR2/LP2: 393,451; DDR3: 393,451,589              |
++---------------+-----------------------------------------------------------------+
+|    RK3368     |                     DDR3: <= 800; LP3: <= 666                   |
++---------------+-----------------------------------------------------------------+
+|    RK3328     |                                  X                              |
++---------------+-----------------------------------------------------------------+
+|    RK3399     |                                  X                              |
++---------------+-----------------------------------------------------------------+
+| RK3399PRO NPU |                        333,400,533,666,786,933                  |
++---------------+-----------------------------------------------------------------+
+| RV1126/RV1109 |                     328,396,528,664,784,924,1056                |
++---------------+-----------------------------------------------------------------+
+|    RK3566     |                     324,396,528,630,780,920,1056                |
++---------------+-----------------------------------------------------------------+
+|    RK3568     |        DDR3/LP3: 324,396,528,630,780,920,1056                   |
+|               |   DDR4/LP4/LP4X: 324,396,528,630,780,920,1056,1184,1332,1560    |
++---------------+-----------------------------------------------------------------+
+|    RK3588     |     LP4/LP4x [306.5MHz - 2133MHz]; LP5: [400MHz - 2750MHz]      |
++---------------+-----------------------------------------------------------------+
+|    RK3528     |        DDR3/LP3: 324,396,528,630,780,920,1056                   |
+|               |   DDR4/LP4/LP4X: 324,396,528,630,780,920,1056,1184              |
++---------------+-----------------------------------------------------------------+
 
 * DDR frequencies(add more)
 
-ddr2_f1_freq_mhz: ddr2 frequency number 1,  unit:MHz.
-ddr2_f2_freq_mhz: ddr2 frequency number 2,  unit:MHz.
-ddr2_f3_freq_mhz: ddr2 frequency number 3,  unit:MHz.
-ddr2_f4_freq_mhz: ddr2 frequency number 4,  unit:MHz.
-ddr2_f5_freq_mhz: ddr2 frequency number 5,  unit:MHz.
+ddr2_f1_freq_mhz: ddr2 frequency fsp 1,  unit:MHz.
+ddr2_f2_freq_mhz: ddr2 frequency fsp 2,  unit:MHz.
+ddr2_f3_freq_mhz: ddr2 frequency fsp 3,  unit:MHz.
+ddr2_f4_freq_mhz: ddr2 frequency fsp 4,  unit:MHz.
+ddr2_f5_freq_mhz: ddr2 frequency fsp 5,  unit:MHz.
 ...
-The ddrx_f0_freq_mhz is named ddrx_freq.
+The ddrx_f0_freq_mhz(the fsp0 frequency) is named ddrx_freq.
 
 ddr*_f*_freq_mhz/lp*_f*_freq_mhz: Only RV1126/RV1109, RK3566/RK3568, RK3588 used.
 The program will initialize dram by following order.
@@ -134,6 +231,8 @@
 	ddr4_f3_freq_mhz=780
 	...
 
+Note: The ddr frequency table in kernel dts/dtsi file need correspond to these frequencies.
+
 * SR PD idle
 
 sr_idle: auto self-refresh mode delay time.
@@ -146,7 +245,7 @@
 * PLL ssmod
 
 These parameters are about Spread Spectrum Modulator(ssmod) for PLL.
-ssmod_downspread: ssmod work mode. 0: down spread, 1: center spread.
+ssmod_downspread: ssmod work mode. 1: down spread, 0: center spread.
 ssmod_div: Divider required to set the modulation frequency. RK3308 suggests to ssmod_div=2, others platforms suggest to ssmod_div=5.
 ssmod_spread: spread amplitude % = 0.1 * ssmod_spread; 0: disable ssmod, others will enable ssmod, max to 0x1f.
 
@@ -180,6 +279,13 @@
 +---------------+-------------------+-------------------+--------------+-----------------+----------------+----------------+-------------+
 |    RK3588     |         X         |         X         |       X      |  240,120,80,60, |   follow LP4   |   follow LP4   | follow LP4  |
 |               |                   |                   |              |   48,40,34,30   |                |                |             |
++---------------+-------------------+-------------------+--------------+-----------------+----------------+----------------+-------------+
+|               | 572,289,195,145,  | 595,300,202,151,  |              | 654,328,221,165,| 585,297,202,   | 585,297,202,   |             |
+|               | 117,99,85,73,66,  | 122,102,89,76,68, |              |133,112,97,83,74,| 150,122,103,90,| 150,122,103,90,|             |
+|    RK3528     | 60,55,50,47,44,41,| 62,57,52,49,45,43,|  follow DDR4 | 67,62,57,53,49, | 77,69,63,58,53,| 77,69,63,58,53,|      X      |
+|               | 38,36,34,33,31,30,| 39,37,35,34,32,31,|              | 46,43,40,38,37, | 50,47,44,40,38,| 50,47,44,40,38,|             |
+|               | 29,28             | 30,29             |              | 35,33,32,31     | 37,35,33,32,31,| 37,35,33,32,31,|             |
+|               |                   |                   |              |                 | 30             | 30             |             |
 +---------------+-------------------+-------------------+--------------+-----------------+----------------+----------------+-------------+
 
 The DRAM side driver strength support value as follows:
@@ -218,7 +324,13 @@
 |    RK3588     |         X         |          X         |       X      |   0,240,120,80,   |   follow LP4   |   follow LP4   | follow LP4  |
 |               |                   |                    |              |  60,48,40,34,30   |                |                |             |
 +---------------+-------------------+--------------------+--------------+-------------------+----------------+----------------+-------------+
-
+|               | 572,289,195,145,  | 595,300,202,151,   |              | 654,328,221,165,  | 585,297,202,   | 585,297,202,   |             |
+|               | 117,99,85,73,66,  | 122,102,89,76,68,  |              |133,112,97,83,74,  | 150,122,103,90,| 150,122,103,90,|             |
+|    RK3528     | 60,55,50,47,44,41,| 62,57,52,49,45,43, |  follow DDR4 | 67,62,57,53,49,   | 77,69,63,58,53,| 77,69,63,58,53,|      X      |
+|               | 38,36,34,33,31,30,| 39,37,35,34,32,31, |              | 46,43,40,38,37,   | 50,47,44,40,38,| 50,47,44,40,38,|             |
+|               | 29,28             | 30,29              |              | 35,33,32,31       | 37,35,33,32,31,| 37,35,33,32,31,|             |
+|               |                   |                    |              |                   | 30             | 30             |             |
++---------------+-------------------+--------------------+--------------+-------------------+----------------+----------------+-------------+
 The DRAM side ODT support value as follows:
 +---------------+-------------------+-------------------+--------------+-----------------------+----------------+---------------+
 |   platform    |        DDR3       |        DDR4       |     LP3      | LP4(include DQ and CA)|      LP4X      |      LP5      |

--
Gitblit v1.6.2