Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/litex/soc/software/bios/sdram.c b/litex/soc/software/bios/sdram.c
- index f0c12edf..19303065 100644
- --- a/litex/soc/software/bios/sdram.c
- +++ b/litex/soc/software/bios/sdram.c
- @@ -22,6 +22,8 @@
- #include "sdram.h"
- +#define CSR_DATA_BYTES CONFIG_CSR_DATA_WIDTH/8
- +
- // FIXME(hack): If we don't have main ram, just target the sram instead.
- #ifndef MAIN_RAM_BASE
- #define MAIN_RAM_BASE SRAM_BASE
- @@ -227,15 +229,15 @@ void sdrwr(char *startaddr)
- #if defined (USDDRPHY)
- #define ERR_DDRPHY_DELAY 512
- #define ERR_DDRPHY_BITSLIP 8
- -#define NBMODULES DFII_PIX_DATA_SIZE/2
- +#define NBMODULES DFII_PIX_DATA_SIZE*CSR_DATA_BYTES/2
- #elif defined (ECP5DDRPHY)
- #define ERR_DDRPHY_DELAY 8
- #define ERR_DDRPHY_BITSLIP 1
- -#define NBMODULES DFII_PIX_DATA_SIZE/4
- +#define NBMODULES DFII_PIX_DATA_SIZE*CSR_DATA_BYTES/4
- #else
- #define ERR_DDRPHY_DELAY 32
- #define ERR_DDRPHY_BITSLIP 8
- -#define NBMODULES DFII_PIX_DATA_SIZE/2
- +#define NBMODULES DFII_PIX_DATA_SIZE*CSR_DATA_BYTES/2
- #endif
- #ifdef CSR_DDRPHY_WLEVEL_EN_ADDR
- @@ -444,7 +446,8 @@ static void read_bitslip_inc(char m)
- static int read_level_scan(int module, int bitslip)
- {
- unsigned int prv;
- - unsigned char prs[DFII_NPHASES*DFII_PIX_DATA_SIZE];
- + //unsigned char prs[DFII_NPHASES*DFII_PIX_DATA_SIZE];
- + unsigned int prs[DFII_NPHASES*DFII_PIX_DATA_SIZE];
- int p, i, j;
- int score;
- @@ -489,10 +492,17 @@ static int read_level_scan(int module, int bitslip)
- cdelay(15);
- working = 1;
- for(p=0;p<DFII_NPHASES;p++) {
- + unsigned int mask = 0x00ff00ff << (module * 8);
- + unsigned int got = MMPTR(sdram_dfii_pix_rddata_addr[p]);
- + unsigned int exp = prs[DFII_PIX_DATA_SIZE*p];
- + if ((exp & mask) != (got & mask))
- + working = 0;
- +/*
- if(MMPTR(sdram_dfii_pix_rddata_addr[p]+DFII_ADDR_SHIFT*(NBMODULES-module-1)) != prs[DFII_PIX_DATA_SIZE*p+(NBMODULES-module-1)])
- working = 0;
- if(MMPTR(sdram_dfii_pix_rddata_addr[p]+DFII_ADDR_SHIFT*(2*NBMODULES-module-1)) != prs[DFII_PIX_DATA_SIZE*p+2*NBMODULES-module-1])
- working = 0;
- +*/
- }
- #ifdef ECP5DDRPHY
- if (((ddrphy_burstdet_seen_read() >> module) & 0x1) != 1)
- @@ -517,7 +527,8 @@ static int read_level_scan(int module, int bitslip)
- static void read_level(int module)
- {
- unsigned int prv;
- - unsigned char prs[DFII_NPHASES*DFII_PIX_DATA_SIZE];
- + //unsigned char prs[DFII_NPHASES*DFII_PIX_DATA_SIZE];
- + unsigned int prs[DFII_NPHASES*DFII_PIX_DATA_SIZE];
- int p, i, j;
- int working;
- int delay, delay_min, delay_max;
- @@ -560,10 +571,17 @@ static void read_level(int module)
- cdelay(15);
- working = 1;
- for(p=0;p<DFII_NPHASES;p++) {
- + unsigned int mask = 0x00ff00ff << (module * 8);
- + unsigned int got = MMPTR(sdram_dfii_pix_rddata_addr[p]);
- + unsigned int exp = prs[DFII_PIX_DATA_SIZE*p];
- + if ((exp & mask) != (got & mask))
- + working = 0;
- +/*
- if(MMPTR(sdram_dfii_pix_rddata_addr[p]+DFII_ADDR_SHIFT*(NBMODULES-module-1)) != prs[DFII_PIX_DATA_SIZE*p+(NBMODULES-module-1)])
- working = 0;
- if(MMPTR(sdram_dfii_pix_rddata_addr[p]+DFII_ADDR_SHIFT*(2*NBMODULES-module-1)) != prs[DFII_PIX_DATA_SIZE*p+2*NBMODULES-module-1])
- working = 0;
- +*/
- }
- #ifdef ECP5DDRPHY
- if (((ddrphy_burstdet_seen_read() >> module) & 0x1) != 1)
- @@ -598,10 +616,17 @@ static void read_level(int module)
- cdelay(15);
- working = 1;
- for(p=0;p<DFII_NPHASES;p++) {
- + unsigned int mask = 0x00ff00ff << (module * 8);
- + unsigned int got = MMPTR(sdram_dfii_pix_rddata_addr[p]);
- + unsigned int exp = prs[DFII_PIX_DATA_SIZE*p];
- + if ((exp & mask) != (got & mask))
- + working = 0;
- +/*
- if(MMPTR(sdram_dfii_pix_rddata_addr[p]+DFII_ADDR_SHIFT*(NBMODULES-module-1)) != prs[DFII_PIX_DATA_SIZE*p+(NBMODULES-module-1)])
- working = 0;
- if(MMPTR(sdram_dfii_pix_rddata_addr[p]+DFII_ADDR_SHIFT*(2*NBMODULES-module-1)) != prs[DFII_PIX_DATA_SIZE*p+2*NBMODULES-module-1])
- working = 0;
- +*/
- }
- #ifdef ECP5DDRPHY
- if (((ddrphy_burstdet_seen_read() >> module) & 0x1) != 1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement