static void lpddr2_reg_config(struct ddramc_register *ddramc_config) { ddramc_config->mdr = (AT91C_DDRC2_DBW_32_BITS | AT91C_DDRC2_MD_LPDDR2_SDRAM); ddramc_config->cr = (AT91C_DDRC2_NC_DDR10_SDR9 | AT91C_DDRC2_NR_14 | AT91C_DDRC2_CAS_3 | AT91C_DDRC2_ZQ_SHORT | AT91C_DDRC2_NB_BANKS_8 | AT91C_DDRC2_UNAL_SUPPORTED); ddramc_config->lpddr2_lpr = AT91C_LPDDRC2_DS(0x03); #ifdef CONFIG_BUS_SPEED_166MHZ /* * The MT42128M32 refresh window: 32ms * Required number of REFRESH commands(MIN): 8192 * (32ms / 8192) * 166MHz = 0x288. */ ddramc_config->rtr = 0x288; /* 90n short calibration: ZQCS */ ddramc_config->tim_calr = AT91C_DDRC2_ZQCS(12); ddramc_config->t0pr = (AT91C_DDRC2_TRAS_(7) | AT91C_DDRC2_TRCD_(3) | AT91C_DDRC2_TWR_(3) | AT91C_DDRC2_TRC_(11) | AT91C_DDRC2_TRP_(4) | AT91C_DDRC2_TRRD_(2) | AT91C_DDRC2_TWTR_(2) | AT91C_DDRC2_TMRD_(3)); ddramc_config->t1pr = (AT91C_DDRC2_TRFC_(35) | AT91C_DDRC2_TXSNR_(37) | AT91C_DDRC2_TXSRD_(0) | AT91C_DDRC2_TXP_(2)); ddramc_config->t2pr = (AT91C_DDRC2_TXARD_(0) | AT91C_DDRC2_TXARDS_(0) | AT91C_DDRC2_TRPA_(0) | AT91C_DDRC2_TRTP_(2) | AT91C_DDRC2_TFAW_(9)); #else #error "No CLK setting defined" #endif }
static void lpddr2_reg_config(struct ddramc_register *ddramc_config) { ddramc_config->mdr = (AT91C_DDRC2_DBW_32_BITS | AT91C_DDRC2_MD_LPDDR2_SDRAM); ddramc_config->cr = (AT91C_DDRC2_NC_DDR10_SDR9 | AT91C_DDRC2_NR_14 | AT91C_DDRC2_CAS_3 | AT91C_DDRC2_ZQ_SHORT | AT91C_DDRC2_NB_BANKS_8 | AT91C_DDRC2_UNAL_SUPPORTED); ddramc_config->lpddr2_lpr = AT91C_LPDDRC2_DS(0x03); /* 90n short calibration: ZQCS */ ddramc_config->tim_calr = AT91C_DDRC2_ZQCS(12); /* * The MT42128M32 refresh window: 32ms * Required number of REFRESH commands(MIN): 8192 * (32ms / 8192) * 132MHz = 514 i.e. 0x202 */ ddramc_config->rtr = 0x202; ddramc_config->cal_mr4r = AT91C_DDRC2_COUNT_CAL(0xC852); ddramc_config->t0pr = (AT91C_DDRC2_TRAS_(6) | AT91C_DDRC2_TRCD_(2) | AT91C_DDRC2_TWR_(3) | AT91C_DDRC2_TRC_(8) | AT91C_DDRC2_TRP_(2) | AT91C_DDRC2_TRRD_(2) | AT91C_DDRC2_TWTR_(2) | AT91C_DDRC2_TMRD_(3)); ddramc_config->t1pr = (AT91C_DDRC2_TXP_(2) | AT91C_DDRC2_TXSNR_(18) | AT91C_DDRC2_TRFC_(17)); ddramc_config->t2pr = (AT91C_DDRC2_TFAW_(8) | AT91C_DDRC2_TRTP_(2) | AT91C_DDRC2_TRPA_(3) | AT91C_DDRC2_TXARDS_(1) | AT91C_DDRC2_TXARD_(1)); }
static void lpddr3_reg_config(struct ddramc_register *ddramc_config) { ddramc_config->mdr = (AT91C_DDRC2_DBW_32_BITS | AT91C_DDRC2_MD_LPDDR3_SDRAM); ddramc_config->cr = (AT91C_DDRC2_NC_DDR10_SDR9 | AT91C_DDRC2_NR_14 | AT91C_DDRC2_CAS_3 | AT91C_DDRC2_ZQ_INIT | AT91C_DDRC2_NB_BANKS_8 | AT91C_DDRC2_DECOD_SEQUENTIAL | AT91C_DDRC2_UNAL_SUPPORTED); ddramc_config->lpddr2_lpr = AT91C_LPDDRC2_DS(0x04); #ifdef CONFIG_BUS_SPEED_166MHZ /* The low-power DDR3-SDRAM device requires a refresh every 3.9 us.*/ ddramc_config->rtr = 0x288; ddramc_config->t0pr = (AT91C_DDRC2_TRAS_(7) | AT91C_DDRC2_TRCD_(3) | AT91C_DDRC2_TWR_(3) | AT91C_DDRC2_TRC_(11) | AT91C_DDRC2_TRP_(4) | AT91C_DDRC2_TRRD_(2) | AT91C_DDRC2_TWTR_(4) | AT91C_DDRC2_TMRD_(10)); ddramc_config->t1pr = (AT91C_DDRC2_TRFC_(35) | AT91C_DDRC2_TXSNR_(37) | AT91C_DDRC2_TXSRD_(0) | AT91C_DDRC2_TXP_(2)); ddramc_config->t2pr = (AT91C_DDRC2_TXARD_(0) | AT91C_DDRC2_TXARDS_(0) | AT91C_DDRC2_TRPA_(0) | AT91C_DDRC2_TRTP_(4) | AT91C_DDRC2_TFAW_(9)); #else #error "No CLK setting defined" #endif }