xref: /openbmc/u-boot/doc/README.fsl-ddr (revision 47df8f03f4cae5cec1f42856916a3dd0d0460dc1)
1c9ffd839SHaiying Wang
2c9ffd839SHaiying WangTable of interleaving modes supported in cpu/8xxx/ddr/
3c9ffd839SHaiying Wang======================================================
4c9ffd839SHaiying Wang  +-------------+---------------------------------------------------------+
5c9ffd839SHaiying Wang  |             |                   Rank Interleaving                     |
6c9ffd839SHaiying Wang  |             +--------+-----------+-----------+------------+-----------+
7c9ffd839SHaiying Wang  |Memory       |        |           |           |    2x2     |    4x1    |
8c9ffd839SHaiying Wang  |Controller   |  None  | 2x1 lower | 2x1 upper | {CS0+CS1}, | {CS0+CS1+ |
9c9ffd839SHaiying Wang  |Interleaving |        | {CS0+CS1} | {CS2+CS3} | {CS2+CS3}  |  CS2+CS3} |
10c9ffd839SHaiying Wang  +-------------+--------+-----------+-----------+------------+-----------+
11c9ffd839SHaiying Wang  |None         |  Yes   | Yes       | Yes       | Yes        | Yes       |
12c9ffd839SHaiying Wang  +-------------+--------+-----------+-----------+------------+-----------+
13c9ffd839SHaiying Wang  |Cacheline    |  Yes   | Yes       | No        | No, Only(*)| Yes       |
14c9ffd839SHaiying Wang  |             |CS0 Only|           |           | {CS0+CS1}  |           |
15c9ffd839SHaiying Wang  +-------------+--------+-----------+-----------+------------+-----------+
16c9ffd839SHaiying Wang  |Page         |  Yes   | Yes       | No        | No, Only(*)| Yes       |
17c9ffd839SHaiying Wang  |             |CS0 Only|           |           | {CS0+CS1}  |           |
18c9ffd839SHaiying Wang  +-------------+--------+-----------+-----------+------------+-----------+
19c9ffd839SHaiying Wang  |Bank         |  Yes   | Yes       | No        | No, Only(*)| Yes       |
20c9ffd839SHaiying Wang  |             |CS0 Only|           |           | {CS0+CS1}  |           |
21c9ffd839SHaiying Wang  +-------------+--------+-----------+-----------+------------+-----------+
22c9ffd839SHaiying Wang  |Superbank    |  No    | Yes       | No        | No, Only(*)| Yes       |
23c9ffd839SHaiying Wang  |             |        |           |           | {CS0+CS1}  |           |
24c9ffd839SHaiying Wang  +-------------+--------+-----------+-----------+------------+-----------+
25c9ffd839SHaiying Wang (*) Although the hardware can be configured with memory controller
26c9ffd839SHaiying Wang interleaving using "2x2" rank interleaving, it only interleaves {CS0+CS1}
27c9ffd839SHaiying Wang from each controller. {CS2+CS3} on each controller are only rank
28c9ffd839SHaiying Wang interleaved on that controller.
29c9ffd839SHaiying Wang
30076bff8fSyork For memory controller interleaving, identical DIMMs are suggested. Software
31076bff8fSyork doesn't check the size or organization of interleaved DIMMs.
32076bff8fSyork
33c9ffd839SHaiying WangThe ways to configure the ddr interleaving mode
34c9ffd839SHaiying Wang==============================================
35c9ffd839SHaiying Wang1. In board header file(e.g.MPC8572DS.h), add default interleaving setting
36c9ffd839SHaiying Wang   under "CONFIG_EXTRA_ENV_SETTINGS", like:
37c9ffd839SHaiying Wang	#define CONFIG_EXTRA_ENV_SETTINGS				\
3879e4e648SKumar Gala	 "hwconfig=fsl_ddr:ctlr_intlv=bank"			\
39c9ffd839SHaiying Wang	 ......
40c9ffd839SHaiying Wang
41c9ffd839SHaiying Wang2. Run u-boot "setenv" command to configure the memory interleaving mode.
42c9ffd839SHaiying Wang   Either numerical or string value is accepted.
43c9ffd839SHaiying Wang
44c9ffd839SHaiying Wang  # disable memory controller interleaving
4579e4e648SKumar Gala  setenv hwconfig "fsl_ddr:ctlr_intlv=null"
46c9ffd839SHaiying Wang
47c9ffd839SHaiying Wang  # cacheline interleaving
4879e4e648SKumar Gala  setenv hwconfig "fsl_ddr:ctlr_intlv=cacheline"
49c9ffd839SHaiying Wang
50c9ffd839SHaiying Wang  # page interleaving
5179e4e648SKumar Gala  setenv hwconfig "fsl_ddr:ctlr_intlv=page"
52c9ffd839SHaiying Wang
53c9ffd839SHaiying Wang  # bank interleaving
5479e4e648SKumar Gala  setenv hwconfig "fsl_ddr:ctlr_intlv=bank"
55c9ffd839SHaiying Wang
56c9ffd839SHaiying Wang  # superbank
5779e4e648SKumar Gala  setenv hwconfig "fsl_ddr:ctlr_intlv=superbank"
58c9ffd839SHaiying Wang
59c9ffd839SHaiying Wang  # disable bank (chip-select) interleaving
6079e4e648SKumar Gala  setenv hwconfig "fsl_ddr:bank_intlv=null"
61c9ffd839SHaiying Wang
62c9ffd839SHaiying Wang  # bank(chip-select) interleaving cs0+cs1
6379e4e648SKumar Gala  setenv hwconfig "fsl_ddr:bank_intlv=cs0_cs1"
64c9ffd839SHaiying Wang
65c9ffd839SHaiying Wang  # bank(chip-select) interleaving cs2+cs3
6679e4e648SKumar Gala  setenv hwconfig "fsl_ddr:bank_intlv=cs2_cs3"
67c9ffd839SHaiying Wang
68c9ffd839SHaiying Wang  # bank(chip-select) interleaving (cs0+cs1) and (cs2+cs3)  (2x2)
6979e4e648SKumar Gala  setenv hwconfig "fsl_ddr:bank_intlv=cs0_cs1_and_cs2_cs3"
70c9ffd839SHaiying Wang
71c9ffd839SHaiying Wang  # bank(chip-select) interleaving (cs0+cs1+cs2+cs3) (4x1)
7279e4e648SKumar Gala  setenv hwconfig "fsl_ddr:bank_intlv=cs0_cs1_cs2_cs3"
7379e4e648SKumar Gala
747fd101c9SyorkMemory controller address hashing
757fd101c9Syork==================================
767fd101c9SyorkIf the DDR controller supports address hashing, it can be enabled by hwconfig.
777fd101c9Syork
787fd101c9SyorkSyntax is:
797fd101c9Syorkhwconfig=fsl_ddr:addr_hash=true
807fd101c9Syork
81*47df8f03SYork SunMemory controller ECC on/off
82*47df8f03SYork Sun============================
83*47df8f03SYork SunIf ECC is enabled in board configuratoin file, i.e. #define CONFIG_DDR_ECC,
84*47df8f03SYork SunECC can be turned on/off by hwconfig.
85*47df8f03SYork Sun
86*47df8f03SYork SunSyntax is
87*47df8f03SYork Sunhwconfig=fsl_ddr:ecc=off
88ebbe11ddSYork Sun
89ebbe11ddSYork SunMemory testing options for mpc85xx
90ebbe11ddSYork Sun==================================
91ebbe11ddSYork Sun1. Memory test can be done once U-boot prompt comes up using mtest, or
92ebbe11ddSYork Sun2. Memory test can be done with Power-On-Self-Test function, activated at
93ebbe11ddSYork Sun   compile time.
94ebbe11ddSYork Sun
95ebbe11ddSYork Sun   In order to enable the POST memory test, CONFIG_POST needs to be
96ebbe11ddSYork Sun   defined in board configuraiton header file. By default, POST memory test
97ebbe11ddSYork Sun   performs a fast test. A slow test can be enabled by changing the flag at
98ebbe11ddSYork Sun   compiling time. To test memory bigger than 2GB, 36BIT support is needed.
99ebbe11ddSYork Sun   Memory is tested within a 2GB window. TLBs are used to map the virtual 2GB
100ebbe11ddSYork Sun   window to physical address so that all physical memory can be tested.
101ebbe11ddSYork Sun
1027fd101c9SyorkCombination of hwconfig
1037fd101c9Syork=======================
1047fd101c9SyorkHwconfig can be combined with multiple parameters, for example, on a supported
1057fd101c9Syorkplatform
1067fd101c9Syork
1077fd101c9Syorkhwconfig=fsl_ddr:addr_hash=true,ctlr_intlv=cacheline,bank_intlv=cs0_cs1_cs2_cs3
108