How to configure DDRAM 3-way 4KB interleaving on U-boot

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to configure DDRAM 3-way 4KB interleaving on U-boot

272 Views
bamboovn
Contributor I

Hi Freescale support,

I am working on the QorIQ T Series T4240. Could someone guide me on how to configure 3-way 4KB interleaving mode on U-boot?


My board has 3 memory controllers, each with 8GB.


I attempted to enable 3-way CS0_CS1 interleaving as shown below:

			/* Enable DDR Interleaving */
            pinfo->memctl_opts[i].ba_intlv_ctl = FSL_DDR_CS0_CS1;
			pinfo->memctl_opts[i].memctl_interleaving = 1;
			pinfo->memctl_opts[i].memctl_interleaving_mode = FSL_DDR_3WAY_4KB_INTERLEAVING;
            temp_sdram_cfg = pinfo->fsl_ddr_config_reg[i].ddr_sdram_cfg;

However, I have been faced the u-boot crashed, it was due to the lawbar setting for 3-way 4K

https://github.com/nxp-qoriq/u-boot/blob/lf_v2024.04/drivers/ddr/fsl/main.c #line 823

 
			case FSL_DDR_4WAY_8KB_INTERLEAVING:
				law_memctl = LAW_TRGT_IF_DDR_INTLV_1234;
				if (i == 0)
					fsl_ddr_set_lawbar(
						&pinfo->common_timing_params[i],
						law_memctl, i);
				/* place holder for future 4-way interleaving */
				break;
 

I don't understand why fsl_ddr_set_lawbar is used for Memory Controller 1 only. It should work if I remove the "if (i==0)" condition, as it would mean that fsl_ddr_set_lawbar will be set for every Memory Controller.

Could anyone please give me any ideas how to resolve this problem.

Thank you

0 Kudos
Reply
1 Reply

239 Views
yipingwang
NXP TechSupport
NXP TechSupport

Please configure u-boot environment variable hwconfig as the following.

hwconfig=fsl_ddr:ctlr_intlv=3way_4KB,bank_intlv= cs0_cs1;

Under u-boot prompt:

=>setenv hwconfig "fsl_ddr:ctlr_intlv=3way_4KB,bank_intlv= cs0_cs1;"

=>saveenv

=>reset

0 Kudos
Reply