打印
[i.MX]

imx6d DDR2 2channel Fixed 3x32 Issue

[复制链接]
1709|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
秋水一梦|  楼主 | 2016-3-1 18:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

Hi All,

We need some help for imx6 LPDDR2 dual-channel bring up.

Now board has passed ddr2 stress test,but if integrate new DCD cfg to u-boot and generate u-boot.imx,failed to download
it to board through mfgtools.mfgtools stop in "downloading u-boot".any can give some help?

DDR Config:Fixed 32x2 Config,

EDB8132B4PM: 256 Meg x 32@

DDR Chip:2 chip,1GB * 2, 8banks

If use DDR2 1 channel config,u-boot/kernel can run successfully in DDR2 400.

相关帖子

沙发
秋水一梦|  楼主 | 2016-3-1 18:15 | 只看该作者

============================================
        DDR Stress Test (2.4.0)
        Build: Dec 11 2015, 11:13:38
        Freescale Semiconductor, Inc.
============================================

============================================
        Chip ID
CHIP ID = i.MX6 Dual/Quad (0x63)
Internal Revision = TO1.5
============================================

============================================
        Boot Configuration
SRC_SBMR1(0x020d8004) = 0x00100000
SRC_SBMR2(0x020d801c) = 0x20000001
============================================

ARM Clock set to 1GHz

============================================
        DDR configuration
BOOT_CFG3[5-4]: 0x01, Fixed 2X32 map.
DDR type is LPDDR2 in 2-channel mode. Show ch0 info only
Data width: 32, bank num: 8
Row size: 14, col size: 10
Both chip select CSD0 and CSD1 are used  
Density per chip select: 512MB
============================================

Current Tempareture: 52
============================================

DDR Freq: 396 MHz

LPDDR2 2 CHANNLES
Note: Array result[] holds the DRAM test result of each byte.  
      0: test pass.  1: test fail  
      4 bits respresent the result of 1 byte.   
      result 0001:byte 0 fail.
      result 0011:byte 0, 1 fail.

Starting Read calibration...

Test channel 0
ABS_OFFSET=0x00000000        result[00]=0x1111
ABS_OFFSET=0x04040404        result[01]=0x1111
ABS_OFFSET=0x08080808        result[02]=0x1111
ABS_OFFSET=0x0C0C0C0C        result[03]=0x1111
ABS_OFFSET=0x10101010        result[04]=0x1011
ABS_OFFSET=0x14141414        result[05]=0x1011
ABS_OFFSET=0x18181818        result[06]=0x0000
ABS_OFFSET=0x1C1C1C1C        result[07]=0x0000
ABS_OFFSET=0x20202020        result[08]=0x0000
ABS_OFFSET=0x24242424        result[09]=0x0000
ABS_OFFSET=0x28282828        result[0A]=0x0000
ABS_OFFSET=0x2C2C2C2C        result[0B]=0x0000
ABS_OFFSET=0x30303030        result[0C]=0x0000
ABS_OFFSET=0x34343434        result[0D]=0x0000
ABS_OFFSET=0x38383838        result[0E]=0x0000
ABS_OFFSET=0x3C3C3C3C        result[0F]=0x0000
ABS_OFFSET=0x40404040        result[10]=0x0000
ABS_OFFSET=0x44444444        result[11]=0x0000
ABS_OFFSET=0x48484848        result[12]=0x0000
ABS_OFFSET=0x4C4C4C4C        result[13]=0x0000
ABS_OFFSET=0x50505050        result[14]=0x0000
ABS_OFFSET=0x54545454        result[15]=0x0000
ABS_OFFSET=0x58585858        result[16]=0x0001
ABS_OFFSET=0x5C5C5C5C        result[17]=0x0001
ABS_OFFSET=0x60606060        result[18]=0x0111
ABS_OFFSET=0x64646464        result[19]=0x0111
ABS_OFFSET=0x68686868        result[1A]=0x1111
ABS_OFFSET=0x6C6C6C6C        result[1B]=0x1111
ABS_OFFSET=0x70707070        result[1C]=0x1111
ABS_OFFSET=0x74747474        result[1D]=0x1111
ABS_OFFSET=0x78787878        result[1E]=0x1111
ABS_OFFSET=0x7C7C7C7C        result[1F]=0x1111

Byte 0: (0x18 - 0x54), middle value:0x36
Byte 1: (0x18 - 0x5c), middle value:0x3a
Byte 2: (0x10 - 0x5c), middle value:0x36
Byte 3: (0x18 - 0x64), middle value:0x3e
Test channel 1
ABS_OFFSET=0x00000000        result[00]=0x1111
ABS_OFFSET=0x04040404        result[01]=0x1111
ABS_OFFSET=0x08080808        result[02]=0x1111
ABS_OFFSET=0x0C0C0C0C        result[03]=0x1111
ABS_OFFSET=0x10101010        result[04]=0x1101
ABS_OFFSET=0x14141414        result[05]=0x1001
ABS_OFFSET=0x18181818        result[06]=0x1001
ABS_OFFSET=0x1C1C1C1C        result[07]=0x1000
ABS_OFFSET=0x20202020        result[08]=0x0000
ABS_OFFSET=0x24242424        result[09]=0x0000
ABS_OFFSET=0x28282828        result[0A]=0x0000
ABS_OFFSET=0x2C2C2C2C        result[0B]=0x0000
ABS_OFFSET=0x30303030        result[0C]=0x0000
ABS_OFFSET=0x34343434        result[0D]=0x0000
ABS_OFFSET=0x38383838        result[0E]=0x0000
ABS_OFFSET=0x3C3C3C3C        result[0F]=0x0000
ABS_OFFSET=0x40404040        result[10]=0x0000
ABS_OFFSET=0x44444444        result[11]=0x0000
ABS_OFFSET=0x48484848        result[12]=0x0000
ABS_OFFSET=0x4C4C4C4C        result[13]=0x0000
ABS_OFFSET=0x50505050        result[14]=0x0000
ABS_OFFSET=0x54545454        result[15]=0x0000
ABS_OFFSET=0x58585858        result[16]=0x0000
ABS_OFFSET=0x5C5C5C5C        result[17]=0x1010
ABS_OFFSET=0x60606060        result[18]=0x1110
ABS_OFFSET=0x64646464        result[19]=0x1111
ABS_OFFSET=0x68686868        result[1A]=0x1111
ABS_OFFSET=0x6C6C6C6C        result[1B]=0x1111
ABS_OFFSET=0x70707070        result[1C]=0x1111
ABS_OFFSET=0x74747474        result[1D]=0x1111
ABS_OFFSET=0x78787878        result[1E]=0x1111
ABS_OFFSET=0x7C7C7C7C        result[1F]=0x1111

Byte 0: (0x1c - 0x60), middle value:0x3e
Byte 1: (0x10 - 0x58), middle value:0x34
Byte 2: (0x14 - 0x5c), middle value:0x38
Byte 3: (0x20 - 0x58), middle value:0x3c

MMDC0 MPRDDLCTL = 0x3E363A36, MMDC1 MPRDDLCTL = 0x3C38343E

Starting Write calibration...

Test channel 0
ABS_OFFSET=0x00000000        result[00]=0x1111
ABS_OFFSET=0x04040404        result[01]=0x0011
ABS_OFFSET=0x08080808        result[02]=0x0000
ABS_OFFSET=0x0C0C0C0C        result[03]=0x0000
ABS_OFFSET=0x10101010        result[04]=0x0000
ABS_OFFSET=0x14141414        result[05]=0x0000
ABS_OFFSET=0x18181818        result[06]=0x0000
ABS_OFFSET=0x1C1C1C1C        result[07]=0x0000
ABS_OFFSET=0x20202020        result[08]=0x0000
ABS_OFFSET=0x24242424        result[09]=0x0000
ABS_OFFSET=0x28282828        result[0A]=0x0000
ABS_OFFSET=0x2C2C2C2C        result[0B]=0x0000
ABS_OFFSET=0x30303030        result[0C]=0x0000
ABS_OFFSET=0x34343434        result[0D]=0x0000
ABS_OFFSET=0x38383838        result[0E]=0x0000
ABS_OFFSET=0x3C3C3C3C        result[0F]=0x0000
ABS_OFFSET=0x40404040        result[10]=0x0000
ABS_OFFSET=0x44444444        result[11]=0x0000
ABS_OFFSET=0x48484848        result[12]=0x0000
ABS_OFFSET=0x4C4C4C4C        result[13]=0x0000
ABS_OFFSET=0x50505050        result[14]=0x0000
ABS_OFFSET=0x54545454        result[15]=0x0000
ABS_OFFSET=0x58585858        result[16]=0x0000
ABS_OFFSET=0x5C5C5C5C        result[17]=0x0000
ABS_OFFSET=0x60606060        result[18]=0x0000
ABS_OFFSET=0x64646464        result[19]=0x0000
ABS_OFFSET=0x68686868        result[1A]=0x1111
ABS_OFFSET=0x6C6C6C6C        result[1B]=0x1111
ABS_OFFSET=0x70707070        result[1C]=0x1111
ABS_OFFSET=0x74747474        result[1D]=0x1111
ABS_OFFSET=0x78787878        result[1E]=0x1111
ABS_OFFSET=0x7C7C7C7C        result[1F]=0x1111

Byte 0: (0x08 - 0x64), middle value:0x36
Byte 1: (0x08 - 0x64), middle value:0x36
Byte 2: (0x04 - 0x64), middle value:0x34
Byte 3: (0x04 - 0x64), middle value:0x34
Test channel 1
ABS_OFFSET=0x00000000        result[00]=0x1011
ABS_OFFSET=0x04040404        result[01]=0x1011
ABS_OFFSET=0x08080808        result[02]=0x1010
ABS_OFFSET=0x0C0C0C0C        result[03]=0x0010
ABS_OFFSET=0x10101010        result[04]=0x0000
ABS_OFFSET=0x14141414        result[05]=0x0000
ABS_OFFSET=0x18181818        result[06]=0x0000
ABS_OFFSET=0x1C1C1C1C        result[07]=0x0000
ABS_OFFSET=0x20202020        result[08]=0x0000
ABS_OFFSET=0x24242424        result[09]=0x0000
ABS_OFFSET=0x28282828        result[0A]=0x0000
ABS_OFFSET=0x2C2C2C2C        result[0B]=0x0000
ABS_OFFSET=0x30303030        result[0C]=0x0000
ABS_OFFSET=0x34343434        result[0D]=0x0000
ABS_OFFSET=0x38383838        result[0E]=0x0000
ABS_OFFSET=0x3C3C3C3C        result[0F]=0x0000
ABS_OFFSET=0x40404040        result[10]=0x0000
ABS_OFFSET=0x44444444        result[11]=0x0000
ABS_OFFSET=0x48484848        result[12]=0x0000
ABS_OFFSET=0x4C4C4C4C        result[13]=0x0000
ABS_OFFSET=0x50505050        result[14]=0x0000
ABS_OFFSET=0x54545454        result[15]=0x0100
ABS_OFFSET=0x58585858        result[16]=0x0100
ABS_OFFSET=0x5C5C5C5C        result[17]=0x0100
ABS_OFFSET=0x60606060        result[18]=0x0100
ABS_OFFSET=0x64646464        result[19]=0x0100
ABS_OFFSET=0x68686868        result[1A]=0x0111
ABS_OFFSET=0x6C6C6C6C        result[1B]=0x1111
ABS_OFFSET=0x70707070        result[1C]=0x1111
ABS_OFFSET=0x74747474        result[1D]=0x1111
ABS_OFFSET=0x78787878        result[1E]=0x1111
ABS_OFFSET=0x7C7C7C7C        result[1F]=0x1111

Byte 0: (0x08 - 0x64), middle value:0x36
Byte 1: (0x10 - 0x64), middle value:0x3a
Byte 2: (0x00 - 0x50), middle value:0x28
Byte 3: (0x0c - 0x68), middle value:0x3a

MMDC0 MPWRDLCTL = 0x34343636,MMDC1 MPWRDLCTL = 0x3A283A36


   MMDC registers updated from calibration

   Read calibration
   MPRDDLCTL PHY0 (0x021b0848) = 0x3E363A36
   MPRDDLCTL PHY1 (0x021b4848) = 0x3C38343E

   Write calibration
   MPWRDLCTL PHY0 (0x021b0850) = 0x34343636
   MPWRDLCTL PHY1 (0x021b4850) = 0x3A283A36


Success: DDR calibration completed!!!

使用特权

评论回复
板凳
秋水一梦|  楼主 | 2016-3-1 18:17 | 只看该作者
DCD config:

/*
* Copyright (C) 2011-2014 Freescale Semiconductor, Inc.
* Jason Liu <r64343@freescale.com>
*
* SPDX-License-Identifier:        GPL-2.0+
*
* Refer doc/README.imximage for more details about how-to configure
* and create imximage boot image
*
* The syntax is taken as close as possible with the kwbimage
*/

#define __ASSEMBLY__
#include <config.h>
/* image version */
IMAGE_VERSION 2

/*
* Boot Device : one of spi, sd, sata
* the board has no nand and eimnor
* spinor: flash_offset: 0x0400
* sata:   flash_offset: 0x0400
* sd/mmc: flash_offset: 0x0400
*/

/* the same flash_offset as sd */
BOOT_FROM      sd

#ifdef CONFIG_USE_PLUGIN
/*PLUGIN    plugin-binary-file    IRAM_FREE_START_ADDR*/
PLUGIN        board/freescale/mx6sabresd/plugin.bin 0x00907000
#else

#ifdef CONFIG_SECURE_BOOT
CSF 0x2000
#endif

/*
* Device Configuration Data (DCD)
*
* Each entry must have the format:
* Addr-type           Address        Value
*
* where:
*      Addr-type register length (1,2 or 4 bytes)
*      Address   absolute address of the register
*      value     value to be stored in the register
*/

//=============================================================================                       
// Enable all clocks (they are disabled by ROM code)                       
//=============================================================================                       
DATA 4, 0x020c4068, 0xffffffff       
DATA 4, 0x020c406c, 0xffffffff       
DATA 4, 0x020c4070, 0xffffffff       
DATA 4, 0x020c4074, 0xffffffff       
DATA 4, 0x020c4078, 0xffffffff       
DATA 4, 0x020c407c, 0xffffffff       
DATA 4, 0x020c4080, 0xffffffff       
DATA 4, 0x020c4084, 0xffffffff       

DATA 4, 0x020c4018, 0x00060324         //DDR clk to 400MHz       
                               
// Switch PL301_FAST2 to DDR Dual-channel mapping                               
//setmem /32         0x00B00000 =         0x1               
DATA 4 0x00b00000 0x00000001
                               
//=============================================================================                               
// IOMUX                               
//=============================================================================                               
//DDR IO TYPE:                               
DATA 4, 0x020e0798, 0x00080000        // IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE        
DATA 4, 0x020e0758, 0x00000000        // IOMUXC_SW_PAD_CTL_GRP_DDRPKE        
                               
//CLOCK:                               
DATA 4, 0x020e0588, 0x00000038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK_0       
DATA 4, 0x020e0594, 0x00000038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK_1       
                               
//ADDRESS:                               
DATA 4, 0x020e056c, 0x00000038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_CAS       
DATA 4, 0x020e0578, 0x00000038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_RAS       
DATA 4, 0x020e074c, 0x00000038        // IOMUXC_SW_PAD_CTL_GRP_ADDDS        
                               
//Control:                               
DATA 4, 0x020e057c, 0x00000038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_RESET       
DATA 4, 0x020e058c, 0x00000000        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDBA2 - DSE can be configured using Group Control Register: IOMUXC_SW_PAD_CTL_GRP_CTLDS       
DATA 4, 0x020e059c, 0x00000038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT0       
DATA 4, 0x020e05a0, 0x00000038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT1       
DATA 4, 0x020e078c, 0x00000038        // IOMUXC_SW_PAD_CTL_GRP_CTLDS        
                               
//Data Strobes:                               
DATA 4, 0x020e0750, 0x00020000        // IOMUXC_SW_PAD_CTL_GRP_DDRMODE_CTL        
DATA 4, 0x020e05a8, 0x00003038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS0        
DATA 4, 0x020e05b0, 0x00003038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS1        
DATA 4, 0x020e0524, 0x00003038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS2        
DATA 4, 0x020e051c, 0x00003038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS3        
DATA 4, 0x020e0518, 0x00003038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS4        
DATA 4, 0x020e050c, 0x00003038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS5        
DATA 4, 0x020e05b8, 0x00003038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS6        
DATA 4, 0x020e05c0, 0x00003038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS7        
                               
//Data:                               
DATA 4, 0x020e0774, 0x00020000        // IOMUXC_SW_PAD_CTL_GRP_DDRMODE       
DATA 4, 0x020e0784, 0x00000038        // IOMUXC_SW_PAD_CTL_GRP_B0DS        
DATA 4, 0x020e0788, 0x00000038        // IOMUXC_SW_PAD_CTL_GRP_B1DS        
DATA 4, 0x020e0794, 0x00000038        // IOMUXC_SW_PAD_CTL_GRP_B2DS        
DATA 4, 0x020e079c, 0x00000038        // IOMUXC_SW_PAD_CTL_GRP_B3DS        
DATA 4, 0x020e07a0, 0x00000038        // IOMUXC_SW_PAD_CTL_GRP_B4DS        
DATA 4, 0x020e07a4, 0x00000038        // IOMUXC_SW_PAD_CTL_GRP_B5DS        
DATA 4, 0x020e07a8, 0x00000038        // IOMUXC_SW_PAD_CTL_GRP_B6DS        
DATA 4, 0x020e0748, 0x00000038        // IOMUXC_SW_PAD_CTL_GRP_B7DS        
                               
DATA 4, 0x020e05ac, 0x00000038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM0       
DATA 4, 0x020e05b4, 0x00000038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM1       
DATA 4, 0x020e0528, 0x00000038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM2       
DATA 4, 0x020e0520, 0x00000038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM3       
DATA 4, 0x020e0514, 0x00000038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM4       
DATA 4, 0x020e0510, 0x00000038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM5       
DATA 4, 0x020e05bc, 0x00000038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM6       
DATA 4, 0x020e05c4, 0x00000038        // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM7       
                               
                               
//=============================================================================                               
// DDR Controller Registers                               
//=============================================================================                               
// Manufacturer:        Micron                       
// Device Part Number:        EDB8132B4PM                       
// Clock Freq.:         400MHz                       
// MMDC channels:         MMDC0 & MMDC1                       
// Density per CS in Gb:         4                       
// Chip Selects used:        2                       
// Number of Banks:        8                       
// Row address:            14                       
// Column address:         10                       
// Data bus width        2x32                       
//=============================================================================                               
DATA 4, 0x021b001c, 0x00008000        // MMDC0_MDSCR, set the Configuration request bit during MMDC set up       
DATA 4, 0x021b401c, 0x00008000        // MMDC1_MDSCR, set the Configuration request bit during MMDC set up       
                               
DATA 4, 0x021b085c, 0x1B4700C7        //MMDC0_MPZQLP2CTL,LPDDR2 ZQ params       
DATA 4, 0x021b485c, 0x1B4700C7        //MMDC1_MPZQLP2CTL,LPDDR2 ZQ params       

//=============================================================================                               
// Calibration setup.                               
//=============================================================================                               
DATA 4, 0x021b0800, 0xA1390003        // DDR_PHY_P0_MPZQHWCTRL, enable both one-time & periodic HW ZQ calibration.       
                               
//ca bus abs delay                               
DATA 4, 0x021b0890, 0x00500000        // values of 20,40,50,60,7f tried. no difference seen       
DATA 4, 0x021b4890, 0x00500000        // values of 20,40,50,60,7f tried. no difference seen       
                               
//Read calibration                               
DATA 4, 0x021b0848, 0x3C383A36        // MPRDDLCTL PHY0       
DATA 4, 0x021b4848, 0x3A38343E        // MPRDDLCTL PHY1       
                               
//Write calibration                                                    
DATA 4, 0x021b0850, 0x34343636        // MPWRDLCTL PHY0       
DATA 4, 0x021b4850, 0x38283A34        // MPWRDLCTL PHY1       
//dqs gating dis                               
DATA 4, 0x021b083c, 0x20000000               
DATA 4, 0x021b0840, 0x00000000               
DATA 4, 0x021b483c, 0x20000000               
DATA 4, 0x021b4840, 0x00000000               
                               
//read data bit delay: (3 is the reccommended default value, although out of reset value is 0)                               
DATA 4, 0x021b081c, 0x33333333        // DDR_PHY_P0_MPREDQBY0DL3       
DATA 4, 0x021b0820, 0x33333333        // DDR_PHY_P0_MPREDQBY1DL3       
DATA 4, 0x021b0824, 0x33333333        // DDR_PHY_P0_MPREDQBY2DL3       
DATA 4, 0x021b0828, 0x33333333        // DDR_PHY_P0_MPREDQBY3DL3       
DATA 4, 0x021b481c, 0x33333333        // DDR_PHY_P1_MPREDQBY0DL3       
DATA 4, 0x021b4820, 0x33333333        // DDR_PHY_P1_MPREDQBY1DL3       
DATA 4, 0x021b4824, 0x33333333        // DDR_PHY_P1_MPREDQBY2DL3       
DATA 4, 0x021b4828, 0x33333333        // DDR_PHY_P1_MPREDQBY3DL3       
//write data bit delay: (3 is the reccommended default value, although out of reset value is 0)                               
DATA 4, 0x021b082c, 0xF3333333        // DDR_PHY_P0_MPREDQBY0DL3       
DATA 4, 0x021b0830, 0xF3333333        // DDR_PHY_P0_MPREDQBY1DL3       
DATA 4, 0x021b0834, 0xF3333333        // DDR_PHY_P0_MPREDQBY2DL3       
DATA 4, 0x021b0838, 0xF3333333        // DDR_PHY_P0_MPREDQBY3DL3       
DATA 4, 0x021b482c, 0xF3333333        // DDR_PHY_P1_MPREDQBY0DL3       
DATA 4, 0x021b4830, 0xF3333333        // DDR_PHY_P1_MPREDQBY1DL3       
DATA 4, 0x021b4834, 0xF3333333        // DDR_PHY_P1_MPREDQBY2DL3       
DATA 4, 0x021b4838, 0xF3333333        // DDR_PHY_P1_MPREDQBY3DL3       
                               
//For i.mx6qd parts of versions A & B (v1.0, v1.1), uncomment the following lines. For version C (v1.2), keep commented                               
//DATA 4, 0x021b08c0, 0x24911492        // fine tune SDCLK duty cyc to low - seen to improve measured duty cycle of i.mx6       
//DATA 4, 0x021b48c0, 0x24911492               
                               
// Complete calibration by forced measurement:                                                 
DATA 4, 0x021b08b8, 0x00000800        // DDR_PHY_P0_MPMUR0, frc_msr       
DATA 4, 0x021b48b8, 0x00000800        // DDR_PHY_P0_MPMUR0, frc_msr       
//=============================================================================                               
// Calibration setup end                               
//=============================================================================                               
                               
// Channel0 - startng address 0x80000000                               
DATA 4, 0x021b0004, 0x00020036        // MMDC0_MDPDC       
DATA 4, 0x021b0008, 0x00000000        // MMDC0_MDOTC       
DATA 4, 0x021b000c, 0x33374135        // MMDC0_MDCFG0       
DATA 4, 0x021b0010, 0x00100A83        // MMDC0_MDCFG1       
DATA 4, 0x021b0014, 0x00000093        // MMDC0_MDCFG2       
                               
//MDMISC: RALAT kept to the high level of 5.                                
//MDMISC: consider reducing RALAT if your 528MHz board design allow that. Lower RALAT benefits:                                
//a. better operation at low frequency, for LPDDR2 freq < 100MHz, change RALAT to 3                               
//b. Small performence improvment                                
DATA 4, 0x021b0018, 0x0000174C        // MMDC0_MDMISC       
DATA 4, 0x021b001c, 0x00008000        // MMDC0_MDSCR, set the Configuration request bit during MMDC set up       
DATA 4, 0x021b002c, 0x0F9F26D2        // MMDC0_MDRWD       
DATA 4, 0x021b0030, 0x00000010        // MMDC0_MDOR       
DATA 4, 0x021b0038, 0x00190778        // MMDC0_MDCFG3LP       
//DATA 4, 0x021b0040, 0x0000004F        // Chan0 CS0_END        
DATA 4, 0x021b0040, 0x00000053        // Chan0 CS0_END        
DATA 4, 0x021b0400, 0x11420000        // MMDC0_MAARCR ADOPT optimized priorities. Dyn jump disabled       
DATA 4, 0x021b0000, 0xC3110000        // MMDC0_MDCTL       
                               
// Channel1 - starting address 0x10000000                               
DATA 4, 0x021b4004, 0x00020036        // MMDC1_MDPDC       
DATA 4, 0x021b4008, 0x00000000        // MMDC1_MDOTC       
DATA 4, 0x021b400c, 0x33374135        // MMDC1_MDCFG0       
DATA 4, 0x021b4010, 0x00100A83        // MMDC1_MDCFG1       
DATA 4, 0x021b4014, 0x00000093        // MMDC1_MDCFG2       
                               
//MDMISC: RALAT kept to the high level of 5.                                
//MDMISC: consider reducing RALAT if your 528MHz board design allow that. Lower RALAT benefits:                                
//a. better operation at low frequency, for LPDDR2 freq < 100MHz, change RALAT to 3                               
//b. Small performence improvment                                
DATA 4, 0x021b4018, 0x0000174C        // MMDC1_MDMISC       
DATA 4, 0x021b401c, 0x00008000        // MMDC1_MDSCR, set the Configuration request bit during MMDC set up       
DATA 4, 0x021b402c, 0x0F9F26D2        // MMDC1_MDRWD       
DATA 4, 0x021b4030, 0x00000010        // MMDC1_MDOR       
DATA 4, 0x021b4038, 0x00190778        // MMDC1_MDCFG3LP       
DATA 4, 0x021b4040, 0x00000017        // Chan1 CS0_END        
DATA 4, 0x021b4040, 0x00000013        // Chan1 CS0_END        
//DATA 4, 0x021b4400, 0x11420000        // MMDC1_MAARCR ADOPT optimized priorities. Dyn jump disabled       
DATA 4, 0x021b4000, 0xC3110000        // MMDC1_MDCTL       
                               
// Channel0 : Configure DDR device:                                     
//CS0                               
DATA 4, 0x021b001c, 0x003F8030        // MRW: BA=0 CS=0 MR_ADDR=63 MR_OP=0       
DATA 4, 0x021b001c, 0xFF0A8030        // MRW: BA=0 CS=0 MR_ADDR=10 MR_OP=ff       
DATA 4, 0x021b001c, 0x82018030        // MRW: BA=0 CS=0 MR_ADDR=1  MR_OP=c2       
DATA 4, 0x021b001c, 0x06028030        // MRW: BA=0 CS=0 MR_ADDR=2  MR_OP=6. tcl=8, tcwl=4       
DATA 4, 0x021b001c, 0x01038030        // MRW: BA=0 CS=0 MR_ADDR=3  MR_OP=2.drive=240/6       
//CS1                               
DATA 4, 0x021b001c, 0x003F8038        // MRW: BA=0 CS=1 MR_ADDR=63 MR_OP=0       
DATA 4, 0x021b001c, 0xFF0A8038        // MRW: BA=0 CS=1 MR_ADDR=10 MR_OP=ff       
DATA 4, 0x021b001c, 0x82018038        // MRW: BA=0 CS=1 MR_ADDR=1  MR_OP=c2       
DATA 4, 0x021b001c, 0x06028038        // MRW: BA=0 CS=1 MR_ADDR=2  MR_OP=6. tcl=8, tcwl=4       
DATA 4, 0x021b001c, 0x01038038        // MRW: BA=0 CS=1 MR_ADDR=3  MR_OP=2.drive=240/6       
                               
// Channel1 : Configure DDR device:                                     
//CS0                               
DATA 4, 0x021b401c, 0x003F8030        // MRW: BA=0 CS=0 MR_ADDR=63 MR_OP=0       
DATA 4, 0x021b401c, 0xFF0A8030        // MRW: BA=0 CS=0 MR_ADDR=10 MR_OP=ff       
DATA 4, 0x021b401c, 0x82018030        // MRW: BA=0 CS=0 MR_ADDR=1  MR_OP=c2       
DATA 4, 0x021b401c, 0x06028030        // MRW: BA=0 CS=0 MR_ADDR=2  MR_OP=6. tcl=8, tcwl=4       
DATA 4, 0x021b401c, 0x01038030        // MRW: BA=0 CS=0 MR_ADDR=3  MR_OP=2.drive=240/6       
//CS1                               
DATA 4, 0x021b401c, 0x003F8038        // MRW: BA=0 CS=1 MR_ADDR=63 MR_OP=0       
DATA 4, 0x021b401c, 0xFF0A8038        // MRW: BA=0 CS=1 MR_ADDR=10 MR_OP=ff       
DATA 4, 0x021b401c, 0x82018038        // MRW: BA=0 CS=1 MR_ADDR=1  MR_OP=c2       
DATA 4, 0x021b401c, 0x06028038        // MRW: BA=0 CS=1 MR_ADDR=2  MR_OP=6. tcl=8, tcwl=4       
DATA 4, 0x021b401c, 0x01038038        // MRW: BA=0 CS=1 MR_ADDR=3  MR_OP=2.drive=240/6       
                               
DATA 4, 0x021b0800, 0xA1390003        // DDR_PHY_P0_MPZQHWCTRL, enable both one-time & periodic HW ZQ calibration.       
                               
DATA 4, 0x021b0020, 0x00001800        // MMDC0_MDREF       
DATA 4, 0x021b4020, 0x00001800        // MMDC1_MDREF       
                               
DATA 4, 0x021b0818, 0x00000000        // DDR_PHY_P0_MPODTCTRL       
DATA 4, 0x021b4818, 0x00000000        // DDR_PHY_P1_MPODTCTRL       
                               
DATA 4, 0x021b0004, 0x00025576        // MMDC0_MDPDC now SDCTL power down enabled       
DATA 4, 0x021b4004, 0x00025576        // MMDC0_MDPDC now SDCTL power down enabled       
                               
DATA 4, 0x021b0404, 0x00011006        // MMDC0_MAPSR ADOPT power down enabled, MMDC will enter automatically to self-refresh while the number of idle cycle reached.       
DATA 4, 0x021b4404, 0x00011006        // MMDC0_MAPSR ADOPT power down enabled, MMDC will enter automatically to self-refresh while the number of idle cycle reached.       
                               
DATA 4, 0x021b001c, 0x00000000        // MMDC0_MDSCR, clear this register (especially the configuration bit as initialization is complete)       
DATA 4, 0x021b401c, 0x00000000        // MMDC0_MDSCR, clear this register (especially the configuration bit as initialization is complete)       

/***
  The following lines are from sabresd config and need to be changed according
  to Yilian configurations.
***/

/* set the default clock gate to save power */
// DATA 4, 0x020c4068, 0x00C03F3F
// DATA 4, 0x020c406c, 0x0030FC03
// DATA 4, 0x020c4070, 0x0FFFC000
// DATA 4, 0x020c4074, 0x3FF00000
// DATA 4, 0x020c4078, 0x00FFF300
// DATA 4, 0x020c407c, 0x0F0000F3
// DATA 4, 0x020c4080, 0x000003FF

/* enable AXI cache for VDOA/VPU/IPU */
// DATA 4, 0x020e0010, 0xF00000CF
/* set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7 */
// DATA 4, 0x020e0018, 0x007F007F
// DATA 4, 0x020e001c, 0x007F007F

/*
* Setup CCM_CCOSR register as follows:
*
* cko1_en  = 1           --> CKO1 enabled
* cko1_div = 111  --> divide by 8
* cko1_sel = 1011 --> ahb_clk_root
*
* This sets CKO1 at ahb_clk_root/8 = 132/8 = 16.5 MHz
*/
// DATA 4, 0x020c4060, 0x000000fb
#endif

使用特权

评论回复
地板
mini1986| | 2016-3-4 14:28 | 只看该作者
没调过ddr2,调过ddr3,不过测试能过的话,下载也应该没有问题......
查查是不是mfg没有配置好......

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

18

帖子

0

粉丝