bios: remove usddrphy debug (we'll use a specific debug firmware to fix the usddrphy corner cases).
This commit is contained in:
parent
98d1b45157
commit
95b57899cd
|
@ -68,7 +68,6 @@ class BaseSoC(SoCCore):
|
||||||
iodelay_clk_freq = 200e6,
|
iodelay_clk_freq = 200e6,
|
||||||
cmd_latency = 1)
|
cmd_latency = 1)
|
||||||
self.add_csr("ddrphy")
|
self.add_csr("ddrphy")
|
||||||
self.add_constant("USDDRPHY_DEBUG")
|
|
||||||
self.add_sdram("sdram",
|
self.add_sdram("sdram",
|
||||||
phy = self.ddrphy,
|
phy = self.ddrphy,
|
||||||
module = EDY4016A(sys_clk_freq, "1:4"),
|
module = EDY4016A(sys_clk_freq, "1:4"),
|
||||||
|
|
|
@ -11,12 +11,12 @@ CFLAGS += -DTFTP_SERVER_PORT=$(TFTP_SERVER_PORT)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
OBJECTS = isr.o \
|
OBJECTS = isr.o \
|
||||||
sdram.o \
|
sdram.o \
|
||||||
sdcard.o \
|
sdcard.o \
|
||||||
main.o \
|
main.o \
|
||||||
boot-helper.o \
|
boot-helper.o \
|
||||||
boot.o \
|
boot.o \
|
||||||
helpers.o \
|
helpers.o \
|
||||||
cmd_bios.o \
|
cmd_bios.o \
|
||||||
cmd_boot.o \
|
cmd_boot.o \
|
||||||
cmd_dram.o \
|
cmd_dram.o \
|
||||||
|
@ -24,7 +24,6 @@ OBJECTS = isr.o \
|
||||||
cmd_mem_access.o \
|
cmd_mem_access.o \
|
||||||
cmd_sdcard.o \
|
cmd_sdcard.o \
|
||||||
cmd_spi_flash.o \
|
cmd_spi_flash.o \
|
||||||
cmd_usddrphy.o
|
|
||||||
|
|
||||||
ifneq "$(or $(TERM_NO_COMPLETE),$(TERM_MINI))" ""
|
ifneq "$(or $(TERM_NO_COMPLETE),$(TERM_MINI))" ""
|
||||||
CFLAGS += -DTERM_NO_COMPLETE
|
CFLAGS += -DTERM_NO_COMPLETE
|
||||||
|
@ -70,7 +69,7 @@ bios.elf: $(BIOS_DIRECTORY)/linker.ld $(OBJECTS)
|
||||||
$(BP_LIBS) \
|
$(BP_LIBS) \
|
||||||
-lnet -lbase-nofloat -lcompiler_rt \
|
-lnet -lbase-nofloat -lcompiler_rt \
|
||||||
$(BP_FLAGS)
|
$(BP_FLAGS)
|
||||||
|
|
||||||
ifneq ($(OS),Windows_NT)
|
ifneq ($(OS),Windows_NT)
|
||||||
chmod -x $@
|
chmod -x $@
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -1,128 +0,0 @@
|
||||||
// SPDX-License-Identifier: BSD-Source-Code
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#include <generated/csr.h>
|
|
||||||
|
|
||||||
#include "../command.h"
|
|
||||||
#include "../helpers.h"
|
|
||||||
#include "../sdram.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Command "sdram_cdly"
|
|
||||||
*
|
|
||||||
* Set SDRAM clk/cmd delay
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifdef USDDRPHY_DEBUG
|
|
||||||
static void sdram_cdly(int nb_params, char **params)
|
|
||||||
{
|
|
||||||
unsigned int delay;
|
|
||||||
char *c;
|
|
||||||
|
|
||||||
if (nb_params < 1) {
|
|
||||||
printf("sdram_cdly <delay>");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
delay = strtoul(params[0], &c, 0);
|
|
||||||
if (*c != 0) {
|
|
||||||
printf("Incorrect delay");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ddrphy_cdly(delay);
|
|
||||||
}
|
|
||||||
|
|
||||||
define_command(sdram_cdly, sdram_cdly, "Set SDRAM clk/cmd delay", DDR_CMDS);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Command "sdram_cdly"
|
|
||||||
*
|
|
||||||
* Run SDRAM calibration
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifdef USDDRPHY_DEBUG
|
|
||||||
define_command(sdram_cal, sdram_cal, "Run SDRAM calibration", DDR_CMDS);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Command "sdram_mpr"
|
|
||||||
*
|
|
||||||
* Read SDRAM MPR
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifdef USDDRPHY_DEBUG
|
|
||||||
define_command(sdram_mpr, sdram_mpr, "Read SDRAM MPR", DDR_CMDS);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Command "sdram_mrwr"
|
|
||||||
*
|
|
||||||
* Write SDRAM mode registers
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifdef USDDRPHY_DEBUG
|
|
||||||
static void sdram_mrwr(int nb_params, char **params)
|
|
||||||
{
|
|
||||||
unsigned int reg;
|
|
||||||
unsigned int value;
|
|
||||||
char *c;
|
|
||||||
|
|
||||||
if (nb_params < 2) {
|
|
||||||
printf("sdram_mrwr <reg> <value>");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
reg = strtoul(params[0], &c, 0);
|
|
||||||
if (*c != 0) {
|
|
||||||
printf("Incorrect register value");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
value = strtoul(params[1], &c, 0);
|
|
||||||
if (*c != 0) {
|
|
||||||
printf("Incorrect value");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
sdrsw();
|
|
||||||
printf("Writing 0x%04x to SDRAM mode register %d\n", value, reg);
|
|
||||||
sdrmrwr(reg, value);
|
|
||||||
sdrhw();
|
|
||||||
}
|
|
||||||
|
|
||||||
define_command(sdram_mrwr, sdram_mrwr, "Write SDRAM mode registers", DDR_CMDS);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Command "sdram_cdly_scan"
|
|
||||||
*
|
|
||||||
* Enable/disable cdly scan
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifdef USDDRPHY_DEBUG
|
|
||||||
static void sdram_cdly_scan(int nb_params, char **params)
|
|
||||||
{
|
|
||||||
unsigned int value;
|
|
||||||
char *c;
|
|
||||||
|
|
||||||
if (nb_params < 1) {
|
|
||||||
printf("sdram_cdly_scan <value>");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
value = strtoul(params[0], &c, 0);
|
|
||||||
if (*c != 0) {
|
|
||||||
printf("Incorrect value");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
sdr_cdly_scan(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
define_command(sdram_cdly_scan, sdram_cdly_scan, "Enable/disable cdly scan", DDR_CMDS);
|
|
||||||
#endif
|
|
|
@ -166,7 +166,7 @@ void sdrwr(unsigned int addr)
|
||||||
|
|
||||||
#ifdef CSR_DDRPHY_BASE
|
#ifdef CSR_DDRPHY_BASE
|
||||||
|
|
||||||
#if defined(DDRPHY_CMD_DELAY) || defined(USDDRPHY_DEBUG)
|
#if defined(DDRPHY_CMD_DELAY)
|
||||||
void ddrphy_cdly(unsigned int delay) {
|
void ddrphy_cdly(unsigned int delay) {
|
||||||
printf("Setting clk/cmd delay to %d taps\n", delay);
|
printf("Setting clk/cmd delay to %d taps\n", delay);
|
||||||
#if CSR_DDRPHY_EN_VTC_ADDR
|
#if CSR_DDRPHY_EN_VTC_ADDR
|
||||||
|
@ -1048,93 +1048,4 @@ int sdrinit(void)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USDDRPHY_DEBUG
|
|
||||||
|
|
||||||
#define MPR0_SEL (0 << 0)
|
|
||||||
#define MPR1_SEL (1 << 0)
|
|
||||||
#define MPR2_SEL (2 << 0)
|
|
||||||
#define MPR3_SEL (3 << 0)
|
|
||||||
|
|
||||||
#define MPR_ENABLE (1 << 2)
|
|
||||||
|
|
||||||
#define MPR_READ_SERIAL (0 << 11)
|
|
||||||
#define MPR_READ_PARALLEL (1 << 11)
|
|
||||||
#define MPR_READ_STAGGERED (2 << 11)
|
|
||||||
|
|
||||||
void sdrcal(void)
|
|
||||||
{
|
|
||||||
#ifdef CSR_DDRPHY_BASE
|
|
||||||
#if CSR_DDRPHY_EN_VTC_ADDR
|
|
||||||
ddrphy_en_vtc_write(0);
|
|
||||||
#endif
|
|
||||||
sdrlevel();
|
|
||||||
#if CSR_DDRPHY_EN_VTC_ADDR
|
|
||||||
ddrphy_en_vtc_write(1);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
sdrhw();
|
|
||||||
}
|
|
||||||
|
|
||||||
void sdrmrwr(char reg, int value) {
|
|
||||||
sdram_dfii_pi0_address_write(value);
|
|
||||||
sdram_dfii_pi0_baddress_write(reg);
|
|
||||||
command_p0(DFII_COMMAND_RAS|DFII_COMMAND_CAS|DFII_COMMAND_WE|DFII_COMMAND_CS);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void sdrmpron(char mpr)
|
|
||||||
{
|
|
||||||
sdrmrwr(3, MPR_READ_SERIAL | MPR_ENABLE | mpr);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void sdrmproff(void)
|
|
||||||
{
|
|
||||||
sdrmrwr(3, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void sdrmpr(void)
|
|
||||||
{
|
|
||||||
int module, phase;
|
|
||||||
unsigned char buf[DFII_PIX_DATA_BYTES];
|
|
||||||
printf("Read SDRAM MPR...\n");
|
|
||||||
|
|
||||||
/* rst phy */
|
|
||||||
for(module=0; module<SDRAM_PHY_MODULES; module++) {
|
|
||||||
#ifdef SDRAM_PHY_WRITE_LEVELING_CAPABLE
|
|
||||||
write_delay_rst(module);
|
|
||||||
#endif
|
|
||||||
read_delay_rst(module);
|
|
||||||
read_bitslip_rst(module);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* software control */
|
|
||||||
sdrsw();
|
|
||||||
|
|
||||||
printf("Reads with MPR0 (0b01010101) enabled...\n");
|
|
||||||
sdrmpron(MPR0_SEL);
|
|
||||||
command_prd(DFII_COMMAND_CAS|DFII_COMMAND_CS|DFII_COMMAND_RDDATA);
|
|
||||||
cdelay(15);
|
|
||||||
for (module=0; module < SDRAM_PHY_MODULES; module++) {
|
|
||||||
printf("m%d: ", module);
|
|
||||||
for(phase=0; phase<SDRAM_PHY_PHASES; phase++) {
|
|
||||||
csr_rd_buf_uint8(sdram_dfii_pix_rddata_addr[phase],
|
|
||||||
buf, DFII_PIX_DATA_BYTES);
|
|
||||||
printf("%d", buf[ SDRAM_PHY_MODULES-module-1] & 0x1);
|
|
||||||
printf("%d", buf[2*SDRAM_PHY_MODULES-module-1] & 0x1);
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
}
|
|
||||||
sdrmproff();
|
|
||||||
|
|
||||||
/* hardware control */
|
|
||||||
sdrhw();
|
|
||||||
}
|
|
||||||
|
|
||||||
void sdr_cdly_scan(int enabled)
|
|
||||||
{
|
|
||||||
printf("Turning cdly scan %s\n", enabled ? "ON" : "OFF");
|
|
||||||
_write_level_cdly_scan = enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -25,11 +25,4 @@ int sdrinit(void);
|
||||||
void ddrphy_cdly(unsigned int delay);
|
void ddrphy_cdly(unsigned int delay);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USDDRPHY_DEBUG
|
|
||||||
void sdrcal(void);
|
|
||||||
void sdrmrwr(char reg, int value);
|
|
||||||
void sdrmpr(void);
|
|
||||||
void sdr_cdly_scan(int enabled);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __SDRAM_H */
|
#endif /* __SDRAM_H */
|
||||||
|
|
Loading…
Reference in New Issue