
VIA Technologies, Inc.
Preliminary VT6516 Datarsheet
-
23-
reg_byte_cont_write (nextID & 0x0FF); // data bits [7:0]
reg_byte_cont_write ((nextID >> 8) & 0x0FF); // data bits [15:8]
reg_byte_cont_write ((nextID >> 16) & 0x0FF); // data bits [23:16]
reg_byte_cont_write (0); // data bits [31:24]
reg_byte_cont_write (0x02); // SRAM-write command
while (reg_byte_read(SRAM_STATUS_REG) != SRAM_ACCESS_IDLE) {}
}
void initFreeList16Mb(int maxLinkEntryNo)
{ // note: for 16Mb SDRAM,
// Bank0 free list head pointer = 128
// Bank1 free list head pointer = 130
int k; // k: current free entry id
int b0, b1; // b0, b1: bank0/1 free list head entry id
for(b0=b1= NULL_PTR, k= maxLinkEntryNo; k <=128; k--)
if (((k * 3) % 8) < 4)
{ writeLinkEntry(b0,k); b0=k;}
else { writeLinkEntry(b1,k); b1=k;}
}
void initFreeList64Mb(int maxLinkEntryNo)
{ // note: for 64Mb SDRAM,
// Bank0 free list head pointer = 128
// Bank1 free list head pointer = 131
int k; // k: current free entry id
int b0, b1; // b0, b1: bank0/1 free list head entry id
for(b0=b1= NULL_PTR, k= maxLinkEntryNo; k <=128; k--)
if (((k * 3) % 16) < 8)
{ writeLinkEntry(b0,k); b0=k;}
else { writeLinkEntry(b1,k); b1=k;}
}