This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/AM3352: DDR3 timing issue

Part Number: AM3352


Tool/software: Linux

We have a sitara design using 1 DDR3 memory chip from Hynix. (H5TQ2G63DFR-H9C).

The DDR3 clock is set to 303MHz.

Kernel 3.2.0

Now we wanted to change the DDR memory to 4Gbit device (H5TQ4G63CFR-RDC).

Comparing both memory datasheets does not show any timing diff's, so the same clock freq. should be applicable for the 4Gbit device.

But we had to bring back the clock freq. to 285 MHz in the U-boot config registers in order to properly boot.  This is however not the frequency we would like to continue with.  We do not want to lower the frequency. The issue might indicate we are facing a possible timing violation in the first place.

See below the details of the register values we are currently using. The setting for the Micron MT41J128M16JT-125 is used. (Although we use a Hynix device).

CM_CLKSEL_DPLL_DDR Register (offset = 40h) : 0x00012F17

CM_DIV_M2_DPLL_DDR Register (offset = A0h) : 0x00000201

SDRAM_CONFIG (0x4c000008) : 0x61C04AB2

SDRAM_CONFIG2 (0x4c00000C) : 0x00000000

SDRAM_REF_CTRL (0x4c000010) : 0x0000093B

 

u-boot i (ddr_defs.h) : 

/* AM335X EMIF Register values */

#define VTP_CTRL_READY                       (0x1 << 5)

#define VTP_CTRL_ENABLE                     (0x1 << 6)

#define VTP_CTRL_START_EN     (0x1)

#define PHY_DLL_LOCK_DIFF     0x0

#define DDR_CKE_CTRL_NORMAL        0x1

 

/* Micron MT41J128M16JT-125 */

#define DDR3_EMIF_READ_LATENCY   0x100006        /* Enable Dynamic Power Down */

#define DDR3_EMIF_TIM1             0x0888A39B

#define DDR3_EMIF_TIM2             0x26337FDA

#define DDR3_EMIF_TIM3             0x501F830F

#define DDR3_EMIF_SDCFG                     0x61C04AB2

#define DDR3_EMIF_SDREF                      0x0000093B

#define DDR3_ZQ_CFG                   0x50074BE4

#define DDR3_DLL_LOCK_DIFF   0x1

#define DDR3_RATIO                      0x40

#define DDR3_INVERT_CLKOUT 0x1

#define DDR3_RD_DQS                  0x3B

#define DDR3_WR_DQS                  0x85

#define DDR3_PHY_WR_DATA    0xC1

#define DDR3_PHY_FIFO_WE       0x100

#define DDR3_IOCTRL_VALUE    0x18B