}
 
 /* DDR Self Refresh Counter (DDR_SR_CNTR) */
-static void set_ddr_sr_cntr(fsl_ddr_cfg_regs_t *ddr)
+static void set_ddr_sr_cntr(fsl_ddr_cfg_regs_t *ddr, unsigned int sr_it)
 {
-       unsigned int sr_it = 0; /* Self Refresh Idle Threshold */
-
+       /* Self Refresh Idle Threshold */
        ddr->ddr_sr_cntr = (sr_it & 0xF) << 16;
 }
 
        unsigned int i;
        unsigned int cas_latency;
        unsigned int additive_latency;
+       unsigned int sr_it;
 
        memset(ddr, 0, sizeof(fsl_ddr_cfg_regs_t));
 
                ? popts->additive_latency_override_value
                : common_dimm->additive_latency;
 
+       sr_it = (popts->auto_self_refresh_en)
+               ? popts->sr_it
+               : 0;
+
        /* Chip Select Memory Bounds (CSn_BNDS) */
        for (i = 0; i < CONFIG_CHIP_SELECTS_PER_CTRL; i++) {
                phys_size_t sa = 0;
        set_ddr_wrlvl_cntl(ddr);
 
        set_ddr_pd_cntl(ddr);
-       set_ddr_sr_cntr(ddr);
+       set_ddr_sr_cntr(ddr, sr_it);
 
        set_ddr_sdram_rcw_1(ddr);
        set_ddr_sdram_rcw_2(ddr);
 
        unsigned int bstopre;
        unsigned int tCKE_clock_pulse_width_ps; /* tCKE */
        unsigned int tFAW_window_four_activates_ps;     /* tFAW --  FOUR_ACT */
+
+       /* Automatic self refresh */
+       unsigned int auto_self_refresh_en;
+       unsigned int sr_it;
 } memctl_options_t;
 
 extern phys_size_t fsl_ddr_sdram(void);