diff --git a/litex/soc/software/liblitedram/sdram.c b/litex/soc/software/liblitedram/sdram.c index 0714d2d33..c5a552550 100644 --- a/litex/soc/software/liblitedram/sdram.c +++ b/litex/soc/software/liblitedram/sdram.c @@ -794,6 +794,22 @@ int sdrlevel(void) } #endif +void sdrcal(void) +{ +#ifdef CSR_DDRPHY_BASE +#if CSR_DDRPHY_EN_VTC_ADDR + ddrphy_en_vtc_write(0); +#endif +#if defined(SDRAM_PHY_WRITE_LEVELING_CAPABLE) || defined(SDRAM_PHY_READ_LEVELING_CAPABLE) + sdrlevel(); +#endif +#if CSR_DDRPHY_EN_VTC_ADDR + ddrphy_en_vtc_write(1); +#endif +#endif + sdrhw(); +} + int sdrinit(void) { printf("Initializing DRAM @0x%08x...\n", MAIN_RAM_BASE); @@ -810,18 +826,7 @@ int sdrinit(void) #endif sdrsw(); init_sequence(); -#ifdef CSR_DDRPHY_BASE -#if CSR_DDRPHY_EN_VTC_ADDR - ddrphy_en_vtc_write(0); -#endif -#if defined(SDRAM_PHY_WRITE_LEVELING_CAPABLE) || defined(SDRAM_PHY_READ_LEVELING_CAPABLE) - sdrlevel(); -#endif -#if CSR_DDRPHY_EN_VTC_ADDR - ddrphy_en_vtc_write(1); -#endif -#endif - sdrhw(); + sdrcal(); if(!memtest((unsigned int *) MAIN_RAM_BASE, MAIN_RAM_SIZE)) { #ifdef CSR_DDRCTRL_BASE ddrctrl_init_done_write(1); diff --git a/litex/soc/software/liblitedram/sdram.h b/litex/soc/software/liblitedram/sdram.h index dbde558fa..4b2efca5f 100644 --- a/litex/soc/software/liblitedram/sdram.h +++ b/litex/soc/software/liblitedram/sdram.h @@ -20,6 +20,7 @@ int write_level(void); int sdrlevel(void); +void sdrcal(void); int sdrinit(void); #endif /* __SDRAM_H */