From 4e451a78d69c26f6b4024700f1a09fd3d4d4bd05 Mon Sep 17 00:00:00 2001 From: Florent Kermarrec Date: Wed, 27 Apr 2016 12:33:44 +0200 Subject: [PATCH] soc/software/bios/sdram: add sdrlevel_artix7 (bitslip and delays have to be found manually) --- litex/soc/software/bios/sdram.c | 65 +++++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 15 deletions(-) diff --git a/litex/soc/software/bios/sdram.c b/litex/soc/software/bios/sdram.c index 4bc6832d..8bc3bb06 100644 --- a/litex/soc/software/bios/sdram.c +++ b/litex/soc/software/bios/sdram.c @@ -214,6 +214,7 @@ void sdrwloff(void) #define ERR_DDRPHY_DELAY 32 +#ifndef SDRAM_ISERDESE2_BITSLIP static int write_level(int *delay, int *high_skew) { int i; @@ -283,6 +284,11 @@ static int write_level(int *delay, int *high_skew) return ok; } +#else +static int write_level(int *delay, int *high_skew) +{ +} +#endif static void read_bitslip(int *delay, int *high_skew) { @@ -410,19 +416,6 @@ static void read_delays(void) printf("completed\n"); } -int sdrlevel(void) -{ - int delay[DFII_PIX_DATA_SIZE/2]; - int high_skew[DFII_PIX_DATA_SIZE/2]; - - if(!write_level(delay, high_skew)) - return 0; - read_bitslip(delay, high_skew); - read_delays(); - - return 1; -} - #endif /* CSR_DDRPHY_BASE */ static unsigned int seed_to_data_32(unsigned int seed, int random) @@ -563,14 +556,56 @@ int memtest(void) } } +int sdrlevel_generic(void) +{ + int delay[DFII_PIX_DATA_SIZE/2]; + int high_skew[DFII_PIX_DATA_SIZE/2]; + + if(!write_level(delay, high_skew)) + return 0; + read_bitslip(delay, high_skew); + read_delays(); + + return 1; +} + +static int sdrlevel_artix7(void) +{ + int bitslip, delay, module; + int i; + sdram_dfii_control_write(DFII_CONTROL_SEL); + for(module=0; module<8; module++) { + ddrphy_dly_sel_write(1<