mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-09 03:21:51 +00:00
drivers/ddr/fsl: Update DDR driver for DDR4
Add/update registers for DDR4, including DQ mappings. Allow raw timing method used for all controllers. Update mode_9 register to 0x500 for improved stability. Check DDR controller version number individually in case a SoC has multiple DDR controllers of different versions. Increase read-write turnaround for DDR4 high speeds. Signed-off-by: York Sun <yorksun@freescale.com>
This commit is contained in:
parent
f8cb101e1e
commit
66869f9554
5 changed files with 89 additions and 13 deletions
|
@ -23,12 +23,34 @@
|
|||
|
||||
#define ULL_8FS 0xFFFFFFFFULL
|
||||
|
||||
u32 fsl_ddr_get_version(void)
|
||||
u32 fsl_ddr_get_version(unsigned int ctrl_num)
|
||||
{
|
||||
struct ccsr_ddr __iomem *ddr;
|
||||
u32 ver_major_minor_errata;
|
||||
|
||||
ddr = (void *)_DDR_ADDR;
|
||||
switch (ctrl_num) {
|
||||
case 0:
|
||||
ddr = (void *)CONFIG_SYS_FSL_DDR_ADDR;
|
||||
break;
|
||||
#if defined(CONFIG_SYS_FSL_DDR2_ADDR) && (CONFIG_NUM_DDR_CONTROLLERS > 1)
|
||||
case 1:
|
||||
ddr = (void *)CONFIG_SYS_FSL_DDR2_ADDR;
|
||||
break;
|
||||
#endif
|
||||
#if defined(CONFIG_SYS_FSL_DDR3_ADDR) && (CONFIG_NUM_DDR_CONTROLLERS > 2)
|
||||
case 2:
|
||||
ddr = (void *)CONFIG_SYS_FSL_DDR3_ADDR;
|
||||
break;
|
||||
#endif
|
||||
#if defined(CONFIG_SYS_FSL_DDR4_ADDR) && (CONFIG_NUM_DDR_CONTROLLERS > 3)
|
||||
case 3:
|
||||
ddr = (void *)CONFIG_SYS_FSL_DDR4_ADDR;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
printf("%s unexpected ctrl_num = %u\n", __func__, ctrl_num);
|
||||
return 0;
|
||||
}
|
||||
ver_major_minor_errata = (ddr_in32(&ddr->ip_rev1) & 0xFFFF) << 8;
|
||||
ver_major_minor_errata |= (ddr_in32(&ddr->ip_rev2) & 0xFF00) >> 8;
|
||||
|
||||
|
@ -212,7 +234,7 @@ void print_ddr_info(unsigned int start_ctrl)
|
|||
|
||||
/* Calculate CAS latency based on timing cfg values */
|
||||
cas_lat = ((ddr_in32(&ddr->timing_cfg_1) >> 16) & 0xf);
|
||||
if (fsl_ddr_get_version() <= 0x40400)
|
||||
if (fsl_ddr_get_version(0) <= 0x40400)
|
||||
cas_lat += 1;
|
||||
else
|
||||
cas_lat += 2;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue