sdramphy/bios: make sdrrd/sdrwr generic
This commit is contained in:
parent
cfc37a3fa5
commit
293ac09673
|
@ -4,10 +4,13 @@ def get_sdram_phy_header(sdram_phy):
|
|||
r = "#ifndef __GENERATED_SDRAM_PHY_H\n#define __GENERATED_SDRAM_PHY_H\n"
|
||||
r += "#include <hw/common.h>\n#include <generated/csr.h>\n#include <hw/flags.h>\n\n"
|
||||
|
||||
nphases = sdram_phy.phy_settings.nphases
|
||||
r += "#define DFII_NPHASES "+str(nphases)+"\n\n"
|
||||
|
||||
r += "static void cdelay(int i);\n"
|
||||
|
||||
# commands_px functions
|
||||
for n in range(sdram_phy.phy_settings.nphases):
|
||||
for n in range(nphases):
|
||||
r += """
|
||||
static void command_p{n}(int cmd)
|
||||
{{
|
||||
|
@ -29,6 +32,31 @@ static void command_p{n}(int cmd)
|
|||
""".format(rdphase=str(sdram_phy.phy_settings.rdphase), wrphase=str(sdram_phy.phy_settings.wrphase))
|
||||
r +="\n"
|
||||
|
||||
#
|
||||
# sdrrd/sdrwr functions utilities
|
||||
#
|
||||
r += "#define DFII_PIX_WRDATA_SIZE CSR_DFII_PI0_WRDATA_SIZE\n"
|
||||
dfii_pix_wrdata_addr = []
|
||||
for n in range(nphases):
|
||||
dfii_pix_wrdata_addr.append("CSR_DFII_PI{n}_WRDATA_ADDR".format(n=n))
|
||||
r += """
|
||||
const unsigned int dfii_pix_wrdata_addr[{n}] = {{
|
||||
{dfii_pix_wrdata_addr}
|
||||
}};
|
||||
""".format(n=nphases, dfii_pix_wrdata_addr=",\n\t".join(dfii_pix_wrdata_addr))
|
||||
r +="\n"
|
||||
|
||||
r += "#define DFII_PIX_RDDATA_SIZE CSR_DFII_PI0_RDDATA_SIZE\n"
|
||||
dfii_pix_rddata_addr = []
|
||||
for n in range(nphases):
|
||||
dfii_pix_rddata_addr.append("CSR_DFII_PI{n}_RDDATA_ADDR".format(n=n))
|
||||
r += """
|
||||
const unsigned int dfii_pix_rddata_addr[{n}] = {{
|
||||
{dfii_pix_rddata_addr}
|
||||
}};
|
||||
""".format(n=nphases, dfii_pix_rddata_addr=",\n\t".join(dfii_pix_rddata_addr))
|
||||
r +="\n"
|
||||
|
||||
# init sequence
|
||||
cmds = {
|
||||
"PRECHARGE_ALL" : "DFII_COMMAND_RAS|DFII_COMMAND_WE|DFII_COMMAND_CS",
|
||||
|
|
|
@ -66,6 +66,7 @@ void sdrrd(char *startaddr)
|
|||
char *c;
|
||||
unsigned int addr;
|
||||
int i;
|
||||
int p;
|
||||
|
||||
if(*startaddr == 0) {
|
||||
printf("sdrrd <address>\n");
|
||||
|
@ -82,11 +83,11 @@ void sdrrd(char *startaddr)
|
|||
command_prd(DFII_COMMAND_CAS|DFII_COMMAND_CS|DFII_COMMAND_RDDATA);
|
||||
cdelay(15);
|
||||
|
||||
// FIXME
|
||||
for(i=0;i<8;i++)
|
||||
printf("%02x", MMPTR(0xe0001038+4*i));
|
||||
for(i=0;i<8;i++)
|
||||
printf("%02x", MMPTR(0xe000108c+4*i));
|
||||
for(p=0;p<DFII_NPHASES;p++) {
|
||||
for(i=0;i<DFII_PIX_RDDATA_SIZE;i++) {
|
||||
printf("%02x", MMPTR(dfii_pix_rddata_addr[p]+4*i));
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
@ -95,6 +96,7 @@ void sdrwr(char *startaddr)
|
|||
char *c;
|
||||
unsigned int addr;
|
||||
int i;
|
||||
int p;
|
||||
|
||||
if(*startaddr == 0) {
|
||||
printf("sdrrd <address>\n");
|
||||
|
@ -106,10 +108,10 @@ void sdrwr(char *startaddr)
|
|||
return;
|
||||
}
|
||||
|
||||
// FIXME
|
||||
for(i=0;i<8;i++) {
|
||||
MMPTR(0xe0001018+4*i) = i;
|
||||
MMPTR(0xe000106c+4*i) = 0xf0 + i;
|
||||
for(p=0;p<DFII_NPHASES;p++) {
|
||||
for(i=0;i<DFII_PIX_WRDATA_SIZE;i++) {
|
||||
MMPTR(dfii_pix_wrdata_addr[p]+4*i) = 0x10*p + i;
|
||||
}
|
||||
}
|
||||
|
||||
dfii_piwr_address_write(addr);
|
||||
|
|
Loading…
Reference in New Issue