parent
13a0908f07
commit
162484b83c
|
@ -379,10 +379,6 @@ int attempt_map_rom(pci_dev_t dev, void *copy_address)
|
||||||
/*
|
/*
|
||||||
* Set the interrupt pin to 0
|
* Set the interrupt pin to 0
|
||||||
*/
|
*/
|
||||||
#if 0
|
|
||||||
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, 0);
|
|
||||||
pci_write_config_byte(dev, PCI_INTERRUPT_PIN, 0);
|
|
||||||
#endif
|
|
||||||
pci_write_config_byte(bridge, PCI_INTERRUPT_LINE, 0);
|
pci_write_config_byte(bridge, PCI_INTERRUPT_LINE, 0);
|
||||||
pci_write_config_byte(bridge, PCI_INTERRUPT_PIN, 0);
|
pci_write_config_byte(bridge, PCI_INTERRUPT_PIN, 0);
|
||||||
|
|
||||||
|
|
|
@ -144,24 +144,6 @@ void PMAPI PM_callRealMode(
|
||||||
RMSREGS *sregs)
|
RMSREGS *sregs)
|
||||||
{
|
{
|
||||||
/* TODO!! */
|
/* TODO!! */
|
||||||
#if 0
|
|
||||||
CLIENT_STRUCT saveRegs;
|
|
||||||
|
|
||||||
/* Bail if we do not have BIOS access (ie: the VxD was dynamically
|
|
||||||
* loaded, and not statically loaded.
|
|
||||||
*/
|
|
||||||
if (!_PM_haveBIOS)
|
|
||||||
return;
|
|
||||||
|
|
||||||
TRACE("SDDHELP: Entering PM_callRealMode()\n");
|
|
||||||
Begin_Nest_V86_Exec();
|
|
||||||
LoadV86Registers(&saveRegs,regs,sregs);
|
|
||||||
Simulate_Far_Call(seg, off);
|
|
||||||
Resume_Exec();
|
|
||||||
ReadV86Registers(&saveRegs,regs,sregs);
|
|
||||||
End_Nest_Exec();
|
|
||||||
TRACE("SDDHELP: Exiting PM_callRealMode()\n");
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
@ -175,31 +157,7 @@ int PMAPI PM_int86(
|
||||||
RMREGS *out)
|
RMREGS *out)
|
||||||
{
|
{
|
||||||
/* TODO!! */
|
/* TODO!! */
|
||||||
#if 0
|
|
||||||
RMSREGS sregs = {0};
|
|
||||||
CLIENT_STRUCT saveRegs;
|
|
||||||
ushort oldDisable;
|
|
||||||
|
|
||||||
/* Disable pass-up to our VxD handler so we directly call BIOS */
|
|
||||||
TRACE("SDDHELP: Entering PM_int86()\n");
|
|
||||||
if (disableTSRFlag) {
|
|
||||||
oldDisable = *disableTSRFlag;
|
|
||||||
*disableTSRFlag = 0;
|
|
||||||
}
|
|
||||||
Begin_Nest_V86_Exec();
|
|
||||||
LoadV86Registers(&saveRegs,in,&sregs);
|
|
||||||
Exec_Int(intno);
|
|
||||||
ReadV86Registers(&saveRegs,out,&sregs);
|
|
||||||
End_Nest_Exec();
|
|
||||||
|
|
||||||
/* Re-enable pass-up to our VxD handler if previously enabled */
|
|
||||||
if (disableTSRFlag)
|
|
||||||
*disableTSRFlag = oldDisable;
|
|
||||||
|
|
||||||
TRACE("SDDHELP: Exiting PM_int86()\n");
|
|
||||||
#else
|
|
||||||
*out = *in;
|
*out = *in;
|
||||||
#endif
|
|
||||||
return out->x.ax;
|
return out->x.ax;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,37 +173,6 @@ int PMAPI PM_int86x(
|
||||||
RMSREGS *sregs)
|
RMSREGS *sregs)
|
||||||
{
|
{
|
||||||
/* TODO!! */
|
/* TODO!! */
|
||||||
#if 0
|
|
||||||
CLIENT_STRUCT saveRegs;
|
|
||||||
ushort oldDisable;
|
|
||||||
|
|
||||||
/* Bail if we do not have BIOS access (ie: the VxD was dynamically
|
|
||||||
* loaded, and not statically loaded.
|
|
||||||
*/
|
|
||||||
if (!_PM_haveBIOS) {
|
|
||||||
*out = *in;
|
|
||||||
return out->x.ax;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Disable pass-up to our VxD handler so we directly call BIOS */
|
|
||||||
TRACE("SDDHELP: Entering PM_int86x()\n");
|
|
||||||
if (disableTSRFlag) {
|
|
||||||
oldDisable = *disableTSRFlag;
|
|
||||||
*disableTSRFlag = 0;
|
|
||||||
}
|
|
||||||
Begin_Nest_V86_Exec();
|
|
||||||
LoadV86Registers(&saveRegs,in,sregs);
|
|
||||||
Exec_Int(intno);
|
|
||||||
ReadV86Registers(&saveRegs,out,sregs);
|
|
||||||
End_Nest_Exec();
|
|
||||||
|
|
||||||
/* Re-enable pass-up to our VxD handler if previously enabled */
|
|
||||||
if (disableTSRFlag)
|
|
||||||
*disableTSRFlag = oldDisable;
|
|
||||||
|
|
||||||
TRACE("SDDHELP: Exiting PM_int86x()\n");
|
|
||||||
#else
|
|
||||||
*out = *in;
|
*out = *in;
|
||||||
#endif
|
|
||||||
return out->x.ax;
|
return out->x.ax;
|
||||||
}
|
}
|
||||||
|
|
|
@ -359,24 +359,6 @@ ulong MapPhysicalToLinear(
|
||||||
{
|
{
|
||||||
ulong linear,length = limit+1;
|
ulong linear,length = limit+1;
|
||||||
int i,ppage,flags;
|
int i,ppage,flags;
|
||||||
#if 0
|
|
||||||
ppage = base >> 12;
|
|
||||||
*npages = (length + (base & 0xFFF) + 4095) >> 12;
|
|
||||||
flags = PR_FIXED | PR_STATIC;
|
|
||||||
if (base == 0xA0000) {
|
|
||||||
/* We require the linear address to be aligned to a 64Kb boundary
|
|
||||||
* for mapping the banked framebuffer (so we can do efficient
|
|
||||||
* carry checking for bank changes in the assembler code). The only
|
|
||||||
* way to ensure this is to force the linear address to be aligned
|
|
||||||
* to a 4Mb boundary.
|
|
||||||
*/
|
|
||||||
flags |= PR_4MEG;
|
|
||||||
}
|
|
||||||
if ((linear = (ulong)PageReserve(PR_SYSTEM,*npages,flags)) == (ulong)-1)
|
|
||||||
return 0;
|
|
||||||
if (!PageCommitPhys(linear >> 12,*npages,ppage,PC_INCR | PC_USER | PC_WRITEABLE))
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
return linear + (base & 0xFFF);
|
return linear + (base & 0xFFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -434,37 +416,6 @@ void * PMAPI PM_mapPhysicalAddr(
|
||||||
maps[numMappings].isCached = isCached;
|
maps[numMappings].isCached = isCached;
|
||||||
numMappings++;
|
numMappings++;
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* Finally disable caching where necessary */
|
|
||||||
if (!isCached && (PDB = _PM_getPDB()) != 0) {
|
|
||||||
int startPDB,endPDB,iPDB,startPage,endPage,start,end,iPage;
|
|
||||||
ulong pageTable,*pPageTable;
|
|
||||||
|
|
||||||
if (PDB >= 0x100000)
|
|
||||||
pPDB = (ulong*)MapPhysicalToLinear(PDB,0xFFF,&npages);
|
|
||||||
else
|
|
||||||
pPDB = (ulong*)PDB;
|
|
||||||
if (pPDB) {
|
|
||||||
startPDB = (linear >> 22) & 0x3FF;
|
|
||||||
startPage = (linear >> 12) & 0x3FF;
|
|
||||||
endPDB = ((linear+limit) >> 22) & 0x3FF;
|
|
||||||
endPage = ((linear+limit) >> 12) & 0x3FF;
|
|
||||||
for (iPDB = startPDB; iPDB <= endPDB; iPDB++) {
|
|
||||||
pageTable = pPDB[iPDB] & ~0xFFF;
|
|
||||||
if (pageTable >= 0x100000)
|
|
||||||
pPageTable = (ulong*)MapPhysicalToLinear(pageTable,0xFFF,&npages);
|
|
||||||
else
|
|
||||||
pPageTable = (ulong*)pageTable;
|
|
||||||
start = (iPDB == startPDB) ? startPage : 0;
|
|
||||||
end = (iPDB == endPDB) ? endPage : 0x3FF;
|
|
||||||
for (iPage = start; iPage <= end; iPage++)
|
|
||||||
pPageTable[iPage] |= 0x10;
|
|
||||||
PageFree((ulong)pPageTable,PR_STATIC);
|
|
||||||
}
|
|
||||||
PageFree((ulong)pPDB,PR_STATIC);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return (void*)linear;
|
return (void*)linear;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -662,14 +613,6 @@ int PMAPI PM_int86(
|
||||||
|
|
||||||
memset(SSToDS(&sregs), 0, sizeof(sregs));
|
memset(SSToDS(&sregs), 0, sizeof(sregs));
|
||||||
|
|
||||||
#if 0 /* do we need this?? */
|
|
||||||
/* Disable pass-up to our VDD handler so we directly call BIOS */
|
|
||||||
TRACE("SDDHELP: Entering PM_int86()\n");
|
|
||||||
if (disableTSRFlag) {
|
|
||||||
oldDisable = *disableTSRFlag;
|
|
||||||
*disableTSRFlag = 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LoadV86Registers(SSToDS(&saveRegs), in, SSToDS(&sregs));
|
LoadV86Registers(SSToDS(&saveRegs), in, SSToDS(&sregs));
|
||||||
|
|
||||||
|
@ -686,11 +629,6 @@ int PMAPI PM_int86(
|
||||||
|
|
||||||
ReadV86Registers(SSToDS(&saveRegs), out, SSToDS(&sregs));
|
ReadV86Registers(SSToDS(&saveRegs), out, SSToDS(&sregs));
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* Re-enable pass-up to our VDD handler if previously enabled */
|
|
||||||
if (disableTSRFlag)
|
|
||||||
*disableTSRFlag = oldDisable;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TRACE("SDDHELP: Exiting PM_int86()\n");
|
TRACE("SDDHELP: Exiting PM_int86()\n");
|
||||||
return out->x.ax;
|
return out->x.ax;
|
||||||
|
@ -712,14 +650,6 @@ int PMAPI PM_int86x(
|
||||||
ushort oldDisable;
|
ushort oldDisable;
|
||||||
ULONG rc;
|
ULONG rc;
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* Disable pass-up to our VxD handler so we directly call BIOS */
|
|
||||||
TRACE("SDDHELP: Entering PM_int86x()\n");
|
|
||||||
if (disableTSRFlag) {
|
|
||||||
oldDisable = *disableTSRFlag;
|
|
||||||
*disableTSRFlag = 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
LoadV86Registers(SSToDS(&saveRegs), in, sregs);
|
LoadV86Registers(SSToDS(&saveRegs), in, sregs);
|
||||||
|
|
||||||
VDHResetEventSem(hevIRet);
|
VDHResetEventSem(hevIRet);
|
||||||
|
@ -735,11 +665,6 @@ int PMAPI PM_int86x(
|
||||||
|
|
||||||
ReadV86Registers(SSToDS(&saveRegs), out, sregs);
|
ReadV86Registers(SSToDS(&saveRegs), out, sregs);
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* Re-enable pass-up to our VxD handler if previously enabled */
|
|
||||||
if (disableTSRFlag)
|
|
||||||
*disableTSRFlag = oldDisable;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TRACE("SDDHELP: Exiting PM_int86x()\n");
|
TRACE("SDDHELP: Exiting PM_int86x()\n");
|
||||||
return out->x.ax;
|
return out->x.ax;
|
||||||
|
|
|
@ -69,12 +69,6 @@ open_console(void)
|
||||||
close(fd);
|
close(fd);
|
||||||
return Con;
|
return Con;
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
if (ioctl(fd, KDSETMODE, KD_GRAPHICS) < 0) {
|
|
||||||
close(fd);
|
|
||||||
return Con;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
Con.fd = fd;
|
Con.fd = fd;
|
||||||
return Con;
|
return Con;
|
||||||
}
|
}
|
||||||
|
@ -85,9 +79,6 @@ close_console(console Con)
|
||||||
if (Con.fd == -1)
|
if (Con.fd == -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#if 0
|
|
||||||
ioctl(Con.fd, KDSETMODE, KD_TEXT);
|
|
||||||
#endif
|
|
||||||
if (Con.vt >=0)
|
if (Con.vt >=0)
|
||||||
ioctl(Con.fd, VT_ACTIVATE, Con.vt);
|
ioctl(Con.fd, VT_ACTIVATE, Con.vt);
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,6 @@ CARD8
|
||||||
mem_rb(CARD32 addr)
|
mem_rb(CARD32 addr)
|
||||||
{
|
{
|
||||||
unsigned long result, shift;
|
unsigned long result, shift;
|
||||||
#if 1
|
|
||||||
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
||||||
addr -= 0xA0000;
|
addr -= 0xA0000;
|
||||||
shift = (addr & 0x3) * 8;
|
shift = (addr & 0x3) * 8;
|
||||||
|
@ -44,7 +43,6 @@ mem_rb(CARD32 addr)
|
||||||
result >>= shift;
|
result >>= shift;
|
||||||
return 0xffUL & result;
|
return 0xffUL & result;
|
||||||
} else
|
} else
|
||||||
#endif
|
|
||||||
return rdb(addr);
|
return rdb(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +50,6 @@ CARD16
|
||||||
mem_rw(CARD32 addr)
|
mem_rw(CARD32 addr)
|
||||||
{
|
{
|
||||||
unsigned long result, shift;
|
unsigned long result, shift;
|
||||||
#if 1
|
|
||||||
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
||||||
addr -= 0xA0000;
|
addr -= 0xA0000;
|
||||||
shift = (addr & 0x2) * 8;
|
shift = (addr & 0x2) * 8;
|
||||||
|
@ -61,7 +58,6 @@ mem_rw(CARD32 addr)
|
||||||
result >>= shift;
|
result >>= shift;
|
||||||
return 0xffffUL & result;
|
return 0xffffUL & result;
|
||||||
} else
|
} else
|
||||||
#endif
|
|
||||||
return rdw(addr);
|
return rdw(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,13 +65,11 @@ CARD32
|
||||||
mem_rl(CARD32 addr)
|
mem_rl(CARD32 addr)
|
||||||
{
|
{
|
||||||
unsigned long result;
|
unsigned long result;
|
||||||
#if 1
|
|
||||||
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
||||||
addr -= 0xA0000;
|
addr -= 0xA0000;
|
||||||
result = *(vuip)((unsigned long)vram_map+(addr<<sparse_shift)+(3<<(sparse_shift-2)));
|
result = *(vuip)((unsigned long)vram_map+(addr<<sparse_shift)+(3<<(sparse_shift-2)));
|
||||||
return result;
|
return result;
|
||||||
} else
|
} else
|
||||||
#endif
|
|
||||||
return rdl(addr);
|
return rdl(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,13 +77,11 @@ void
|
||||||
mem_wb(CARD32 addr, CARD8 val)
|
mem_wb(CARD32 addr, CARD8 val)
|
||||||
{
|
{
|
||||||
unsigned int b = val & 0xffU;
|
unsigned int b = val & 0xffU;
|
||||||
#if 1
|
|
||||||
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
||||||
addr -= 0xA0000;
|
addr -= 0xA0000;
|
||||||
*(vuip) ((unsigned long)vram_map + (addr << sparse_shift)) = b * 0x01010101;
|
*(vuip) ((unsigned long)vram_map + (addr << sparse_shift)) = b * 0x01010101;
|
||||||
mem_barrier();
|
mem_barrier();
|
||||||
} else
|
} else
|
||||||
#endif
|
|
||||||
wrb(addr,val);
|
wrb(addr,val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,28 +89,24 @@ void
|
||||||
mem_ww(CARD32 addr, CARD16 val)
|
mem_ww(CARD32 addr, CARD16 val)
|
||||||
{
|
{
|
||||||
unsigned int w = val & 0xffffU;
|
unsigned int w = val & 0xffffU;
|
||||||
#if 1
|
|
||||||
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
||||||
addr -= 0xA0000;
|
addr -= 0xA0000;
|
||||||
*(vuip)((unsigned long)vram_map+(addr<<sparse_shift)
|
*(vuip)((unsigned long)vram_map+(addr<<sparse_shift)
|
||||||
+(1<<(sparse_shift-2))) = w * 0x00010001;
|
+(1<<(sparse_shift-2))) = w * 0x00010001;
|
||||||
mem_barrier();
|
mem_barrier();
|
||||||
} else
|
} else
|
||||||
#endif
|
|
||||||
wrw(addr,val);
|
wrw(addr,val);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
mem_wl(CARD32 addr, CARD32 val)
|
mem_wl(CARD32 addr, CARD32 val)
|
||||||
{
|
{
|
||||||
#if 1
|
|
||||||
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
||||||
addr -= 0xA0000;
|
addr -= 0xA0000;
|
||||||
*(vuip)((unsigned long)vram_map+(addr<<sparse_shift)
|
*(vuip)((unsigned long)vram_map+(addr<<sparse_shift)
|
||||||
+(3<<(sparse_shift-2))) = val;
|
+(3<<(sparse_shift-2))) = val;
|
||||||
mem_barrier();
|
mem_barrier();
|
||||||
} else
|
} else
|
||||||
#endif
|
|
||||||
wrl(addr,val);
|
wrl(addr,val);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -297,17 +297,6 @@ getIntVect(int num)
|
||||||
{
|
{
|
||||||
return ((CARD32*)0)[num];
|
return ((CARD32*)0)[num];
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
void
|
|
||||||
printk(const char *fmt, ...)
|
|
||||||
{
|
|
||||||
va_list argptr;
|
|
||||||
va_start(argptr, fmt);
|
|
||||||
vfprintf(stdout, fmt, argptr);
|
|
||||||
fflush(stdout);
|
|
||||||
va_end(argptr);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
CARD32
|
CARD32
|
||||||
getIP(void)
|
getIP(void)
|
||||||
|
|
|
@ -437,7 +437,6 @@ int execute_bios(pci_dev_t gr_dev, void *reloc_addr)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 1 /*def DEBUG*/
|
|
||||||
s = getenv("x86_ask_start");
|
s = getenv("x86_ask_start");
|
||||||
if (s)
|
if (s)
|
||||||
{
|
{
|
||||||
|
@ -455,7 +454,6 @@ int execute_bios(pci_dev_t gr_dev, void *reloc_addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef EASTEREGG
|
#ifdef EASTEREGG
|
||||||
/* if (tstc())
|
/* if (tstc())
|
||||||
|
@ -507,13 +505,11 @@ int execute_bios(pci_dev_t gr_dev, void *reloc_addr)
|
||||||
*strap++ = 0x9A; *strap++ = 0x03; *strap++ = 0x00;
|
*strap++ = 0x9A; *strap++ = 0x03; *strap++ = 0x00;
|
||||||
*strap++ = 0x00; *strap++ = 0xC0;
|
*strap++ = 0x00; *strap++ = 0xC0;
|
||||||
|
|
||||||
#if 1
|
|
||||||
/* insert additional strap code */
|
/* insert additional strap code */
|
||||||
for (i=0; i < MORE_STRAP_BYTES; i++)
|
for (i=0; i < MORE_STRAP_BYTES; i++)
|
||||||
{
|
{
|
||||||
*strap++ = more_strap[i];
|
*strap++ = more_strap[i];
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
/* HALT */
|
/* HALT */
|
||||||
*strap++ = 0xF4;
|
*strap++ = 0xF4;
|
||||||
|
|
||||||
|
|
|
@ -370,10 +370,6 @@ int misc_init_r ()
|
||||||
mpsc_init2 ();
|
mpsc_init2 ();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* disable the dcache and MMU */
|
|
||||||
dcache_lock ();
|
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -193,11 +193,6 @@ static int mpsc_putchar_sdma (char ch)
|
||||||
p[2] = 0; /* 8 */
|
p[2] = 0; /* 8 */
|
||||||
p[3] = (unsigned int) &p[4]; /* c */
|
p[3] = (unsigned int) &p[4]; /* c */
|
||||||
|
|
||||||
#if 0
|
|
||||||
p[9] = DESC_FIRST | DESC_LAST;
|
|
||||||
p[10] = (unsigned int) &p[0];
|
|
||||||
p[11] = (unsigned int) &p[12];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
FLUSH_DCACHE (&p[0], &p[8]);
|
FLUSH_DCACHE (&p[0], &p[8]);
|
||||||
|
|
||||||
|
@ -587,18 +582,6 @@ static int galbrg_set_CUV (int channel, int value)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
static int galbrg_reset (int channel)
|
|
||||||
{
|
|
||||||
unsigned int temp;
|
|
||||||
|
|
||||||
temp = GTREGREAD (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP));
|
|
||||||
temp |= 0x20000;
|
|
||||||
GT_REG_WRITE (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP), temp);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int galsdma_set_RFT (int channel)
|
static int galsdma_set_RFT (int channel)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1308,14 +1308,6 @@ static void eth_set_access_control (ETH_PORT eth_port_num,
|
||||||
ETH_WIN_PARAM * param);
|
ETH_WIN_PARAM * param);
|
||||||
static bool eth_port_uc_addr (ETH_PORT eth_port_num, unsigned char uc_nibble,
|
static bool eth_port_uc_addr (ETH_PORT eth_port_num, unsigned char uc_nibble,
|
||||||
ETH_QUEUE queue, int option);
|
ETH_QUEUE queue, int option);
|
||||||
#if 0 /* FIXME */
|
|
||||||
static bool eth_port_smc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char mc_byte,
|
|
||||||
ETH_QUEUE queue, int option);
|
|
||||||
static bool eth_port_omc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char crc8,
|
|
||||||
ETH_QUEUE queue, int option);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void eth_b_copy (unsigned int src_addr, unsigned int dst_addr,
|
static void eth_b_copy (unsigned int src_addr, unsigned int dst_addr,
|
||||||
int byte_count);
|
int byte_count);
|
||||||
|
@ -1742,274 +1734,6 @@ static bool eth_port_uc_addr (ETH_PORT eth_port_num,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 /* FIXME */
|
|
||||||
/*******************************************************************************
|
|
||||||
* eth_port_mc_addr - Multicast address settings.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This API controls the MV device MAC multicast support.
|
|
||||||
* The MV device supports multicast using two tables:
|
|
||||||
* 1) Special Multicast Table for MAC addresses of the form
|
|
||||||
* 0x01-00-5E-00-00-XX (where XX is between 0x00 and 0x_fF).
|
|
||||||
* The MAC DA[7:0] bits are used as a pointer to the Special Multicast
|
|
||||||
* Table entries in the DA-Filter table.
|
|
||||||
* In this case, the function calls eth_port_smc_addr() routine to set the
|
|
||||||
* Special Multicast Table.
|
|
||||||
* 2) Other Multicast Table for multicast of another type. A CRC-8bit
|
|
||||||
* is used as an index to the Other Multicast Table entries in the
|
|
||||||
* DA-Filter table.
|
|
||||||
* In this case, the function calculates the CRC-8bit value and calls
|
|
||||||
* eth_port_omc_addr() routine to set the Other Multicast Table.
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Port number.
|
|
||||||
* unsigned char *p_addr Unicast MAC Address.
|
|
||||||
* ETH_QUEUE queue Rx queue number for this MAC address.
|
|
||||||
* int option 0 = Add, 1 = remove address.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* See description.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* true is output succeeded.
|
|
||||||
* false if add_address_table_entry( ) failed.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static void eth_port_mc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char *p_addr,
|
|
||||||
ETH_QUEUE queue, int option)
|
|
||||||
{
|
|
||||||
unsigned int mac_h;
|
|
||||||
unsigned int mac_l;
|
|
||||||
unsigned char crc_result = 0;
|
|
||||||
int mac_array[48];
|
|
||||||
int crc[8];
|
|
||||||
int i;
|
|
||||||
|
|
||||||
|
|
||||||
if ((p_addr[0] == 0x01) &&
|
|
||||||
(p_addr[1] == 0x00) &&
|
|
||||||
(p_addr[2] == 0x5E) && (p_addr[3] == 0x00) && (p_addr[4] == 0x00))
|
|
||||||
|
|
||||||
eth_port_smc_addr (eth_port_num, p_addr[5], queue, option);
|
|
||||||
else {
|
|
||||||
/* Calculate CRC-8 out of the given address */
|
|
||||||
mac_h = (p_addr[0] << 8) | (p_addr[1]);
|
|
||||||
mac_l = (p_addr[2] << 24) | (p_addr[3] << 16) |
|
|
||||||
(p_addr[4] << 8) | (p_addr[5] << 0);
|
|
||||||
|
|
||||||
for (i = 0; i < 32; i++)
|
|
||||||
mac_array[i] = (mac_l >> i) & 0x1;
|
|
||||||
for (i = 32; i < 48; i++)
|
|
||||||
mac_array[i] = (mac_h >> (i - 32)) & 0x1;
|
|
||||||
|
|
||||||
|
|
||||||
crc[0] = mac_array[45] ^ mac_array[43] ^ mac_array[40] ^
|
|
||||||
mac_array[39] ^ mac_array[35] ^ mac_array[34] ^
|
|
||||||
mac_array[31] ^ mac_array[30] ^ mac_array[28] ^
|
|
||||||
mac_array[23] ^ mac_array[21] ^ mac_array[19] ^
|
|
||||||
mac_array[18] ^ mac_array[16] ^ mac_array[14] ^
|
|
||||||
mac_array[12] ^ mac_array[8] ^ mac_array[7] ^
|
|
||||||
mac_array[6] ^ mac_array[0];
|
|
||||||
|
|
||||||
crc[1] = mac_array[46] ^ mac_array[45] ^ mac_array[44] ^
|
|
||||||
mac_array[43] ^ mac_array[41] ^ mac_array[39] ^
|
|
||||||
mac_array[36] ^ mac_array[34] ^ mac_array[32] ^
|
|
||||||
mac_array[30] ^ mac_array[29] ^ mac_array[28] ^
|
|
||||||
mac_array[24] ^ mac_array[23] ^ mac_array[22] ^
|
|
||||||
mac_array[21] ^ mac_array[20] ^ mac_array[18] ^
|
|
||||||
mac_array[17] ^ mac_array[16] ^ mac_array[15] ^
|
|
||||||
mac_array[14] ^ mac_array[13] ^ mac_array[12] ^
|
|
||||||
mac_array[9] ^ mac_array[6] ^ mac_array[1] ^
|
|
||||||
mac_array[0];
|
|
||||||
|
|
||||||
crc[2] = mac_array[47] ^ mac_array[46] ^ mac_array[44] ^
|
|
||||||
mac_array[43] ^ mac_array[42] ^ mac_array[39] ^
|
|
||||||
mac_array[37] ^ mac_array[34] ^ mac_array[33] ^
|
|
||||||
mac_array[29] ^ mac_array[28] ^ mac_array[25] ^
|
|
||||||
mac_array[24] ^ mac_array[22] ^ mac_array[17] ^
|
|
||||||
mac_array[15] ^ mac_array[13] ^ mac_array[12] ^
|
|
||||||
mac_array[10] ^ mac_array[8] ^ mac_array[6] ^
|
|
||||||
mac_array[2] ^ mac_array[1] ^ mac_array[0];
|
|
||||||
|
|
||||||
crc[3] = mac_array[47] ^ mac_array[45] ^ mac_array[44] ^
|
|
||||||
mac_array[43] ^ mac_array[40] ^ mac_array[38] ^
|
|
||||||
mac_array[35] ^ mac_array[34] ^ mac_array[30] ^
|
|
||||||
mac_array[29] ^ mac_array[26] ^ mac_array[25] ^
|
|
||||||
mac_array[23] ^ mac_array[18] ^ mac_array[16] ^
|
|
||||||
mac_array[14] ^ mac_array[13] ^ mac_array[11] ^
|
|
||||||
mac_array[9] ^ mac_array[7] ^ mac_array[3] ^
|
|
||||||
mac_array[2] ^ mac_array[1];
|
|
||||||
|
|
||||||
crc[4] = mac_array[46] ^ mac_array[45] ^ mac_array[44] ^
|
|
||||||
mac_array[41] ^ mac_array[39] ^ mac_array[36] ^
|
|
||||||
mac_array[35] ^ mac_array[31] ^ mac_array[30] ^
|
|
||||||
mac_array[27] ^ mac_array[26] ^ mac_array[24] ^
|
|
||||||
mac_array[19] ^ mac_array[17] ^ mac_array[15] ^
|
|
||||||
mac_array[14] ^ mac_array[12] ^ mac_array[10] ^
|
|
||||||
mac_array[8] ^ mac_array[4] ^ mac_array[3] ^
|
|
||||||
mac_array[2];
|
|
||||||
|
|
||||||
crc[5] = mac_array[47] ^ mac_array[46] ^ mac_array[45] ^
|
|
||||||
mac_array[42] ^ mac_array[40] ^ mac_array[37] ^
|
|
||||||
mac_array[36] ^ mac_array[32] ^ mac_array[31] ^
|
|
||||||
mac_array[28] ^ mac_array[27] ^ mac_array[25] ^
|
|
||||||
mac_array[20] ^ mac_array[18] ^ mac_array[16] ^
|
|
||||||
mac_array[15] ^ mac_array[13] ^ mac_array[11] ^
|
|
||||||
mac_array[9] ^ mac_array[5] ^ mac_array[4] ^
|
|
||||||
mac_array[3];
|
|
||||||
|
|
||||||
crc[6] = mac_array[47] ^ mac_array[46] ^ mac_array[43] ^
|
|
||||||
mac_array[41] ^ mac_array[38] ^ mac_array[37] ^
|
|
||||||
mac_array[33] ^ mac_array[32] ^ mac_array[29] ^
|
|
||||||
mac_array[28] ^ mac_array[26] ^ mac_array[21] ^
|
|
||||||
mac_array[19] ^ mac_array[17] ^ mac_array[16] ^
|
|
||||||
mac_array[14] ^ mac_array[12] ^ mac_array[10] ^
|
|
||||||
mac_array[6] ^ mac_array[5] ^ mac_array[4];
|
|
||||||
|
|
||||||
crc[7] = mac_array[47] ^ mac_array[44] ^ mac_array[42] ^
|
|
||||||
mac_array[39] ^ mac_array[38] ^ mac_array[34] ^
|
|
||||||
mac_array[33] ^ mac_array[30] ^ mac_array[29] ^
|
|
||||||
mac_array[27] ^ mac_array[22] ^ mac_array[20] ^
|
|
||||||
mac_array[18] ^ mac_array[17] ^ mac_array[15] ^
|
|
||||||
mac_array[13] ^ mac_array[11] ^ mac_array[7] ^
|
|
||||||
mac_array[6] ^ mac_array[5];
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
crc_result = crc_result | (crc[i] << i);
|
|
||||||
|
|
||||||
eth_port_omc_addr (eth_port_num, crc_result, queue, option);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
* eth_port_smc_addr - Special Multicast address settings.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This routine controls the MV device special MAC multicast support.
|
|
||||||
* The Special Multicast Table for MAC addresses supports MAC of the form
|
|
||||||
* 0x01-00-5E-00-00-XX (where XX is between 0x00 and 0x_fF).
|
|
||||||
* The MAC DA[7:0] bits are used as a pointer to the Special Multicast
|
|
||||||
* Table entries in the DA-Filter table.
|
|
||||||
* This function set the Special Multicast Table appropriate entry
|
|
||||||
* according to the argument given.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Port number.
|
|
||||||
* unsigned char mc_byte Multicast addr last byte (MAC DA[7:0] bits).
|
|
||||||
* ETH_QUEUE queue Rx queue number for this MAC address.
|
|
||||||
* int option 0 = Add, 1 = remove address.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* See description.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* true is output succeeded.
|
|
||||||
* false if option parameter is invalid.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static bool eth_port_smc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char mc_byte,
|
|
||||||
ETH_QUEUE queue, int option)
|
|
||||||
{
|
|
||||||
unsigned int smc_table_reg;
|
|
||||||
unsigned int tbl_offset;
|
|
||||||
unsigned int reg_offset;
|
|
||||||
|
|
||||||
/* Locate the SMC table entry */
|
|
||||||
tbl_offset = (mc_byte / 4) * 4; /* Register offset from SMC table base */
|
|
||||||
reg_offset = mc_byte % 4; /* Entry offset within the above register */
|
|
||||||
queue &= 0x7;
|
|
||||||
|
|
||||||
switch (option) {
|
|
||||||
case REJECT_MAC_ADDR:
|
|
||||||
/* Clear accepts frame bit at specified Special DA table entry */
|
|
||||||
smc_table_reg =
|
|
||||||
MV_REG_READ ((MV64360_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
|
|
||||||
smc_table_reg &= (0x0E << (8 * reg_offset));
|
|
||||||
|
|
||||||
MV_REG_WRITE ((MV64360_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), smc_table_reg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ACCEPT_MAC_ADDR:
|
|
||||||
/* Set accepts frame bit at specified Special DA table entry */
|
|
||||||
smc_table_reg =
|
|
||||||
MV_REG_READ ((MV64360_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
|
|
||||||
smc_table_reg |= ((0x01 | queue) << (8 * reg_offset));
|
|
||||||
|
|
||||||
MV_REG_WRITE ((MV64360_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), smc_table_reg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
* eth_port_omc_addr - Multicast address settings.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This routine controls the MV device Other MAC multicast support.
|
|
||||||
* The Other Multicast Table is used for multicast of another type.
|
|
||||||
* A CRC-8bit is used as an index to the Other Multicast Table entries
|
|
||||||
* in the DA-Filter table.
|
|
||||||
* The function gets the CRC-8bit value from the calling routine and
|
|
||||||
* set the Other Multicast Table appropriate entry according to the
|
|
||||||
* CRC-8 argument given.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Port number.
|
|
||||||
* unsigned char crc8 A CRC-8bit (Polynomial: x^8+x^2+x^1+1).
|
|
||||||
* ETH_QUEUE queue Rx queue number for this MAC address.
|
|
||||||
* int option 0 = Add, 1 = remove address.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* See description.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* true is output succeeded.
|
|
||||||
* false if option parameter is invalid.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static bool eth_port_omc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char crc8,
|
|
||||||
ETH_QUEUE queue, int option)
|
|
||||||
{
|
|
||||||
unsigned int omc_table_reg;
|
|
||||||
unsigned int tbl_offset;
|
|
||||||
unsigned int reg_offset;
|
|
||||||
|
|
||||||
/* Locate the OMC table entry */
|
|
||||||
tbl_offset = (crc8 / 4) * 4; /* Register offset from OMC table base */
|
|
||||||
reg_offset = crc8 % 4; /* Entry offset within the above register */
|
|
||||||
queue &= 0x7;
|
|
||||||
|
|
||||||
switch (option) {
|
|
||||||
case REJECT_MAC_ADDR:
|
|
||||||
/* Clear accepts frame bit at specified Other DA table entry */
|
|
||||||
omc_table_reg =
|
|
||||||
MV_REG_READ ((MV64360_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
|
|
||||||
omc_table_reg &= (0x0E << (8 * reg_offset));
|
|
||||||
|
|
||||||
MV_REG_WRITE ((MV64360_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), omc_table_reg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ACCEPT_MAC_ADDR:
|
|
||||||
/* Set accepts frame bit at specified Other DA table entry */
|
|
||||||
omc_table_reg =
|
|
||||||
MV_REG_READ ((MV64360_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
|
|
||||||
omc_table_reg |= ((0x01 | queue) << (8 * reg_offset));
|
|
||||||
|
|
||||||
MV_REG_WRITE ((MV64360_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), omc_table_reg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* eth_port_init_mac_tables - Clear all entrance in the UC, SMC and OMC tables
|
* eth_port_init_mac_tables - Clear all entrance in the UC, SMC and OMC tables
|
||||||
|
@ -2278,104 +2002,8 @@ static void eth_port_reset (ETH_PORT eth_port_num)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 /* Not needed here */
|
|
||||||
/*******************************************************************************
|
|
||||||
* ethernet_set_config_reg - Set specified bits in configuration register.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This function sets specified bits in the given ethernet
|
|
||||||
* configuration register.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
|
|
||||||
* unsigned int value 32 bit value.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* The set bits in the value parameter are set in the configuration
|
|
||||||
* register.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* None.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static void ethernet_set_config_reg (ETH_PORT eth_port_num,
|
|
||||||
unsigned int value)
|
|
||||||
{
|
|
||||||
unsigned int eth_config_reg;
|
|
||||||
|
|
||||||
eth_config_reg =
|
|
||||||
MV_REG_READ (MV64360_ETH_PORT_CONFIG_REG (eth_port_num));
|
|
||||||
eth_config_reg |= value;
|
|
||||||
MV_REG_WRITE (MV64360_ETH_PORT_CONFIG_REG (eth_port_num),
|
|
||||||
eth_config_reg);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0 /* FIXME */
|
|
||||||
/*******************************************************************************
|
|
||||||
* ethernet_reset_config_reg - Reset specified bits in configuration register.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This function resets specified bits in the given Ethernet
|
|
||||||
* configuration register.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
|
|
||||||
* unsigned int value 32 bit value.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* The set bits in the value parameter are reset in the configuration
|
|
||||||
* register.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* None.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static void ethernet_reset_config_reg (ETH_PORT eth_port_num,
|
|
||||||
unsigned int value)
|
|
||||||
{
|
|
||||||
unsigned int eth_config_reg;
|
|
||||||
|
|
||||||
eth_config_reg = MV_REG_READ (MV64360_ETH_PORT_CONFIG_EXTEND_REG
|
|
||||||
(eth_port_num));
|
|
||||||
eth_config_reg &= ~value;
|
|
||||||
MV_REG_WRITE (MV64360_ETH_PORT_CONFIG_EXTEND_REG (eth_port_num),
|
|
||||||
eth_config_reg);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0 /* Not needed here */
|
|
||||||
/*******************************************************************************
|
|
||||||
* ethernet_get_config_reg - Get the port configuration register
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This function returns the configuration register value of the given
|
|
||||||
* ethernet port.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* None.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* Port configuration register value.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static unsigned int ethernet_get_config_reg (ETH_PORT eth_port_num)
|
|
||||||
{
|
|
||||||
unsigned int eth_config_reg;
|
|
||||||
|
|
||||||
eth_config_reg = MV_REG_READ (MV64360_ETH_PORT_CONFIG_EXTEND_REG
|
|
||||||
(eth_port_num));
|
|
||||||
return eth_config_reg;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* eth_port_read_smi_reg - Read PHY registers
|
* eth_port_read_smi_reg - Read PHY registers
|
||||||
|
@ -3093,24 +2721,6 @@ static ETH_FUNC_RET_STATUS eth_rx_return_buff (ETH_PORT_INFO *
|
||||||
* The interrupt coalescing value set in the gigE port.
|
* The interrupt coalescing value set in the gigE port.
|
||||||
*
|
*
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
#if 0 /* FIXME */
|
|
||||||
static unsigned int eth_port_set_rx_coal (ETH_PORT eth_port_num,
|
|
||||||
unsigned int t_clk,
|
|
||||||
unsigned int delay)
|
|
||||||
{
|
|
||||||
unsigned int coal;
|
|
||||||
|
|
||||||
coal = ((t_clk / 1000000) * delay) / 64;
|
|
||||||
/* Set RX Coalescing mechanism */
|
|
||||||
MV_REG_WRITE (MV64360_ETH_SDMA_CONFIG_REG (eth_port_num),
|
|
||||||
((coal & 0x3fff) << 8) |
|
|
||||||
(MV_REG_READ
|
|
||||||
(MV64360_ETH_SDMA_CONFIG_REG (eth_port_num))
|
|
||||||
& 0xffc000ff));
|
|
||||||
return coal;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* eth_port_set_tx_coal - Sets coalescing interrupt mechanism on TX path
|
* eth_port_set_tx_coal - Sets coalescing interrupt mechanism on TX path
|
||||||
*
|
*
|
||||||
|
@ -3134,20 +2744,6 @@ static unsigned int eth_port_set_rx_coal (ETH_PORT eth_port_num,
|
||||||
* The interrupt coalescing value set in the gigE port.
|
* The interrupt coalescing value set in the gigE port.
|
||||||
*
|
*
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
#if 0 /* FIXME */
|
|
||||||
static unsigned int eth_port_set_tx_coal (ETH_PORT eth_port_num,
|
|
||||||
unsigned int t_clk,
|
|
||||||
unsigned int delay)
|
|
||||||
{
|
|
||||||
unsigned int coal;
|
|
||||||
|
|
||||||
coal = ((t_clk / 1000000) * delay) / 64;
|
|
||||||
/* Set TX Coalescing mechanism */
|
|
||||||
MV_REG_WRITE (MV64360_ETH_TX_FIFO_URGENT_THRESHOLD_REG (eth_port_num),
|
|
||||||
coal << 4);
|
|
||||||
return coal;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* eth_b_copy - Copy bytes from source to destination
|
* eth_b_copy - Copy bytes from source to destination
|
||||||
|
|
|
@ -792,12 +792,6 @@ static bool eth_port_start(ETH_PORT_INFO *p_eth_port_ctrl);
|
||||||
static void eth_port_uc_addr_set (ETH_PORT eth_port_num,
|
static void eth_port_uc_addr_set (ETH_PORT eth_port_num,
|
||||||
unsigned char *p_addr,
|
unsigned char *p_addr,
|
||||||
ETH_QUEUE queue);
|
ETH_QUEUE queue);
|
||||||
#if 0 /* FIXME */
|
|
||||||
static void eth_port_mc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char *p_addr,
|
|
||||||
ETH_QUEUE queue,
|
|
||||||
int option);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* PHY and MIB routines */
|
/* PHY and MIB routines */
|
||||||
static bool ethernet_phy_reset(ETH_PORT eth_port_num);
|
static bool ethernet_phy_reset(ETH_PORT eth_port_num);
|
||||||
|
|
|
@ -812,21 +812,6 @@ static void gt_setup_ide (struct pci_controller *hose,
|
||||||
|
|
||||||
/* TODO BJW: Change this for DB64360. This was pulled from the EV64260 */
|
/* TODO BJW: Change this for DB64360. This was pulled from the EV64260 */
|
||||||
/* and is curently not called *. */
|
/* and is curently not called *. */
|
||||||
#if 0
|
|
||||||
static void gt_fixup_irq (struct pci_controller *hose, pci_dev_t dev)
|
|
||||||
{
|
|
||||||
unsigned char pin, irq;
|
|
||||||
|
|
||||||
pci_read_config_byte (dev, PCI_INTERRUPT_PIN, &pin);
|
|
||||||
|
|
||||||
if (pin == 1) { /* only allow INT A */
|
|
||||||
irq = pci_irq_swizzle[(PCI_HOST) hose->
|
|
||||||
cfg_addr][PCI_DEV (dev)];
|
|
||||||
if (irq)
|
|
||||||
pci_write_config_byte (dev, PCI_INTERRUPT_LINE, irq);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct pci_config_table gt_config_table[] = {
|
struct pci_config_table gt_config_table[] = {
|
||||||
{PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE,
|
{PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE,
|
||||||
|
|
|
@ -370,10 +370,6 @@ int misc_init_r ()
|
||||||
mpsc_init2 ();
|
mpsc_init2 ();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* disable the dcache and MMU */
|
|
||||||
dcache_lock ();
|
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -193,11 +193,6 @@ static int mpsc_putchar_sdma (char ch)
|
||||||
p[2] = 0; /* 8 */
|
p[2] = 0; /* 8 */
|
||||||
p[3] = (unsigned int) &p[4]; /* c */
|
p[3] = (unsigned int) &p[4]; /* c */
|
||||||
|
|
||||||
#if 0
|
|
||||||
p[9] = DESC_FIRST | DESC_LAST;
|
|
||||||
p[10] = (unsigned int) &p[0];
|
|
||||||
p[11] = (unsigned int) &p[12];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
FLUSH_DCACHE (&p[0], &p[8]);
|
FLUSH_DCACHE (&p[0], &p[8]);
|
||||||
|
|
||||||
|
@ -587,18 +582,6 @@ static int galbrg_set_CUV (int channel, int value)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
static int galbrg_reset (int channel)
|
|
||||||
{
|
|
||||||
unsigned int temp;
|
|
||||||
|
|
||||||
temp = GTREGREAD (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP));
|
|
||||||
temp |= 0x20000;
|
|
||||||
GT_REG_WRITE (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP), temp);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int galsdma_set_RFT (int channel)
|
static int galsdma_set_RFT (int channel)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1307,14 +1307,6 @@ static void eth_set_access_control (ETH_PORT eth_port_num,
|
||||||
ETH_WIN_PARAM * param);
|
ETH_WIN_PARAM * param);
|
||||||
static bool eth_port_uc_addr (ETH_PORT eth_port_num, unsigned char uc_nibble,
|
static bool eth_port_uc_addr (ETH_PORT eth_port_num, unsigned char uc_nibble,
|
||||||
ETH_QUEUE queue, int option);
|
ETH_QUEUE queue, int option);
|
||||||
#if 0 /* FIXME */
|
|
||||||
static bool eth_port_smc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char mc_byte,
|
|
||||||
ETH_QUEUE queue, int option);
|
|
||||||
static bool eth_port_omc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char crc8,
|
|
||||||
ETH_QUEUE queue, int option);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void eth_b_copy (unsigned int src_addr, unsigned int dst_addr,
|
static void eth_b_copy (unsigned int src_addr, unsigned int dst_addr,
|
||||||
int byte_count);
|
int byte_count);
|
||||||
|
@ -1741,274 +1733,6 @@ static bool eth_port_uc_addr (ETH_PORT eth_port_num,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 /* FIXME */
|
|
||||||
/*******************************************************************************
|
|
||||||
* eth_port_mc_addr - Multicast address settings.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This API controls the MV device MAC multicast support.
|
|
||||||
* The MV device supports multicast using two tables:
|
|
||||||
* 1) Special Multicast Table for MAC addresses of the form
|
|
||||||
* 0x01-00-5E-00-00-XX (where XX is between 0x00 and 0x_fF).
|
|
||||||
* The MAC DA[7:0] bits are used as a pointer to the Special Multicast
|
|
||||||
* Table entries in the DA-Filter table.
|
|
||||||
* In this case, the function calls eth_port_smc_addr() routine to set the
|
|
||||||
* Special Multicast Table.
|
|
||||||
* 2) Other Multicast Table for multicast of another type. A CRC-8bit
|
|
||||||
* is used as an index to the Other Multicast Table entries in the
|
|
||||||
* DA-Filter table.
|
|
||||||
* In this case, the function calculates the CRC-8bit value and calls
|
|
||||||
* eth_port_omc_addr() routine to set the Other Multicast Table.
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Port number.
|
|
||||||
* unsigned char *p_addr Unicast MAC Address.
|
|
||||||
* ETH_QUEUE queue Rx queue number for this MAC address.
|
|
||||||
* int option 0 = Add, 1 = remove address.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* See description.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* true is output succeeded.
|
|
||||||
* false if add_address_table_entry( ) failed.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static void eth_port_mc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char *p_addr,
|
|
||||||
ETH_QUEUE queue, int option)
|
|
||||||
{
|
|
||||||
unsigned int mac_h;
|
|
||||||
unsigned int mac_l;
|
|
||||||
unsigned char crc_result = 0;
|
|
||||||
int mac_array[48];
|
|
||||||
int crc[8];
|
|
||||||
int i;
|
|
||||||
|
|
||||||
|
|
||||||
if ((p_addr[0] == 0x01) &&
|
|
||||||
(p_addr[1] == 0x00) &&
|
|
||||||
(p_addr[2] == 0x5E) && (p_addr[3] == 0x00) && (p_addr[4] == 0x00))
|
|
||||||
|
|
||||||
eth_port_smc_addr (eth_port_num, p_addr[5], queue, option);
|
|
||||||
else {
|
|
||||||
/* Calculate CRC-8 out of the given address */
|
|
||||||
mac_h = (p_addr[0] << 8) | (p_addr[1]);
|
|
||||||
mac_l = (p_addr[2] << 24) | (p_addr[3] << 16) |
|
|
||||||
(p_addr[4] << 8) | (p_addr[5] << 0);
|
|
||||||
|
|
||||||
for (i = 0; i < 32; i++)
|
|
||||||
mac_array[i] = (mac_l >> i) & 0x1;
|
|
||||||
for (i = 32; i < 48; i++)
|
|
||||||
mac_array[i] = (mac_h >> (i - 32)) & 0x1;
|
|
||||||
|
|
||||||
|
|
||||||
crc[0] = mac_array[45] ^ mac_array[43] ^ mac_array[40] ^
|
|
||||||
mac_array[39] ^ mac_array[35] ^ mac_array[34] ^
|
|
||||||
mac_array[31] ^ mac_array[30] ^ mac_array[28] ^
|
|
||||||
mac_array[23] ^ mac_array[21] ^ mac_array[19] ^
|
|
||||||
mac_array[18] ^ mac_array[16] ^ mac_array[14] ^
|
|
||||||
mac_array[12] ^ mac_array[8] ^ mac_array[7] ^
|
|
||||||
mac_array[6] ^ mac_array[0];
|
|
||||||
|
|
||||||
crc[1] = mac_array[46] ^ mac_array[45] ^ mac_array[44] ^
|
|
||||||
mac_array[43] ^ mac_array[41] ^ mac_array[39] ^
|
|
||||||
mac_array[36] ^ mac_array[34] ^ mac_array[32] ^
|
|
||||||
mac_array[30] ^ mac_array[29] ^ mac_array[28] ^
|
|
||||||
mac_array[24] ^ mac_array[23] ^ mac_array[22] ^
|
|
||||||
mac_array[21] ^ mac_array[20] ^ mac_array[18] ^
|
|
||||||
mac_array[17] ^ mac_array[16] ^ mac_array[15] ^
|
|
||||||
mac_array[14] ^ mac_array[13] ^ mac_array[12] ^
|
|
||||||
mac_array[9] ^ mac_array[6] ^ mac_array[1] ^
|
|
||||||
mac_array[0];
|
|
||||||
|
|
||||||
crc[2] = mac_array[47] ^ mac_array[46] ^ mac_array[44] ^
|
|
||||||
mac_array[43] ^ mac_array[42] ^ mac_array[39] ^
|
|
||||||
mac_array[37] ^ mac_array[34] ^ mac_array[33] ^
|
|
||||||
mac_array[29] ^ mac_array[28] ^ mac_array[25] ^
|
|
||||||
mac_array[24] ^ mac_array[22] ^ mac_array[17] ^
|
|
||||||
mac_array[15] ^ mac_array[13] ^ mac_array[12] ^
|
|
||||||
mac_array[10] ^ mac_array[8] ^ mac_array[6] ^
|
|
||||||
mac_array[2] ^ mac_array[1] ^ mac_array[0];
|
|
||||||
|
|
||||||
crc[3] = mac_array[47] ^ mac_array[45] ^ mac_array[44] ^
|
|
||||||
mac_array[43] ^ mac_array[40] ^ mac_array[38] ^
|
|
||||||
mac_array[35] ^ mac_array[34] ^ mac_array[30] ^
|
|
||||||
mac_array[29] ^ mac_array[26] ^ mac_array[25] ^
|
|
||||||
mac_array[23] ^ mac_array[18] ^ mac_array[16] ^
|
|
||||||
mac_array[14] ^ mac_array[13] ^ mac_array[11] ^
|
|
||||||
mac_array[9] ^ mac_array[7] ^ mac_array[3] ^
|
|
||||||
mac_array[2] ^ mac_array[1];
|
|
||||||
|
|
||||||
crc[4] = mac_array[46] ^ mac_array[45] ^ mac_array[44] ^
|
|
||||||
mac_array[41] ^ mac_array[39] ^ mac_array[36] ^
|
|
||||||
mac_array[35] ^ mac_array[31] ^ mac_array[30] ^
|
|
||||||
mac_array[27] ^ mac_array[26] ^ mac_array[24] ^
|
|
||||||
mac_array[19] ^ mac_array[17] ^ mac_array[15] ^
|
|
||||||
mac_array[14] ^ mac_array[12] ^ mac_array[10] ^
|
|
||||||
mac_array[8] ^ mac_array[4] ^ mac_array[3] ^
|
|
||||||
mac_array[2];
|
|
||||||
|
|
||||||
crc[5] = mac_array[47] ^ mac_array[46] ^ mac_array[45] ^
|
|
||||||
mac_array[42] ^ mac_array[40] ^ mac_array[37] ^
|
|
||||||
mac_array[36] ^ mac_array[32] ^ mac_array[31] ^
|
|
||||||
mac_array[28] ^ mac_array[27] ^ mac_array[25] ^
|
|
||||||
mac_array[20] ^ mac_array[18] ^ mac_array[16] ^
|
|
||||||
mac_array[15] ^ mac_array[13] ^ mac_array[11] ^
|
|
||||||
mac_array[9] ^ mac_array[5] ^ mac_array[4] ^
|
|
||||||
mac_array[3];
|
|
||||||
|
|
||||||
crc[6] = mac_array[47] ^ mac_array[46] ^ mac_array[43] ^
|
|
||||||
mac_array[41] ^ mac_array[38] ^ mac_array[37] ^
|
|
||||||
mac_array[33] ^ mac_array[32] ^ mac_array[29] ^
|
|
||||||
mac_array[28] ^ mac_array[26] ^ mac_array[21] ^
|
|
||||||
mac_array[19] ^ mac_array[17] ^ mac_array[16] ^
|
|
||||||
mac_array[14] ^ mac_array[12] ^ mac_array[10] ^
|
|
||||||
mac_array[6] ^ mac_array[5] ^ mac_array[4];
|
|
||||||
|
|
||||||
crc[7] = mac_array[47] ^ mac_array[44] ^ mac_array[42] ^
|
|
||||||
mac_array[39] ^ mac_array[38] ^ mac_array[34] ^
|
|
||||||
mac_array[33] ^ mac_array[30] ^ mac_array[29] ^
|
|
||||||
mac_array[27] ^ mac_array[22] ^ mac_array[20] ^
|
|
||||||
mac_array[18] ^ mac_array[17] ^ mac_array[15] ^
|
|
||||||
mac_array[13] ^ mac_array[11] ^ mac_array[7] ^
|
|
||||||
mac_array[6] ^ mac_array[5];
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
crc_result = crc_result | (crc[i] << i);
|
|
||||||
|
|
||||||
eth_port_omc_addr (eth_port_num, crc_result, queue, option);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
* eth_port_smc_addr - Special Multicast address settings.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This routine controls the MV device special MAC multicast support.
|
|
||||||
* The Special Multicast Table for MAC addresses supports MAC of the form
|
|
||||||
* 0x01-00-5E-00-00-XX (where XX is between 0x00 and 0x_fF).
|
|
||||||
* The MAC DA[7:0] bits are used as a pointer to the Special Multicast
|
|
||||||
* Table entries in the DA-Filter table.
|
|
||||||
* This function set the Special Multicast Table appropriate entry
|
|
||||||
* according to the argument given.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Port number.
|
|
||||||
* unsigned char mc_byte Multicast addr last byte (MAC DA[7:0] bits).
|
|
||||||
* ETH_QUEUE queue Rx queue number for this MAC address.
|
|
||||||
* int option 0 = Add, 1 = remove address.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* See description.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* true is output succeeded.
|
|
||||||
* false if option parameter is invalid.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static bool eth_port_smc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char mc_byte,
|
|
||||||
ETH_QUEUE queue, int option)
|
|
||||||
{
|
|
||||||
unsigned int smc_table_reg;
|
|
||||||
unsigned int tbl_offset;
|
|
||||||
unsigned int reg_offset;
|
|
||||||
|
|
||||||
/* Locate the SMC table entry */
|
|
||||||
tbl_offset = (mc_byte / 4) * 4; /* Register offset from SMC table base */
|
|
||||||
reg_offset = mc_byte % 4; /* Entry offset within the above register */
|
|
||||||
queue &= 0x7;
|
|
||||||
|
|
||||||
switch (option) {
|
|
||||||
case REJECT_MAC_ADDR:
|
|
||||||
/* Clear accepts frame bit at specified Special DA table entry */
|
|
||||||
smc_table_reg =
|
|
||||||
MV_REG_READ ((MV64460_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
|
|
||||||
smc_table_reg &= (0x0E << (8 * reg_offset));
|
|
||||||
|
|
||||||
MV_REG_WRITE ((MV64460_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), smc_table_reg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ACCEPT_MAC_ADDR:
|
|
||||||
/* Set accepts frame bit at specified Special DA table entry */
|
|
||||||
smc_table_reg =
|
|
||||||
MV_REG_READ ((MV64460_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
|
|
||||||
smc_table_reg |= ((0x01 | queue) << (8 * reg_offset));
|
|
||||||
|
|
||||||
MV_REG_WRITE ((MV64460_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), smc_table_reg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
* eth_port_omc_addr - Multicast address settings.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This routine controls the MV device Other MAC multicast support.
|
|
||||||
* The Other Multicast Table is used for multicast of another type.
|
|
||||||
* A CRC-8bit is used as an index to the Other Multicast Table entries
|
|
||||||
* in the DA-Filter table.
|
|
||||||
* The function gets the CRC-8bit value from the calling routine and
|
|
||||||
* set the Other Multicast Table appropriate entry according to the
|
|
||||||
* CRC-8 argument given.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Port number.
|
|
||||||
* unsigned char crc8 A CRC-8bit (Polynomial: x^8+x^2+x^1+1).
|
|
||||||
* ETH_QUEUE queue Rx queue number for this MAC address.
|
|
||||||
* int option 0 = Add, 1 = remove address.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* See description.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* true is output succeeded.
|
|
||||||
* false if option parameter is invalid.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static bool eth_port_omc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char crc8,
|
|
||||||
ETH_QUEUE queue, int option)
|
|
||||||
{
|
|
||||||
unsigned int omc_table_reg;
|
|
||||||
unsigned int tbl_offset;
|
|
||||||
unsigned int reg_offset;
|
|
||||||
|
|
||||||
/* Locate the OMC table entry */
|
|
||||||
tbl_offset = (crc8 / 4) * 4; /* Register offset from OMC table base */
|
|
||||||
reg_offset = crc8 % 4; /* Entry offset within the above register */
|
|
||||||
queue &= 0x7;
|
|
||||||
|
|
||||||
switch (option) {
|
|
||||||
case REJECT_MAC_ADDR:
|
|
||||||
/* Clear accepts frame bit at specified Other DA table entry */
|
|
||||||
omc_table_reg =
|
|
||||||
MV_REG_READ ((MV64460_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
|
|
||||||
omc_table_reg &= (0x0E << (8 * reg_offset));
|
|
||||||
|
|
||||||
MV_REG_WRITE ((MV64460_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), omc_table_reg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ACCEPT_MAC_ADDR:
|
|
||||||
/* Set accepts frame bit at specified Other DA table entry */
|
|
||||||
omc_table_reg =
|
|
||||||
MV_REG_READ ((MV64460_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
|
|
||||||
omc_table_reg |= ((0x01 | queue) << (8 * reg_offset));
|
|
||||||
|
|
||||||
MV_REG_WRITE ((MV64460_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), omc_table_reg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* eth_port_init_mac_tables - Clear all entrance in the UC, SMC and OMC tables
|
* eth_port_init_mac_tables - Clear all entrance in the UC, SMC and OMC tables
|
||||||
|
@ -2277,104 +2001,8 @@ static void eth_port_reset (ETH_PORT eth_port_num)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 /* Not needed here */
|
|
||||||
/*******************************************************************************
|
|
||||||
* ethernet_set_config_reg - Set specified bits in configuration register.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This function sets specified bits in the given ethernet
|
|
||||||
* configuration register.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
|
|
||||||
* unsigned int value 32 bit value.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* The set bits in the value parameter are set in the configuration
|
|
||||||
* register.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* None.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static void ethernet_set_config_reg (ETH_PORT eth_port_num,
|
|
||||||
unsigned int value)
|
|
||||||
{
|
|
||||||
unsigned int eth_config_reg;
|
|
||||||
|
|
||||||
eth_config_reg =
|
|
||||||
MV_REG_READ (MV64460_ETH_PORT_CONFIG_REG (eth_port_num));
|
|
||||||
eth_config_reg |= value;
|
|
||||||
MV_REG_WRITE (MV64460_ETH_PORT_CONFIG_REG (eth_port_num),
|
|
||||||
eth_config_reg);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0 /* FIXME */
|
|
||||||
/*******************************************************************************
|
|
||||||
* ethernet_reset_config_reg - Reset specified bits in configuration register.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This function resets specified bits in the given Ethernet
|
|
||||||
* configuration register.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
|
|
||||||
* unsigned int value 32 bit value.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* The set bits in the value parameter are reset in the configuration
|
|
||||||
* register.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* None.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static void ethernet_reset_config_reg (ETH_PORT eth_port_num,
|
|
||||||
unsigned int value)
|
|
||||||
{
|
|
||||||
unsigned int eth_config_reg;
|
|
||||||
|
|
||||||
eth_config_reg = MV_REG_READ (MV64460_ETH_PORT_CONFIG_EXTEND_REG
|
|
||||||
(eth_port_num));
|
|
||||||
eth_config_reg &= ~value;
|
|
||||||
MV_REG_WRITE (MV64460_ETH_PORT_CONFIG_EXTEND_REG (eth_port_num),
|
|
||||||
eth_config_reg);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0 /* Not needed here */
|
|
||||||
/*******************************************************************************
|
|
||||||
* ethernet_get_config_reg - Get the port configuration register
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This function returns the configuration register value of the given
|
|
||||||
* ethernet port.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* None.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* Port configuration register value.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static unsigned int ethernet_get_config_reg (ETH_PORT eth_port_num)
|
|
||||||
{
|
|
||||||
unsigned int eth_config_reg;
|
|
||||||
|
|
||||||
eth_config_reg = MV_REG_READ (MV64460_ETH_PORT_CONFIG_EXTEND_REG
|
|
||||||
(eth_port_num));
|
|
||||||
return eth_config_reg;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* eth_port_read_smi_reg - Read PHY registers
|
* eth_port_read_smi_reg - Read PHY registers
|
||||||
|
@ -3092,24 +2720,6 @@ static ETH_FUNC_RET_STATUS eth_rx_return_buff (ETH_PORT_INFO *
|
||||||
* The interrupt coalescing value set in the gigE port.
|
* The interrupt coalescing value set in the gigE port.
|
||||||
*
|
*
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
#if 0 /* FIXME */
|
|
||||||
static unsigned int eth_port_set_rx_coal (ETH_PORT eth_port_num,
|
|
||||||
unsigned int t_clk,
|
|
||||||
unsigned int delay)
|
|
||||||
{
|
|
||||||
unsigned int coal;
|
|
||||||
|
|
||||||
coal = ((t_clk / 1000000) * delay) / 64;
|
|
||||||
/* Set RX Coalescing mechanism */
|
|
||||||
MV_REG_WRITE (MV64460_ETH_SDMA_CONFIG_REG (eth_port_num),
|
|
||||||
((coal & 0x3fff) << 8) |
|
|
||||||
(MV_REG_READ
|
|
||||||
(MV64460_ETH_SDMA_CONFIG_REG (eth_port_num))
|
|
||||||
& 0xffc000ff));
|
|
||||||
return coal;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* eth_port_set_tx_coal - Sets coalescing interrupt mechanism on TX path
|
* eth_port_set_tx_coal - Sets coalescing interrupt mechanism on TX path
|
||||||
*
|
*
|
||||||
|
@ -3133,20 +2743,6 @@ static unsigned int eth_port_set_rx_coal (ETH_PORT eth_port_num,
|
||||||
* The interrupt coalescing value set in the gigE port.
|
* The interrupt coalescing value set in the gigE port.
|
||||||
*
|
*
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
#if 0 /* FIXME */
|
|
||||||
static unsigned int eth_port_set_tx_coal (ETH_PORT eth_port_num,
|
|
||||||
unsigned int t_clk,
|
|
||||||
unsigned int delay)
|
|
||||||
{
|
|
||||||
unsigned int coal;
|
|
||||||
|
|
||||||
coal = ((t_clk / 1000000) * delay) / 64;
|
|
||||||
/* Set TX Coalescing mechanism */
|
|
||||||
MV_REG_WRITE (MV64460_ETH_TX_FIFO_URGENT_THRESHOLD_REG (eth_port_num),
|
|
||||||
coal << 4);
|
|
||||||
return coal;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* eth_b_copy - Copy bytes from source to destination
|
* eth_b_copy - Copy bytes from source to destination
|
||||||
|
|
|
@ -788,12 +788,6 @@ static bool eth_port_start(ETH_PORT_INFO *p_eth_port_ctrl);
|
||||||
static void eth_port_uc_addr_set (ETH_PORT eth_port_num,
|
static void eth_port_uc_addr_set (ETH_PORT eth_port_num,
|
||||||
unsigned char *p_addr,
|
unsigned char *p_addr,
|
||||||
ETH_QUEUE queue);
|
ETH_QUEUE queue);
|
||||||
#if 0 /* FIXME */
|
|
||||||
static void eth_port_mc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char *p_addr,
|
|
||||||
ETH_QUEUE queue,
|
|
||||||
int option);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* PHY and MIB routines */
|
/* PHY and MIB routines */
|
||||||
static bool ethernet_phy_reset(ETH_PORT eth_port_num);
|
static bool ethernet_phy_reset(ETH_PORT eth_port_num);
|
||||||
|
|
|
@ -812,21 +812,6 @@ static void gt_setup_ide (struct pci_controller *hose,
|
||||||
|
|
||||||
/* TODO BJW: Change this for DB64360. This was pulled from the EV64260 */
|
/* TODO BJW: Change this for DB64360. This was pulled from the EV64260 */
|
||||||
/* and is curently not called *. */
|
/* and is curently not called *. */
|
||||||
#if 0
|
|
||||||
static void gt_fixup_irq (struct pci_controller *hose, pci_dev_t dev)
|
|
||||||
{
|
|
||||||
unsigned char pin, irq;
|
|
||||||
|
|
||||||
pci_read_config_byte (dev, PCI_INTERRUPT_PIN, &pin);
|
|
||||||
|
|
||||||
if (pin == 1) { /* only allow INT A */
|
|
||||||
irq = pci_irq_swizzle[(PCI_HOST) hose->
|
|
||||||
cfg_addr][PCI_DEV (dev)];
|
|
||||||
if (irq)
|
|
||||||
pci_write_config_byte (dev, PCI_INTERRUPT_LINE, irq);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct pci_config_table gt_config_table[] = {
|
struct pci_config_table gt_config_table[] = {
|
||||||
{PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE,
|
{PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE,
|
||||||
|
|
|
@ -196,49 +196,6 @@ unsigned int pciGetSpaceSize(PCI_HOST host, PCI_REGION region);
|
||||||
void pciMapMemoryBank(PCI_HOST host, MEMORY_BANK bank,
|
void pciMapMemoryBank(PCI_HOST host, MEMORY_BANK bank,
|
||||||
unsigned int pci0Dram0Base, unsigned int pci0Dram0Size);
|
unsigned int pci0Dram0Base, unsigned int pci0Dram0Size);
|
||||||
|
|
||||||
#if 0 /* GARBAGE routines - dont use till they get cleaned up */
|
|
||||||
void pci0ScanSelfBars(PCI_SELF_BARS *pci0SelfBars);
|
|
||||||
void pci1ScanSelfBars(PCI_SELF_BARS *pci1SelfBars);
|
|
||||||
void pci0MapInternalRegSpace(unsigned int pci0InternalBase);
|
|
||||||
void pci1MapInternalRegSpace(unsigned int pci1InternalBase);
|
|
||||||
void pci0MapInternalRegIOSpace(unsigned int pci0InternalBase);
|
|
||||||
void pci1MapInternalRegIOSpace(unsigned int pci1InternalBase);
|
|
||||||
void pci0MapDevice0MemorySpace(unsigned int pci0Dev0Base,
|
|
||||||
unsigned int pci0Dev0Length);
|
|
||||||
void pci1MapDevice0MemorySpace(unsigned int pci1Dev0Base,
|
|
||||||
unsigned int pci1Dev0Length);
|
|
||||||
void pci0MapDevice1MemorySpace(unsigned int pci0Dev1Base,
|
|
||||||
unsigned int pci0Dev1Length);
|
|
||||||
void pci1MapDevice1MemorySpace(unsigned int pci1Dev1Base,
|
|
||||||
unsigned int pci1Dev1Length);
|
|
||||||
void pci0MapDevice2MemorySpace(unsigned int pci0Dev2Base,
|
|
||||||
unsigned int pci0Dev2Length);
|
|
||||||
void pci1MapDevice2MemorySpace(unsigned int pci1Dev2Base,
|
|
||||||
unsigned int pci1Dev2Length);
|
|
||||||
void pci0MapDevice3MemorySpace(unsigned int pci0Dev3Base,
|
|
||||||
unsigned int pci0Dev3Length);
|
|
||||||
void pci1MapDevice3MemorySpace(unsigned int pci1Dev3Base,
|
|
||||||
unsigned int pci1Dev3Length);
|
|
||||||
void pci0MapBootDeviceMemorySpace(unsigned int pci0DevBootBase,
|
|
||||||
unsigned int pci0DevBootLength);
|
|
||||||
void pci1MapBootDeviceMemorySpace(unsigned int pci1DevBootBase,
|
|
||||||
unsigned int pci1DevBootLength);
|
|
||||||
void pci0MapP2pMem0Space(unsigned int pci0P2pMem0Base,
|
|
||||||
unsigned int pci0P2pMem0Length);
|
|
||||||
void pci1MapP2pMem0Space(unsigned int pci1P2pMem0Base,
|
|
||||||
unsigned int pci1P2pMem0Length);
|
|
||||||
void pci0MapP2pMem1Space(unsigned int pci0P2pMem1Base,
|
|
||||||
unsigned int pci0P2pMem1Length);
|
|
||||||
void pci1MapP2pMem1Space(unsigned int pci1P2pMem1Base,
|
|
||||||
unsigned int pci1P2pMem1Length);
|
|
||||||
void pci0MapP2pIoSpace(unsigned int pci0P2pIoBase,
|
|
||||||
unsigned int pci0P2pIoLength);
|
|
||||||
void pci1MapP2pIoSpace(unsigned int pci1P2pIoBase,
|
|
||||||
unsigned int pci1P2pIoLength);
|
|
||||||
|
|
||||||
void pci0MapCPUspace(unsigned int pci0CpuBase, unsigned int pci0CpuLengs);
|
|
||||||
void pci1MapCPUspace(unsigned int pci1CpuBase, unsigned int pci1CpuLengs);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* PCI region options */
|
/* PCI region options */
|
||||||
|
|
||||||
|
|
|
@ -26,21 +26,10 @@
|
||||||
|
|
||||||
void pcmcia_power_on(void)
|
void pcmcia_power_on(void)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
if (!(GPLR(20) & GPIO_bit(20))) { /* 3.3V */
|
|
||||||
GPCR(81) = GPIO_bit(81);
|
|
||||||
GPSR(82) = GPIO_bit(82);
|
|
||||||
}
|
|
||||||
else if (!(GPLR(21) & GPIO_bit(21))) { /* 5.0V */
|
|
||||||
GPCR(81) = GPIO_bit(81);
|
|
||||||
GPCR(82) = GPIO_bit(82);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
#warning "Board will only supply 5V, wait for next HW spin for selectable power"
|
#warning "Board will only supply 5V, wait for next HW spin for selectable power"
|
||||||
/* 5.0V */
|
/* 5.0V */
|
||||||
GPCR(81) = GPIO_bit(81);
|
GPCR(81) = GPIO_bit(81);
|
||||||
GPCR(82) = GPIO_bit(82);
|
GPCR(82) = GPIO_bit(82);
|
||||||
#endif
|
|
||||||
|
|
||||||
udelay(300000);
|
udelay(300000);
|
||||||
|
|
||||||
|
|
|
@ -419,19 +419,6 @@ int testdram(void)
|
||||||
int pci_pre_init(struct pci_controller *hose)
|
int pci_pre_init(struct pci_controller *hose)
|
||||||
{
|
{
|
||||||
unsigned long addr;
|
unsigned long addr;
|
||||||
#if 0
|
|
||||||
/*--------------------------------------------------------------------------+
|
|
||||||
* Cactus is always configured as the host & requires the
|
|
||||||
* PCI arbiter to be enabled ???
|
|
||||||
*--------------------------------------------------------------------------*/
|
|
||||||
unsigned long strap;
|
|
||||||
mfsdr(sdr_sdstp1, strap);
|
|
||||||
if ((strap & SDR0_SDSTP1_PAE_MASK) == 0) {
|
|
||||||
printf("PCI: SDR0_STRP1[PAE] not set.\n");
|
|
||||||
printf("PCI: Configuration aborted.\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------+
|
/*-------------------------------------------------------------------------+
|
||||||
| Set priority for all PLB3 devices to 0.
|
| Set priority for all PLB3 devices to 0.
|
||||||
|
|
|
@ -83,14 +83,6 @@ int board_early_init_f(void)
|
||||||
out32(GPIO1_TSRL, in32(GPIO1_TSRL) & ~0x0000ff00);
|
out32(GPIO1_TSRL, in32(GPIO1_TSRL) & ~0x0000ff00);
|
||||||
out32(GPIO1_ISR1L, in32(GPIO1_ISR1L) | 0x00005500);
|
out32(GPIO1_ISR1L, in32(GPIO1_ISR1L) | 0x00005500);
|
||||||
|
|
||||||
#if 0 /* test-only */
|
|
||||||
/*setup USB 2.0 */
|
|
||||||
out32(GPIO1_TCR, in32(GPIO1_TCR) | 0xc0000000);
|
|
||||||
out32(GPIO1_OSRL, in32(GPIO1_OSRL) | 0x50000000);
|
|
||||||
out32(GPIO0_TCR, in32(GPIO0_TCR) | 0xf);
|
|
||||||
out32(GPIO0_OSRH, in32(GPIO0_OSRH) | 0xaa);
|
|
||||||
out32(GPIO0_ISR2H, in32(GPIO0_ISR2H) | 0x00000500);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------
|
/*--------------------------------------------------------------------
|
||||||
* Setup the interrupt controller polarities, triggers, etc.
|
* Setup the interrupt controller polarities, triggers, etc.
|
||||||
|
@ -125,10 +117,6 @@ int board_early_init_f(void)
|
||||||
/*enable ethernet */
|
/*enable ethernet */
|
||||||
*(unsigned char *)(CFG_BCSR_BASE | 0x08) = 0xf0;
|
*(unsigned char *)(CFG_BCSR_BASE | 0x08) = 0xf0;
|
||||||
|
|
||||||
#if 0 /* test-only */
|
|
||||||
/*enable usb 1.1 fs device and remove usb 2.0 reset */
|
|
||||||
*(unsigned char *)(CFG_BCSR_BASE | 0x09) = 0x00;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*get rid of flash write protect */
|
/*get rid of flash write protect */
|
||||||
*(unsigned char *)(CFG_BCSR_BASE | 0x07) = 0x00;
|
*(unsigned char *)(CFG_BCSR_BASE | 0x07) = 0x00;
|
||||||
|
|
|
@ -219,9 +219,6 @@ static uchar *key_match (uchar *kbd_data)
|
||||||
*/
|
*/
|
||||||
for (suffix=(uchar *)kbd_magic_keys; *suffix || suffix==(uchar *)kbd_magic_keys; ++suffix) {
|
for (suffix=(uchar *)kbd_magic_keys; *suffix || suffix==(uchar *)kbd_magic_keys; ++suffix) {
|
||||||
sprintf (magic, "%s%c", kbd_magic_prefix, *suffix);
|
sprintf (magic, "%s%c", kbd_magic_prefix, *suffix);
|
||||||
#if 0
|
|
||||||
printf ("### Check magic \"%s\"\n", magic);
|
|
||||||
#endif
|
|
||||||
if (compare_magic(kbd_data, (uchar *)getenv(magic)) == 0) {
|
if (compare_magic(kbd_data, (uchar *)getenv(magic)) == 0) {
|
||||||
char cmd_name[sizeof (kbd_command_prefix) + 1];
|
char cmd_name[sizeof (kbd_command_prefix) + 1];
|
||||||
char *cmd;
|
char *cmd;
|
||||||
|
@ -229,17 +226,10 @@ static uchar *key_match (uchar *kbd_data)
|
||||||
sprintf (cmd_name, "%s%c", kbd_command_prefix, *suffix);
|
sprintf (cmd_name, "%s%c", kbd_command_prefix, *suffix);
|
||||||
|
|
||||||
cmd = getenv (cmd_name);
|
cmd = getenv (cmd_name);
|
||||||
#if 0
|
|
||||||
printf ("### Set PREBOOT to $(%s): \"%s\"\n",
|
|
||||||
cmd_name, cmd ? cmd : "<<NULL>>");
|
|
||||||
#endif
|
|
||||||
*kbd_data = *suffix;
|
*kbd_data = *suffix;
|
||||||
return ((uchar *)cmd);
|
return ((uchar *)cmd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
printf ("### Delete PREBOOT\n");
|
|
||||||
#endif
|
|
||||||
*kbd_data = '\0';
|
*kbd_data = '\0';
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
@ -352,13 +342,3 @@ static void init_DA9030()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* reset the DA9030 watchdog */
|
|
||||||
void hw_watchdog_reset(void)
|
|
||||||
{
|
|
||||||
uchar addr = (uchar) DA9030_I2C_ADDR, val = 0;
|
|
||||||
val = i2c_reg_read(addr, SYS_CONTROL_A);
|
|
||||||
val |= SYS_CONTROL_A_WATCHDOG;
|
|
||||||
i2c_reg_write(addr, SYS_CONTROL_A, val);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -74,17 +74,6 @@ static void dfc_hwcontrol(struct mtd_info *mtdinfo, int cmd)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* read device ready pin */
|
|
||||||
static int dfc_device_ready(struct mtd_info *mtdinfo)
|
|
||||||
{
|
|
||||||
if(NDSR & NDSR_RDY)
|
|
||||||
return 1;
|
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Write buf to the DFC Controller Data Buffer
|
* Write buf to the DFC Controller Data Buffer
|
||||||
|
|
|
@ -36,10 +36,6 @@ long int initdram (int board_type)
|
||||||
{
|
{
|
||||||
ulong dramsize = 0;
|
ulong dramsize = 0;
|
||||||
#ifndef CFG_RAMBOOT
|
#ifndef CFG_RAMBOOT
|
||||||
#if 0
|
|
||||||
ulong t;
|
|
||||||
ulong tap_del;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MODE_EN 0x80000000
|
#define MODE_EN 0x80000000
|
||||||
#define SOFT_PRE 2
|
#define SOFT_PRE 2
|
||||||
|
@ -74,29 +70,6 @@ long int initdram (int board_type)
|
||||||
/* write default TAP delay */
|
/* write default TAP delay */
|
||||||
*(vu_long *)MPC5XXX_CDM_PORCFG = CFG_DRAM_TAP_DEL << 24;
|
*(vu_long *)MPC5XXX_CDM_PORCFG = CFG_DRAM_TAP_DEL << 24;
|
||||||
|
|
||||||
#if 0
|
|
||||||
for (tap_del = 0; tap_del < 32; tap_del++)
|
|
||||||
{
|
|
||||||
*(vu_long *)MPC5XXX_CDM_PORCFG = tap_del << 24;
|
|
||||||
|
|
||||||
printf ("\nTAP Delay:%x Filling DRAM...", *(vu_long *)MPC5XXX_CDM_PORCFG);
|
|
||||||
for (t = 0; t < 0x04000000; t+=4)
|
|
||||||
*(vu_long *) t = t;
|
|
||||||
printf ("Checking DRAM...\n");
|
|
||||||
for (t = 0; t < 0x04000000; t+=4)
|
|
||||||
{
|
|
||||||
ulong rval = *(vu_long *) t;
|
|
||||||
if (rval != t)
|
|
||||||
{
|
|
||||||
printf ("mismatch at %x: ", t);
|
|
||||||
printf (" 1.read %x", rval);
|
|
||||||
printf (" 2.read %x", *(vu_long *) t);
|
|
||||||
printf (" 3.read %x", *(vu_long *) t);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif /* CFG_RAMBOOT */
|
#endif /* CFG_RAMBOOT */
|
||||||
|
|
||||||
dramsize = ((1 << (*(vu_long *)MPC5XXX_SDRAM_CS0CFG - 0x13)) << 20);
|
dramsize = ((1 << (*(vu_long *)MPC5XXX_SDRAM_CS0CFG - 0x13)) << 20);
|
||||||
|
|
|
@ -360,10 +360,6 @@ int misc_init_r ()
|
||||||
mpsc_init2 ();
|
mpsc_init2 ();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* disable the dcache and MMU */
|
|
||||||
dcache_lock ();
|
|
||||||
#endif
|
|
||||||
if (flash_info[3].size < CFG_FLASH_INCREMENT) {
|
if (flash_info[3].size < CFG_FLASH_INCREMENT) {
|
||||||
unsigned int flash_offset;
|
unsigned int flash_offset;
|
||||||
unsigned int l;
|
unsigned int l;
|
||||||
|
|
|
@ -194,11 +194,6 @@ static int mpsc_putchar_sdma (char ch)
|
||||||
p[2] = 0; /* 8 */
|
p[2] = 0; /* 8 */
|
||||||
p[3] = (unsigned int) &p[4]; /* c */
|
p[3] = (unsigned int) &p[4]; /* c */
|
||||||
|
|
||||||
#if 0
|
|
||||||
p[9] = DESC_FIRST | DESC_LAST;
|
|
||||||
p[10] = (unsigned int) &p[0];
|
|
||||||
p[11] = (unsigned int) &p[12];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
FLUSH_DCACHE (&p[0], &p[8]);
|
FLUSH_DCACHE (&p[0], &p[8]);
|
||||||
|
|
||||||
|
@ -588,18 +583,6 @@ static int galbrg_set_CUV (int channel, int value)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
static int galbrg_reset (int channel)
|
|
||||||
{
|
|
||||||
unsigned int temp;
|
|
||||||
|
|
||||||
temp = GTREGREAD (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP));
|
|
||||||
temp |= 0x20000;
|
|
||||||
GT_REG_WRITE (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP), temp);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int galsdma_set_RFT (int channel)
|
static int galsdma_set_RFT (int channel)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1309,14 +1309,6 @@ static void eth_set_access_control (ETH_PORT eth_port_num,
|
||||||
ETH_WIN_PARAM * param);
|
ETH_WIN_PARAM * param);
|
||||||
static bool eth_port_uc_addr (ETH_PORT eth_port_num, unsigned char uc_nibble,
|
static bool eth_port_uc_addr (ETH_PORT eth_port_num, unsigned char uc_nibble,
|
||||||
ETH_QUEUE queue, int option);
|
ETH_QUEUE queue, int option);
|
||||||
#if 0 /* FIXME */
|
|
||||||
static bool eth_port_smc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char mc_byte,
|
|
||||||
ETH_QUEUE queue, int option);
|
|
||||||
static bool eth_port_omc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char crc8,
|
|
||||||
ETH_QUEUE queue, int option);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void eth_b_copy (unsigned int src_addr, unsigned int dst_addr,
|
static void eth_b_copy (unsigned int src_addr, unsigned int dst_addr,
|
||||||
int byte_count);
|
int byte_count);
|
||||||
|
@ -1743,274 +1735,6 @@ static bool eth_port_uc_addr (ETH_PORT eth_port_num,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 /* FIXME */
|
|
||||||
/*******************************************************************************
|
|
||||||
* eth_port_mc_addr - Multicast address settings.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This API controls the MV device MAC multicast support.
|
|
||||||
* The MV device supports multicast using two tables:
|
|
||||||
* 1) Special Multicast Table for MAC addresses of the form
|
|
||||||
* 0x01-00-5E-00-00-XX (where XX is between 0x00 and 0x_fF).
|
|
||||||
* The MAC DA[7:0] bits are used as a pointer to the Special Multicast
|
|
||||||
* Table entries in the DA-Filter table.
|
|
||||||
* In this case, the function calls eth_port_smc_addr() routine to set the
|
|
||||||
* Special Multicast Table.
|
|
||||||
* 2) Other Multicast Table for multicast of another type. A CRC-8bit
|
|
||||||
* is used as an index to the Other Multicast Table entries in the
|
|
||||||
* DA-Filter table.
|
|
||||||
* In this case, the function calculates the CRC-8bit value and calls
|
|
||||||
* eth_port_omc_addr() routine to set the Other Multicast Table.
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Port number.
|
|
||||||
* unsigned char *p_addr Unicast MAC Address.
|
|
||||||
* ETH_QUEUE queue Rx queue number for this MAC address.
|
|
||||||
* int option 0 = Add, 1 = remove address.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* See description.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* true is output succeeded.
|
|
||||||
* false if add_address_table_entry( ) failed.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static void eth_port_mc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char *p_addr,
|
|
||||||
ETH_QUEUE queue, int option)
|
|
||||||
{
|
|
||||||
unsigned int mac_h;
|
|
||||||
unsigned int mac_l;
|
|
||||||
unsigned char crc_result = 0;
|
|
||||||
int mac_array[48];
|
|
||||||
int crc[8];
|
|
||||||
int i;
|
|
||||||
|
|
||||||
|
|
||||||
if ((p_addr[0] == 0x01) &&
|
|
||||||
(p_addr[1] == 0x00) &&
|
|
||||||
(p_addr[2] == 0x5E) && (p_addr[3] == 0x00) && (p_addr[4] == 0x00))
|
|
||||||
|
|
||||||
eth_port_smc_addr (eth_port_num, p_addr[5], queue, option);
|
|
||||||
else {
|
|
||||||
/* Calculate CRC-8 out of the given address */
|
|
||||||
mac_h = (p_addr[0] << 8) | (p_addr[1]);
|
|
||||||
mac_l = (p_addr[2] << 24) | (p_addr[3] << 16) |
|
|
||||||
(p_addr[4] << 8) | (p_addr[5] << 0);
|
|
||||||
|
|
||||||
for (i = 0; i < 32; i++)
|
|
||||||
mac_array[i] = (mac_l >> i) & 0x1;
|
|
||||||
for (i = 32; i < 48; i++)
|
|
||||||
mac_array[i] = (mac_h >> (i - 32)) & 0x1;
|
|
||||||
|
|
||||||
|
|
||||||
crc[0] = mac_array[45] ^ mac_array[43] ^ mac_array[40] ^
|
|
||||||
mac_array[39] ^ mac_array[35] ^ mac_array[34] ^
|
|
||||||
mac_array[31] ^ mac_array[30] ^ mac_array[28] ^
|
|
||||||
mac_array[23] ^ mac_array[21] ^ mac_array[19] ^
|
|
||||||
mac_array[18] ^ mac_array[16] ^ mac_array[14] ^
|
|
||||||
mac_array[12] ^ mac_array[8] ^ mac_array[7] ^
|
|
||||||
mac_array[6] ^ mac_array[0];
|
|
||||||
|
|
||||||
crc[1] = mac_array[46] ^ mac_array[45] ^ mac_array[44] ^
|
|
||||||
mac_array[43] ^ mac_array[41] ^ mac_array[39] ^
|
|
||||||
mac_array[36] ^ mac_array[34] ^ mac_array[32] ^
|
|
||||||
mac_array[30] ^ mac_array[29] ^ mac_array[28] ^
|
|
||||||
mac_array[24] ^ mac_array[23] ^ mac_array[22] ^
|
|
||||||
mac_array[21] ^ mac_array[20] ^ mac_array[18] ^
|
|
||||||
mac_array[17] ^ mac_array[16] ^ mac_array[15] ^
|
|
||||||
mac_array[14] ^ mac_array[13] ^ mac_array[12] ^
|
|
||||||
mac_array[9] ^ mac_array[6] ^ mac_array[1] ^
|
|
||||||
mac_array[0];
|
|
||||||
|
|
||||||
crc[2] = mac_array[47] ^ mac_array[46] ^ mac_array[44] ^
|
|
||||||
mac_array[43] ^ mac_array[42] ^ mac_array[39] ^
|
|
||||||
mac_array[37] ^ mac_array[34] ^ mac_array[33] ^
|
|
||||||
mac_array[29] ^ mac_array[28] ^ mac_array[25] ^
|
|
||||||
mac_array[24] ^ mac_array[22] ^ mac_array[17] ^
|
|
||||||
mac_array[15] ^ mac_array[13] ^ mac_array[12] ^
|
|
||||||
mac_array[10] ^ mac_array[8] ^ mac_array[6] ^
|
|
||||||
mac_array[2] ^ mac_array[1] ^ mac_array[0];
|
|
||||||
|
|
||||||
crc[3] = mac_array[47] ^ mac_array[45] ^ mac_array[44] ^
|
|
||||||
mac_array[43] ^ mac_array[40] ^ mac_array[38] ^
|
|
||||||
mac_array[35] ^ mac_array[34] ^ mac_array[30] ^
|
|
||||||
mac_array[29] ^ mac_array[26] ^ mac_array[25] ^
|
|
||||||
mac_array[23] ^ mac_array[18] ^ mac_array[16] ^
|
|
||||||
mac_array[14] ^ mac_array[13] ^ mac_array[11] ^
|
|
||||||
mac_array[9] ^ mac_array[7] ^ mac_array[3] ^
|
|
||||||
mac_array[2] ^ mac_array[1];
|
|
||||||
|
|
||||||
crc[4] = mac_array[46] ^ mac_array[45] ^ mac_array[44] ^
|
|
||||||
mac_array[41] ^ mac_array[39] ^ mac_array[36] ^
|
|
||||||
mac_array[35] ^ mac_array[31] ^ mac_array[30] ^
|
|
||||||
mac_array[27] ^ mac_array[26] ^ mac_array[24] ^
|
|
||||||
mac_array[19] ^ mac_array[17] ^ mac_array[15] ^
|
|
||||||
mac_array[14] ^ mac_array[12] ^ mac_array[10] ^
|
|
||||||
mac_array[8] ^ mac_array[4] ^ mac_array[3] ^
|
|
||||||
mac_array[2];
|
|
||||||
|
|
||||||
crc[5] = mac_array[47] ^ mac_array[46] ^ mac_array[45] ^
|
|
||||||
mac_array[42] ^ mac_array[40] ^ mac_array[37] ^
|
|
||||||
mac_array[36] ^ mac_array[32] ^ mac_array[31] ^
|
|
||||||
mac_array[28] ^ mac_array[27] ^ mac_array[25] ^
|
|
||||||
mac_array[20] ^ mac_array[18] ^ mac_array[16] ^
|
|
||||||
mac_array[15] ^ mac_array[13] ^ mac_array[11] ^
|
|
||||||
mac_array[9] ^ mac_array[5] ^ mac_array[4] ^
|
|
||||||
mac_array[3];
|
|
||||||
|
|
||||||
crc[6] = mac_array[47] ^ mac_array[46] ^ mac_array[43] ^
|
|
||||||
mac_array[41] ^ mac_array[38] ^ mac_array[37] ^
|
|
||||||
mac_array[33] ^ mac_array[32] ^ mac_array[29] ^
|
|
||||||
mac_array[28] ^ mac_array[26] ^ mac_array[21] ^
|
|
||||||
mac_array[19] ^ mac_array[17] ^ mac_array[16] ^
|
|
||||||
mac_array[14] ^ mac_array[12] ^ mac_array[10] ^
|
|
||||||
mac_array[6] ^ mac_array[5] ^ mac_array[4];
|
|
||||||
|
|
||||||
crc[7] = mac_array[47] ^ mac_array[44] ^ mac_array[42] ^
|
|
||||||
mac_array[39] ^ mac_array[38] ^ mac_array[34] ^
|
|
||||||
mac_array[33] ^ mac_array[30] ^ mac_array[29] ^
|
|
||||||
mac_array[27] ^ mac_array[22] ^ mac_array[20] ^
|
|
||||||
mac_array[18] ^ mac_array[17] ^ mac_array[15] ^
|
|
||||||
mac_array[13] ^ mac_array[11] ^ mac_array[7] ^
|
|
||||||
mac_array[6] ^ mac_array[5];
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
crc_result = crc_result | (crc[i] << i);
|
|
||||||
|
|
||||||
eth_port_omc_addr (eth_port_num, crc_result, queue, option);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
* eth_port_smc_addr - Special Multicast address settings.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This routine controls the MV device special MAC multicast support.
|
|
||||||
* The Special Multicast Table for MAC addresses supports MAC of the form
|
|
||||||
* 0x01-00-5E-00-00-XX (where XX is between 0x00 and 0x_fF).
|
|
||||||
* The MAC DA[7:0] bits are used as a pointer to the Special Multicast
|
|
||||||
* Table entries in the DA-Filter table.
|
|
||||||
* This function set the Special Multicast Table appropriate entry
|
|
||||||
* according to the argument given.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Port number.
|
|
||||||
* unsigned char mc_byte Multicast addr last byte (MAC DA[7:0] bits).
|
|
||||||
* ETH_QUEUE queue Rx queue number for this MAC address.
|
|
||||||
* int option 0 = Add, 1 = remove address.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* See description.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* true is output succeeded.
|
|
||||||
* false if option parameter is invalid.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static bool eth_port_smc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char mc_byte,
|
|
||||||
ETH_QUEUE queue, int option)
|
|
||||||
{
|
|
||||||
unsigned int smc_table_reg;
|
|
||||||
unsigned int tbl_offset;
|
|
||||||
unsigned int reg_offset;
|
|
||||||
|
|
||||||
/* Locate the SMC table entry */
|
|
||||||
tbl_offset = (mc_byte / 4) * 4; /* Register offset from SMC table base */
|
|
||||||
reg_offset = mc_byte % 4; /* Entry offset within the above register */
|
|
||||||
queue &= 0x7;
|
|
||||||
|
|
||||||
switch (option) {
|
|
||||||
case REJECT_MAC_ADDR:
|
|
||||||
/* Clear accepts frame bit at specified Special DA table entry */
|
|
||||||
smc_table_reg =
|
|
||||||
MV_REG_READ ((MV64360_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
|
|
||||||
smc_table_reg &= (0x0E << (8 * reg_offset));
|
|
||||||
|
|
||||||
MV_REG_WRITE ((MV64360_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), smc_table_reg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ACCEPT_MAC_ADDR:
|
|
||||||
/* Set accepts frame bit at specified Special DA table entry */
|
|
||||||
smc_table_reg =
|
|
||||||
MV_REG_READ ((MV64360_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
|
|
||||||
smc_table_reg |= ((0x01 | queue) << (8 * reg_offset));
|
|
||||||
|
|
||||||
MV_REG_WRITE ((MV64360_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), smc_table_reg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
* eth_port_omc_addr - Multicast address settings.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This routine controls the MV device Other MAC multicast support.
|
|
||||||
* The Other Multicast Table is used for multicast of another type.
|
|
||||||
* A CRC-8bit is used as an index to the Other Multicast Table entries
|
|
||||||
* in the DA-Filter table.
|
|
||||||
* The function gets the CRC-8bit value from the calling routine and
|
|
||||||
* set the Other Multicast Table appropriate entry according to the
|
|
||||||
* CRC-8 argument given.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Port number.
|
|
||||||
* unsigned char crc8 A CRC-8bit (Polynomial: x^8+x^2+x^1+1).
|
|
||||||
* ETH_QUEUE queue Rx queue number for this MAC address.
|
|
||||||
* int option 0 = Add, 1 = remove address.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* See description.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* true is output succeeded.
|
|
||||||
* false if option parameter is invalid.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static bool eth_port_omc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char crc8,
|
|
||||||
ETH_QUEUE queue, int option)
|
|
||||||
{
|
|
||||||
unsigned int omc_table_reg;
|
|
||||||
unsigned int tbl_offset;
|
|
||||||
unsigned int reg_offset;
|
|
||||||
|
|
||||||
/* Locate the OMC table entry */
|
|
||||||
tbl_offset = (crc8 / 4) * 4; /* Register offset from OMC table base */
|
|
||||||
reg_offset = crc8 % 4; /* Entry offset within the above register */
|
|
||||||
queue &= 0x7;
|
|
||||||
|
|
||||||
switch (option) {
|
|
||||||
case REJECT_MAC_ADDR:
|
|
||||||
/* Clear accepts frame bit at specified Other DA table entry */
|
|
||||||
omc_table_reg =
|
|
||||||
MV_REG_READ ((MV64360_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
|
|
||||||
omc_table_reg &= (0x0E << (8 * reg_offset));
|
|
||||||
|
|
||||||
MV_REG_WRITE ((MV64360_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), omc_table_reg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ACCEPT_MAC_ADDR:
|
|
||||||
/* Set accepts frame bit at specified Other DA table entry */
|
|
||||||
omc_table_reg =
|
|
||||||
MV_REG_READ ((MV64360_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
|
|
||||||
omc_table_reg |= ((0x01 | queue) << (8 * reg_offset));
|
|
||||||
|
|
||||||
MV_REG_WRITE ((MV64360_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), omc_table_reg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* eth_port_init_mac_tables - Clear all entrance in the UC, SMC and OMC tables
|
* eth_port_init_mac_tables - Clear all entrance in the UC, SMC and OMC tables
|
||||||
|
@ -2279,104 +2003,8 @@ static void eth_port_reset (ETH_PORT eth_port_num)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 /* Not needed here */
|
|
||||||
/*******************************************************************************
|
|
||||||
* ethernet_set_config_reg - Set specified bits in configuration register.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This function sets specified bits in the given ethernet
|
|
||||||
* configuration register.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
|
|
||||||
* unsigned int value 32 bit value.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* The set bits in the value parameter are set in the configuration
|
|
||||||
* register.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* None.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static void ethernet_set_config_reg (ETH_PORT eth_port_num,
|
|
||||||
unsigned int value)
|
|
||||||
{
|
|
||||||
unsigned int eth_config_reg;
|
|
||||||
|
|
||||||
eth_config_reg =
|
|
||||||
MV_REG_READ (MV64360_ETH_PORT_CONFIG_REG (eth_port_num));
|
|
||||||
eth_config_reg |= value;
|
|
||||||
MV_REG_WRITE (MV64360_ETH_PORT_CONFIG_REG (eth_port_num),
|
|
||||||
eth_config_reg);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0 /* FIXME */
|
|
||||||
/*******************************************************************************
|
|
||||||
* ethernet_reset_config_reg - Reset specified bits in configuration register.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This function resets specified bits in the given Ethernet
|
|
||||||
* configuration register.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
|
|
||||||
* unsigned int value 32 bit value.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* The set bits in the value parameter are reset in the configuration
|
|
||||||
* register.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* None.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static void ethernet_reset_config_reg (ETH_PORT eth_port_num,
|
|
||||||
unsigned int value)
|
|
||||||
{
|
|
||||||
unsigned int eth_config_reg;
|
|
||||||
|
|
||||||
eth_config_reg = MV_REG_READ (MV64360_ETH_PORT_CONFIG_EXTEND_REG
|
|
||||||
(eth_port_num));
|
|
||||||
eth_config_reg &= ~value;
|
|
||||||
MV_REG_WRITE (MV64360_ETH_PORT_CONFIG_EXTEND_REG (eth_port_num),
|
|
||||||
eth_config_reg);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0 /* Not needed here */
|
|
||||||
/*******************************************************************************
|
|
||||||
* ethernet_get_config_reg - Get the port configuration register
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This function returns the configuration register value of the given
|
|
||||||
* ethernet port.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* None.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* Port configuration register value.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static unsigned int ethernet_get_config_reg (ETH_PORT eth_port_num)
|
|
||||||
{
|
|
||||||
unsigned int eth_config_reg;
|
|
||||||
|
|
||||||
eth_config_reg = MV_REG_READ (MV64360_ETH_PORT_CONFIG_EXTEND_REG
|
|
||||||
(eth_port_num));
|
|
||||||
return eth_config_reg;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* eth_port_read_smi_reg - Read PHY registers
|
* eth_port_read_smi_reg - Read PHY registers
|
||||||
|
@ -3094,24 +2722,6 @@ static ETH_FUNC_RET_STATUS eth_rx_return_buff (ETH_PORT_INFO *
|
||||||
* The interrupt coalescing value set in the gigE port.
|
* The interrupt coalescing value set in the gigE port.
|
||||||
*
|
*
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
#if 0 /* FIXME */
|
|
||||||
static unsigned int eth_port_set_rx_coal (ETH_PORT eth_port_num,
|
|
||||||
unsigned int t_clk,
|
|
||||||
unsigned int delay)
|
|
||||||
{
|
|
||||||
unsigned int coal;
|
|
||||||
|
|
||||||
coal = ((t_clk / 1000000) * delay) / 64;
|
|
||||||
/* Set RX Coalescing mechanism */
|
|
||||||
MV_REG_WRITE (MV64360_ETH_SDMA_CONFIG_REG (eth_port_num),
|
|
||||||
((coal & 0x3fff) << 8) |
|
|
||||||
(MV_REG_READ
|
|
||||||
(MV64360_ETH_SDMA_CONFIG_REG (eth_port_num))
|
|
||||||
& 0xffc000ff));
|
|
||||||
return coal;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* eth_port_set_tx_coal - Sets coalescing interrupt mechanism on TX path
|
* eth_port_set_tx_coal - Sets coalescing interrupt mechanism on TX path
|
||||||
*
|
*
|
||||||
|
@ -3135,20 +2745,6 @@ static unsigned int eth_port_set_rx_coal (ETH_PORT eth_port_num,
|
||||||
* The interrupt coalescing value set in the gigE port.
|
* The interrupt coalescing value set in the gigE port.
|
||||||
*
|
*
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
#if 0 /* FIXME */
|
|
||||||
static unsigned int eth_port_set_tx_coal (ETH_PORT eth_port_num,
|
|
||||||
unsigned int t_clk,
|
|
||||||
unsigned int delay)
|
|
||||||
{
|
|
||||||
unsigned int coal;
|
|
||||||
|
|
||||||
coal = ((t_clk / 1000000) * delay) / 64;
|
|
||||||
/* Set TX Coalescing mechanism */
|
|
||||||
MV_REG_WRITE (MV64360_ETH_TX_FIFO_URGENT_THRESHOLD_REG (eth_port_num),
|
|
||||||
coal << 4);
|
|
||||||
return coal;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* eth_b_copy - Copy bytes from source to destination
|
* eth_b_copy - Copy bytes from source to destination
|
||||||
|
|
|
@ -792,12 +792,6 @@ static bool eth_port_start(ETH_PORT_INFO *p_eth_port_ctrl);
|
||||||
static void eth_port_uc_addr_set (ETH_PORT eth_port_num,
|
static void eth_port_uc_addr_set (ETH_PORT eth_port_num,
|
||||||
unsigned char *p_addr,
|
unsigned char *p_addr,
|
||||||
ETH_QUEUE queue);
|
ETH_QUEUE queue);
|
||||||
#if 0 /* FIXME */
|
|
||||||
static void eth_port_mc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char *p_addr,
|
|
||||||
ETH_QUEUE queue,
|
|
||||||
int option);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* PHY and MIB routines */
|
/* PHY and MIB routines */
|
||||||
static bool ethernet_phy_reset(ETH_PORT eth_port_num);
|
static bool ethernet_phy_reset(ETH_PORT eth_port_num);
|
||||||
|
|
|
@ -868,21 +868,6 @@ void gt_cpcidvi_out8(unsigned int offset, unsigned char data)
|
||||||
|
|
||||||
/* TODO BJW: Change this for DB64360. This was pulled from the EV64260 */
|
/* TODO BJW: Change this for DB64360. This was pulled from the EV64260 */
|
||||||
/* and is curently not called *. */
|
/* and is curently not called *. */
|
||||||
#if 0
|
|
||||||
static void gt_fixup_irq (struct pci_controller *hose, pci_dev_t dev)
|
|
||||||
{
|
|
||||||
unsigned char pin, irq;
|
|
||||||
|
|
||||||
pci_read_config_byte (dev, PCI_INTERRUPT_PIN, &pin);
|
|
||||||
|
|
||||||
if (pin == 1) { /* only allow INT A */
|
|
||||||
irq = pci_irq_swizzle[(PCI_HOST) hose->
|
|
||||||
cfg_addr][PCI_DEV (dev)];
|
|
||||||
if (irq)
|
|
||||||
pci_write_config_byte (dev, PCI_INTERRUPT_LINE, irq);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct pci_config_table gt_config_table[] = {
|
struct pci_config_table gt_config_table[] = {
|
||||||
#ifdef CONFIG_USE_CPCIDVI
|
#ifdef CONFIG_USE_CPCIDVI
|
||||||
|
|
|
@ -404,19 +404,6 @@ static int check_dimm (uchar slot, AUX_MEM_DIMM_INFO * dimmInfo)
|
||||||
/* calculate SPD checksum */
|
/* calculate SPD checksum */
|
||||||
/*------------------------------------------------------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------------------------------------------------------*/
|
||||||
spd_checksum = 0;
|
spd_checksum = 0;
|
||||||
#if 0 /* test-only */
|
|
||||||
for (i = 0; i <= 62; i++) {
|
|
||||||
spd_checksum += data[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((spd_checksum & 0xff) != data[63]) {
|
|
||||||
printf ("### Error in SPD Checksum !!! Is_value: %2x should value %2x\n", (unsigned int) (spd_checksum & 0xff), data[63]);
|
|
||||||
hang ();
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
printf ("SPD Checksum ok!\n");
|
|
||||||
#endif /* test-only */
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------------------------------------------------------*/
|
||||||
for (i = 2; i <= 35; i++) {
|
for (i = 2; i <= 35; i++) {
|
||||||
|
@ -1510,7 +1497,6 @@ int setup_sdram (AUX_MEM_DIMM_INFO * info)
|
||||||
|
|
||||||
/* map the bank */
|
/* map the bank */
|
||||||
memory_map_bank (i, 0, GB / 4);
|
memory_map_bank (i, 0, GB / 4);
|
||||||
#if 1 /* test only */
|
|
||||||
/* set SDRAM mode */ /* To_do check it */
|
/* set SDRAM mode */ /* To_do check it */
|
||||||
GT_REG_WRITE (SDRAM_OPERATION, 0x3);
|
GT_REG_WRITE (SDRAM_OPERATION, 0x3);
|
||||||
check = GTREGREAD (SDRAM_OPERATION);
|
check = GTREGREAD (SDRAM_OPERATION);
|
||||||
|
@ -1525,7 +1511,6 @@ int setup_sdram (AUX_MEM_DIMM_INFO * info)
|
||||||
DP (printf
|
DP (printf
|
||||||
("\n*** SDRAM_OPERATION 1418 (0 = Normal Operation) = %08lx ***\n",
|
("\n*** SDRAM_OPERATION 1418 (0 = Normal Operation) = %08lx ***\n",
|
||||||
check));
|
check));
|
||||||
#endif /* test only */
|
|
||||||
/* unmap the bank */
|
/* unmap the bank */
|
||||||
memory_map_bank (i, 0, 0);
|
memory_map_bank (i, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,61 +29,5 @@
|
||||||
#ifndef __SERIAL_H__
|
#ifndef __SERIAL_H__
|
||||||
#define __SERIAL_H__
|
#define __SERIAL_H__
|
||||||
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
#define B230400 1
|
|
||||||
#define B115200 2
|
|
||||||
#define B57600 4
|
|
||||||
#define B38400 82
|
|
||||||
#define B19200 163
|
|
||||||
#define B9600 24
|
|
||||||
#define B4800 651
|
|
||||||
#define B2400 1302
|
|
||||||
#define B1200 2604
|
|
||||||
#define B600 5208
|
|
||||||
#define B300 10417
|
|
||||||
#define B150 20833
|
|
||||||
#define B110 28409
|
|
||||||
#define BDEFAULT B115200
|
|
||||||
|
|
||||||
/* this stuff is important to initialize
|
|
||||||
the DUART channels */
|
|
||||||
|
|
||||||
#define Scale 0x01L /* distance between port addresses */
|
|
||||||
#define COM1 0x000003f8 /* Keyboard */
|
|
||||||
#define COM2 0x000002f8 /* Host */
|
|
||||||
|
|
||||||
|
|
||||||
/* Port Definitions relative to base COM port addresses */
|
|
||||||
#define DataIn (0x00*Scale) /* data input port */
|
|
||||||
#define DataOut (0x00*Scale) /* data output port */
|
|
||||||
#define BaudLsb (0x00*Scale) /* baud rate divisor least significant byte */
|
|
||||||
#define BaudMsb (0x01*Scale) /* baud rate divisor most significant byte */
|
|
||||||
#define Ier (0x01*Scale) /* interrupt enable register */
|
|
||||||
#define Iir (0x02*Scale) /* interrupt identification register */
|
|
||||||
#define Lcr (0x03*Scale) /* line control register */
|
|
||||||
#define Mcr (0x04*Scale) /* modem control register */
|
|
||||||
#define Lsr (0x05*Scale) /* line status register */
|
|
||||||
#define Msr (0x06*Scale) /* modem status register */
|
|
||||||
|
|
||||||
/* Bit Definitions for above ports */
|
|
||||||
#define LcrDlab 0x80 /* b7: enable baud rate divisor registers */
|
|
||||||
#define LcrDflt 0x03 /* b6-0: no parity, 1 stop, 8 data */
|
|
||||||
|
|
||||||
#define McrRts 0x02 /* b1: request to send (I am ready to xmit) */
|
|
||||||
#define McrDtr 0x01 /* b0: data terminal ready (I am alive ready to rcv) */
|
|
||||||
#define McrDflt (McrRts|McrDtr)
|
|
||||||
|
|
||||||
#define LsrTxD 0x6000 /* b5: transmit holding register empty (i.e. xmit OK!)*/
|
|
||||||
/* b6: transmitter empty */
|
|
||||||
#define LsrRxD 0x0100 /* b0: received data ready (i.e. got a byte!) */
|
|
||||||
|
|
||||||
#define MsrRi 0x0040 /* b6: ring indicator (other guy is ready to rcv) */
|
|
||||||
#define MsrDsr 0x0020 /* b5: data set ready (other guy is alive ready to rcv */
|
|
||||||
#define MsrCts 0x0010 /* b4: clear to send (other guy is ready to rcv) */
|
|
||||||
|
|
||||||
#define IerRda 0xf /* b0: Enable received data available interrupt */
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __SERIAL_H__ */
|
#endif /* __SERIAL_H__ */
|
||||||
|
|
|
@ -164,10 +164,6 @@ long int initdram (int board_type)
|
||||||
mtdcr(memcfga, mem_mb0cf);
|
mtdcr(memcfga, mem_mb0cf);
|
||||||
val = mfdcr(memcfgd);
|
val = mfdcr(memcfgd);
|
||||||
|
|
||||||
#if 0
|
|
||||||
printf("\nmb0cf=%x\n", val); /* test-only */
|
|
||||||
printf("strap=%x\n", mfdcr(strap)); /* test-only */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return (4*1024*1024 << ((val & 0x000e0000) >> 17));
|
return (4*1024*1024 << ((val & 0x000e0000) >> 17));
|
||||||
}
|
}
|
||||||
|
|
|
@ -200,19 +200,6 @@ long int initdram (int board_type)
|
||||||
memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
|
memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
|
||||||
udelay (1000);
|
udelay (1000);
|
||||||
|
|
||||||
#if 0 /* 3 x 8MB */
|
|
||||||
size_b0 = 0x00800000;
|
|
||||||
size_b1 = 0x00800000;
|
|
||||||
size_b2 = 0x00800000;
|
|
||||||
memctl->memc_mptpr = CFG_MPTPR;
|
|
||||||
udelay (1000);
|
|
||||||
memctl->memc_or1 = 0xFF800A00;
|
|
||||||
memctl->memc_br1 = 0x00000081;
|
|
||||||
memctl->memc_or2 = 0xFF000A00;
|
|
||||||
memctl->memc_br2 = 0x00800081;
|
|
||||||
memctl->memc_or3 = 0xFE000A00;
|
|
||||||
memctl->memc_br3 = 0x01000081;
|
|
||||||
#else /* 3 x 16 MB */
|
|
||||||
size_b0 = 0x01000000;
|
size_b0 = 0x01000000;
|
||||||
size_b1 = 0x01000000;
|
size_b1 = 0x01000000;
|
||||||
size_b2 = 0x01000000;
|
size_b2 = 0x01000000;
|
||||||
|
@ -224,7 +211,6 @@ long int initdram (int board_type)
|
||||||
memctl->memc_br2 = 0x01000081;
|
memctl->memc_br2 = 0x01000081;
|
||||||
memctl->memc_or3 = 0xFC000A00;
|
memctl->memc_or3 = 0xFC000A00;
|
||||||
memctl->memc_br3 = 0x02000081;
|
memctl->memc_br3 = 0x02000081;
|
||||||
#endif
|
|
||||||
|
|
||||||
udelay (10000);
|
udelay (10000);
|
||||||
|
|
||||||
|
@ -320,12 +306,6 @@ void lcd_logo (bd_t * bd)
|
||||||
else
|
else
|
||||||
tft = 0;
|
tft = 0;
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
if (((S1D_VALUE *) fb_info.RegAddr)[0xAC] & 0x04)
|
|
||||||
tft = 0;
|
|
||||||
else
|
|
||||||
tft = 1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
debugk ("Port=0x%02x -> TFT=%d\n", tft,
|
debugk ("Port=0x%02x -> TFT=%d\n", tft,
|
||||||
((S1D_VALUE *) fb_info.RegAddr)[0xAC]);
|
((S1D_VALUE *) fb_info.RegAddr)[0xAC]);
|
||||||
|
|
|
@ -202,22 +202,6 @@ long int initdram (int board_type)
|
||||||
|
|
||||||
memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
|
memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
|
||||||
udelay (1000);
|
udelay (1000);
|
||||||
#if 0 /* 4 x 8MB */
|
|
||||||
size_b0 = 0x00800000;
|
|
||||||
size_b1 = 0x00800000;
|
|
||||||
size_b2 = 0x00800000;
|
|
||||||
size_b3 = 0x00800000;
|
|
||||||
memctl->memc_mptpr = CFG_MPTPR;
|
|
||||||
udelay (1000);
|
|
||||||
memctl->memc_or1 = 0xFF800A00;
|
|
||||||
memctl->memc_br1 = 0x00000081;
|
|
||||||
memctl->memc_or2 = 0xFF000A00;
|
|
||||||
memctl->memc_br2 = 0x00800081;
|
|
||||||
memctl->memc_or3 = 0xFE000A00;
|
|
||||||
memctl->memc_br3 = 0x01000081;
|
|
||||||
memctl->memc_or6 = 0xFE000A00;
|
|
||||||
memctl->memc_br6 = 0x01800081;
|
|
||||||
#else /* 4 x 16 MB */
|
|
||||||
size_b0 = 0x01000000;
|
size_b0 = 0x01000000;
|
||||||
size_b1 = 0x01000000;
|
size_b1 = 0x01000000;
|
||||||
size_b2 = 0x01000000;
|
size_b2 = 0x01000000;
|
||||||
|
@ -232,7 +216,6 @@ long int initdram (int board_type)
|
||||||
memctl->memc_br3 = 0x02000081;
|
memctl->memc_br3 = 0x02000081;
|
||||||
memctl->memc_or6 = 0xFC000A00;
|
memctl->memc_or6 = 0xFC000A00;
|
||||||
memctl->memc_br6 = 0x03000081;
|
memctl->memc_br6 = 0x03000081;
|
||||||
#endif
|
|
||||||
udelay (10000);
|
udelay (10000);
|
||||||
|
|
||||||
return (size_b0 + size_b1 + size_b2 + size_b3);
|
return (size_b0 + size_b1 + size_b2 + size_b3);
|
||||||
|
@ -247,50 +230,6 @@ long int initdram (int board_type)
|
||||||
* - short between address lines
|
* - short between address lines
|
||||||
* - short between data lines
|
* - short between data lines
|
||||||
*/
|
*/
|
||||||
#if 0
|
|
||||||
static long int dram_size (long int mamr_value, long int *base,
|
|
||||||
long int maxsize)
|
|
||||||
{
|
|
||||||
volatile immap_t *immap = (immap_t *) CFG_IMMR;
|
|
||||||
volatile memctl8xx_t *memctl = &immap->im_memctl;
|
|
||||||
volatile long int *addr;
|
|
||||||
ulong cnt, val;
|
|
||||||
ulong save[32]; /* to make test non-destructive */
|
|
||||||
unsigned char i = 0;
|
|
||||||
|
|
||||||
memctl->memc_mamr = mamr_value;
|
|
||||||
|
|
||||||
for (cnt = maxsize / sizeof (long); cnt > 0; cnt >>= 1) {
|
|
||||||
addr = base + cnt; /* pointer arith! */
|
|
||||||
|
|
||||||
save[i++] = *addr;
|
|
||||||
*addr = ~cnt;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* write 0 to base address */
|
|
||||||
addr = base;
|
|
||||||
save[i] = *addr;
|
|
||||||
*addr = 0;
|
|
||||||
|
|
||||||
/* check at base address */
|
|
||||||
if ((val = *addr) != 0) {
|
|
||||||
*addr = save[i];
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (cnt = 1; cnt <= maxsize / sizeof (long); cnt <<= 1) {
|
|
||||||
addr = base + cnt; /* pointer arith! */
|
|
||||||
|
|
||||||
val = *addr;
|
|
||||||
*addr = save[--i];
|
|
||||||
|
|
||||||
if (val != (~cnt)) {
|
|
||||||
return (cnt * sizeof (long));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return (maxsize);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int misc_init_r (void)
|
int misc_init_r (void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -53,16 +53,6 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||||
#define U_M_SDIV 0x2
|
#define U_M_SDIV 0x2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
static inline void delay (unsigned long loops)
|
|
||||||
{
|
|
||||||
__asm__ volatile ("1:\n"
|
|
||||||
"subs %0, %1, #1\n"
|
|
||||||
"bne 1b":"=r" (loops):"0" (loops));
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Miscellaneous platform dependent initialisations
|
* Miscellaneous platform dependent initialisations
|
||||||
|
|
|
@ -193,11 +193,6 @@ static int mpsc_putchar_sdma (char ch)
|
||||||
p[2] = 0; /* 8 */
|
p[2] = 0; /* 8 */
|
||||||
p[3] = (unsigned int) &p[4]; /* c */
|
p[3] = (unsigned int) &p[4]; /* c */
|
||||||
|
|
||||||
#if 0
|
|
||||||
p[9] = DESC_FIRST | DESC_LAST;
|
|
||||||
p[10] = (unsigned int) &p[0];
|
|
||||||
p[11] = (unsigned int) &p[12];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
FLUSH_DCACHE (&p[0], &p[8]);
|
FLUSH_DCACHE (&p[0], &p[8]);
|
||||||
|
|
||||||
|
@ -583,18 +578,6 @@ static int galbrg_set_CUV (int channel, int value)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
static int galbrg_reset (int channel)
|
|
||||||
{
|
|
||||||
unsigned int temp;
|
|
||||||
|
|
||||||
temp = GTREGREAD (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP));
|
|
||||||
temp |= 0x20000;
|
|
||||||
GT_REG_WRITE (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP), temp);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int galsdma_set_RFT (int channel)
|
static int galsdma_set_RFT (int channel)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1384,14 +1384,6 @@ static void eth_set_access_control (ETH_PORT eth_port_num,
|
||||||
ETH_WIN_PARAM * param);
|
ETH_WIN_PARAM * param);
|
||||||
static bool eth_port_uc_addr (ETH_PORT eth_port_num, unsigned char uc_nibble,
|
static bool eth_port_uc_addr (ETH_PORT eth_port_num, unsigned char uc_nibble,
|
||||||
ETH_QUEUE queue, int option);
|
ETH_QUEUE queue, int option);
|
||||||
#if 0 /* FIXME */
|
|
||||||
static bool eth_port_smc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char mc_byte,
|
|
||||||
ETH_QUEUE queue, int option);
|
|
||||||
static bool eth_port_omc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char crc8,
|
|
||||||
ETH_QUEUE queue, int option);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void eth_b_copy (unsigned int src_addr, unsigned int dst_addr,
|
static void eth_b_copy (unsigned int src_addr, unsigned int dst_addr,
|
||||||
int byte_count);
|
int byte_count);
|
||||||
|
@ -1817,272 +1809,6 @@ static bool eth_port_uc_addr (ETH_PORT eth_port_num,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 /* FIXME */
|
|
||||||
/*******************************************************************************
|
|
||||||
* eth_port_mc_addr - Multicast address settings.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This API controls the MV device MAC multicast support.
|
|
||||||
* The MV device supports multicast using two tables:
|
|
||||||
* 1) Special Multicast Table for MAC addresses of the form
|
|
||||||
* 0x01-00-5E-00-00-XX (where XX is between 0x00 and 0x_fF).
|
|
||||||
* The MAC DA[7:0] bits are used as a pointer to the Special Multicast
|
|
||||||
* Table entries in the DA-Filter table.
|
|
||||||
* In this case, the function calls eth_port_smc_addr() routine to set the
|
|
||||||
* Special Multicast Table.
|
|
||||||
* 2) Other Multicast Table for multicast of another type. A CRC-8bit
|
|
||||||
* is used as an index to the Other Multicast Table entries in the
|
|
||||||
* DA-Filter table.
|
|
||||||
* In this case, the function calculates the CRC-8bit value and calls
|
|
||||||
* eth_port_omc_addr() routine to set the Other Multicast Table.
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Port number.
|
|
||||||
* unsigned char *p_addr Unicast MAC Address.
|
|
||||||
* ETH_QUEUE queue Rx queue number for this MAC address.
|
|
||||||
* int option 0 = Add, 1 = remove address.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* See description.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* true is output succeeded.
|
|
||||||
* false if add_address_table_entry( ) failed.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static void eth_port_mc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char *p_addr,
|
|
||||||
ETH_QUEUE queue, int option)
|
|
||||||
{
|
|
||||||
unsigned int mac_h;
|
|
||||||
unsigned int mac_l;
|
|
||||||
unsigned char crc_result = 0;
|
|
||||||
int mac_array[48];
|
|
||||||
int crc[8];
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if ((p_addr[0] == 0x01) &&
|
|
||||||
(p_addr[1] == 0x00) &&
|
|
||||||
(p_addr[2] == 0x5E) && (p_addr[3] == 0x00) && (p_addr[4] == 0x00)) {
|
|
||||||
|
|
||||||
eth_port_smc_addr (eth_port_num, p_addr[5], queue, option);
|
|
||||||
} else {
|
|
||||||
/* Calculate CRC-8 out of the given address */
|
|
||||||
mac_h = (p_addr[0] << 8) | (p_addr[1]);
|
|
||||||
mac_l = (p_addr[2] << 24) | (p_addr[3] << 16) |
|
|
||||||
(p_addr[4] << 8) | (p_addr[5] << 0);
|
|
||||||
|
|
||||||
for (i = 0; i < 32; i++)
|
|
||||||
mac_array[i] = (mac_l >> i) & 0x1;
|
|
||||||
for (i = 32; i < 48; i++)
|
|
||||||
mac_array[i] = (mac_h >> (i - 32)) & 0x1;
|
|
||||||
|
|
||||||
crc[0] = mac_array[45] ^ mac_array[43] ^ mac_array[40] ^
|
|
||||||
mac_array[39] ^ mac_array[35] ^ mac_array[34] ^
|
|
||||||
mac_array[31] ^ mac_array[30] ^ mac_array[28] ^
|
|
||||||
mac_array[23] ^ mac_array[21] ^ mac_array[19] ^
|
|
||||||
mac_array[18] ^ mac_array[16] ^ mac_array[14] ^
|
|
||||||
mac_array[12] ^ mac_array[8] ^ mac_array[7] ^
|
|
||||||
mac_array[6] ^ mac_array[0];
|
|
||||||
|
|
||||||
crc[1] = mac_array[46] ^ mac_array[45] ^ mac_array[44] ^
|
|
||||||
mac_array[43] ^ mac_array[41] ^ mac_array[39] ^
|
|
||||||
mac_array[36] ^ mac_array[34] ^ mac_array[32] ^
|
|
||||||
mac_array[30] ^ mac_array[29] ^ mac_array[28] ^
|
|
||||||
mac_array[24] ^ mac_array[23] ^ mac_array[22] ^
|
|
||||||
mac_array[21] ^ mac_array[20] ^ mac_array[18] ^
|
|
||||||
mac_array[17] ^ mac_array[16] ^ mac_array[15] ^
|
|
||||||
mac_array[14] ^ mac_array[13] ^ mac_array[12] ^
|
|
||||||
mac_array[9] ^ mac_array[6] ^ mac_array[1] ^
|
|
||||||
mac_array[0];
|
|
||||||
|
|
||||||
crc[2] = mac_array[47] ^ mac_array[46] ^ mac_array[44] ^
|
|
||||||
mac_array[43] ^ mac_array[42] ^ mac_array[39] ^
|
|
||||||
mac_array[37] ^ mac_array[34] ^ mac_array[33] ^
|
|
||||||
mac_array[29] ^ mac_array[28] ^ mac_array[25] ^
|
|
||||||
mac_array[24] ^ mac_array[22] ^ mac_array[17] ^
|
|
||||||
mac_array[15] ^ mac_array[13] ^ mac_array[12] ^
|
|
||||||
mac_array[10] ^ mac_array[8] ^ mac_array[6] ^
|
|
||||||
mac_array[2] ^ mac_array[1] ^ mac_array[0];
|
|
||||||
|
|
||||||
crc[3] = mac_array[47] ^ mac_array[45] ^ mac_array[44] ^
|
|
||||||
mac_array[43] ^ mac_array[40] ^ mac_array[38] ^
|
|
||||||
mac_array[35] ^ mac_array[34] ^ mac_array[30] ^
|
|
||||||
mac_array[29] ^ mac_array[26] ^ mac_array[25] ^
|
|
||||||
mac_array[23] ^ mac_array[18] ^ mac_array[16] ^
|
|
||||||
mac_array[14] ^ mac_array[13] ^ mac_array[11] ^
|
|
||||||
mac_array[9] ^ mac_array[7] ^ mac_array[3] ^
|
|
||||||
mac_array[2] ^ mac_array[1];
|
|
||||||
|
|
||||||
crc[4] = mac_array[46] ^ mac_array[45] ^ mac_array[44] ^
|
|
||||||
mac_array[41] ^ mac_array[39] ^ mac_array[36] ^
|
|
||||||
mac_array[35] ^ mac_array[31] ^ mac_array[30] ^
|
|
||||||
mac_array[27] ^ mac_array[26] ^ mac_array[24] ^
|
|
||||||
mac_array[19] ^ mac_array[17] ^ mac_array[15] ^
|
|
||||||
mac_array[14] ^ mac_array[12] ^ mac_array[10] ^
|
|
||||||
mac_array[8] ^ mac_array[4] ^ mac_array[3] ^
|
|
||||||
mac_array[2];
|
|
||||||
|
|
||||||
crc[5] = mac_array[47] ^ mac_array[46] ^ mac_array[45] ^
|
|
||||||
mac_array[42] ^ mac_array[40] ^ mac_array[37] ^
|
|
||||||
mac_array[36] ^ mac_array[32] ^ mac_array[31] ^
|
|
||||||
mac_array[28] ^ mac_array[27] ^ mac_array[25] ^
|
|
||||||
mac_array[20] ^ mac_array[18] ^ mac_array[16] ^
|
|
||||||
mac_array[15] ^ mac_array[13] ^ mac_array[11] ^
|
|
||||||
mac_array[9] ^ mac_array[5] ^ mac_array[4] ^
|
|
||||||
mac_array[3];
|
|
||||||
|
|
||||||
crc[6] = mac_array[47] ^ mac_array[46] ^ mac_array[43] ^
|
|
||||||
mac_array[41] ^ mac_array[38] ^ mac_array[37] ^
|
|
||||||
mac_array[33] ^ mac_array[32] ^ mac_array[29] ^
|
|
||||||
mac_array[28] ^ mac_array[26] ^ mac_array[21] ^
|
|
||||||
mac_array[19] ^ mac_array[17] ^ mac_array[16] ^
|
|
||||||
mac_array[14] ^ mac_array[12] ^ mac_array[10] ^
|
|
||||||
mac_array[6] ^ mac_array[5] ^ mac_array[4];
|
|
||||||
|
|
||||||
crc[7] = mac_array[47] ^ mac_array[44] ^ mac_array[42] ^
|
|
||||||
mac_array[39] ^ mac_array[38] ^ mac_array[34] ^
|
|
||||||
mac_array[33] ^ mac_array[30] ^ mac_array[29] ^
|
|
||||||
mac_array[27] ^ mac_array[22] ^ mac_array[20] ^
|
|
||||||
mac_array[18] ^ mac_array[17] ^ mac_array[15] ^
|
|
||||||
mac_array[13] ^ mac_array[11] ^ mac_array[7] ^
|
|
||||||
mac_array[6] ^ mac_array[5];
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
crc_result = crc_result | (crc[i] << i);
|
|
||||||
|
|
||||||
eth_port_omc_addr (eth_port_num, crc_result, queue, option);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
* eth_port_smc_addr - Special Multicast address settings.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This routine controls the MV device special MAC multicast support.
|
|
||||||
* The Special Multicast Table for MAC addresses supports MAC of the form
|
|
||||||
* 0x01-00-5E-00-00-XX (where XX is between 0x00 and 0x_fF).
|
|
||||||
* The MAC DA[7:0] bits are used as a pointer to the Special Multicast
|
|
||||||
* Table entries in the DA-Filter table.
|
|
||||||
* This function set the Special Multicast Table appropriate entry
|
|
||||||
* according to the argument given.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Port number.
|
|
||||||
* unsigned char mc_byte Multicast addr last byte (MAC DA[7:0] bits).
|
|
||||||
* ETH_QUEUE queue Rx queue number for this MAC address.
|
|
||||||
* int option 0 = Add, 1 = remove address.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* See description.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* true is output succeeded.
|
|
||||||
* false if option parameter is invalid.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static bool eth_port_smc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char mc_byte,
|
|
||||||
ETH_QUEUE queue, int option)
|
|
||||||
{
|
|
||||||
unsigned int smc_table_reg;
|
|
||||||
unsigned int tbl_offset;
|
|
||||||
unsigned int reg_offset;
|
|
||||||
|
|
||||||
/* Locate the SMC table entry */
|
|
||||||
tbl_offset = (mc_byte / 4) * 4; /* Register offset from SMC table base */
|
|
||||||
reg_offset = mc_byte % 4; /* Entry offset within the above register */
|
|
||||||
queue &= 0x7;
|
|
||||||
|
|
||||||
switch (option) {
|
|
||||||
case REJECT_MAC_ADDR:
|
|
||||||
/* Clear accepts frame bit at specified Special DA table entry */
|
|
||||||
smc_table_reg =
|
|
||||||
MV_REG_READ ((MV64460_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
|
|
||||||
smc_table_reg &= (0x0E << (8 * reg_offset));
|
|
||||||
|
|
||||||
MV_REG_WRITE ((MV64460_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), smc_table_reg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ACCEPT_MAC_ADDR:
|
|
||||||
/* Set accepts frame bit at specified Special DA table entry */
|
|
||||||
smc_table_reg =
|
|
||||||
MV_REG_READ ((MV64460_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
|
|
||||||
smc_table_reg |= ((0x01 | queue) << (8 * reg_offset));
|
|
||||||
|
|
||||||
MV_REG_WRITE ((MV64460_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), smc_table_reg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
* eth_port_omc_addr - Multicast address settings.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This routine controls the MV device Other MAC multicast support.
|
|
||||||
* The Other Multicast Table is used for multicast of another type.
|
|
||||||
* A CRC-8bit is used as an index to the Other Multicast Table entries
|
|
||||||
* in the DA-Filter table.
|
|
||||||
* The function gets the CRC-8bit value from the calling routine and
|
|
||||||
* set the Other Multicast Table appropriate entry according to the
|
|
||||||
* CRC-8 argument given.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Port number.
|
|
||||||
* unsigned char crc8 A CRC-8bit (Polynomial: x^8+x^2+x^1+1).
|
|
||||||
* ETH_QUEUE queue Rx queue number for this MAC address.
|
|
||||||
* int option 0 = Add, 1 = remove address.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* See description.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* true is output succeeded.
|
|
||||||
* false if option parameter is invalid.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static bool eth_port_omc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char crc8,
|
|
||||||
ETH_QUEUE queue, int option)
|
|
||||||
{
|
|
||||||
unsigned int omc_table_reg;
|
|
||||||
unsigned int tbl_offset;
|
|
||||||
unsigned int reg_offset;
|
|
||||||
|
|
||||||
/* Locate the OMC table entry */
|
|
||||||
tbl_offset = (crc8 / 4) * 4; /* Register offset from OMC table base */
|
|
||||||
reg_offset = crc8 % 4; /* Entry offset within the above register */
|
|
||||||
queue &= 0x7;
|
|
||||||
|
|
||||||
switch (option) {
|
|
||||||
case REJECT_MAC_ADDR:
|
|
||||||
/* Clear accepts frame bit at specified Other DA table entry */
|
|
||||||
omc_table_reg =
|
|
||||||
MV_REG_READ ((MV64460_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
|
|
||||||
omc_table_reg &= (0x0E << (8 * reg_offset));
|
|
||||||
|
|
||||||
MV_REG_WRITE ((MV64460_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), omc_table_reg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ACCEPT_MAC_ADDR:
|
|
||||||
/* Set accepts frame bit at specified Other DA table entry */
|
|
||||||
omc_table_reg =
|
|
||||||
MV_REG_READ ((MV64460_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
|
|
||||||
omc_table_reg |= ((0x01 | queue) << (8 * reg_offset));
|
|
||||||
|
|
||||||
MV_REG_WRITE ((MV64460_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), omc_table_reg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* eth_port_init_mac_tables - Clear all entrance in the UC, SMC and OMC tables
|
* eth_port_init_mac_tables - Clear all entrance in the UC, SMC and OMC tables
|
||||||
|
@ -2380,104 +2106,8 @@ static void eth_port_reset (ETH_PORT eth_port_num)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 /* Not needed here */
|
|
||||||
/*******************************************************************************
|
|
||||||
* ethernet_set_config_reg - Set specified bits in configuration register.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This function sets specified bits in the given ethernet
|
|
||||||
* configuration register.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
|
|
||||||
* unsigned int value 32 bit value.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* The set bits in the value parameter are set in the configuration
|
|
||||||
* register.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* None.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static void ethernet_set_config_reg (ETH_PORT eth_port_num,
|
|
||||||
unsigned int value)
|
|
||||||
{
|
|
||||||
unsigned int eth_config_reg;
|
|
||||||
|
|
||||||
eth_config_reg =
|
|
||||||
MV_REG_READ (MV64460_ETH_PORT_CONFIG_REG (eth_port_num));
|
|
||||||
eth_config_reg |= value;
|
|
||||||
MV_REG_WRITE (MV64460_ETH_PORT_CONFIG_REG (eth_port_num),
|
|
||||||
eth_config_reg);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0 /* FIXME */
|
|
||||||
/*******************************************************************************
|
|
||||||
* ethernet_reset_config_reg - Reset specified bits in configuration register.
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This function resets specified bits in the given Ethernet
|
|
||||||
* configuration register.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
|
|
||||||
* unsigned int value 32 bit value.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* The set bits in the value parameter are reset in the configuration
|
|
||||||
* register.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* None.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static void ethernet_reset_config_reg (ETH_PORT eth_port_num,
|
|
||||||
unsigned int value)
|
|
||||||
{
|
|
||||||
unsigned int eth_config_reg;
|
|
||||||
|
|
||||||
eth_config_reg = MV_REG_READ (MV64460_ETH_PORT_CONFIG_EXTEND_REG
|
|
||||||
(eth_port_num));
|
|
||||||
eth_config_reg &= ~value;
|
|
||||||
MV_REG_WRITE (MV64460_ETH_PORT_CONFIG_EXTEND_REG (eth_port_num),
|
|
||||||
eth_config_reg);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0 /* Not needed here */
|
|
||||||
/*******************************************************************************
|
|
||||||
* ethernet_get_config_reg - Get the port configuration register
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
* This function returns the configuration register value of the given
|
|
||||||
* ethernet port.
|
|
||||||
*
|
|
||||||
* INPUT:
|
|
||||||
* ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
|
|
||||||
*
|
|
||||||
* OUTPUT:
|
|
||||||
* None.
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* Port configuration register value.
|
|
||||||
*
|
|
||||||
*******************************************************************************/
|
|
||||||
static unsigned int ethernet_get_config_reg (ETH_PORT eth_port_num)
|
|
||||||
{
|
|
||||||
unsigned int eth_config_reg;
|
|
||||||
|
|
||||||
eth_config_reg = MV_REG_READ (MV64460_ETH_PORT_CONFIG_EXTEND_REG
|
|
||||||
(eth_port_num));
|
|
||||||
return eth_config_reg;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* eth_port_read_smi_reg - Read PHY registers
|
* eth_port_read_smi_reg - Read PHY registers
|
||||||
|
@ -3253,24 +2883,6 @@ static ETH_FUNC_RET_STATUS eth_rx_return_buff (ETH_PORT_INFO *
|
||||||
* The interrupt coalescing value set in the gigE port.
|
* The interrupt coalescing value set in the gigE port.
|
||||||
*
|
*
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
#if 0 /* FIXME */
|
|
||||||
static unsigned int eth_port_set_rx_coal (ETH_PORT eth_port_num,
|
|
||||||
unsigned int t_clk,
|
|
||||||
unsigned int delay)
|
|
||||||
{
|
|
||||||
unsigned int coal;
|
|
||||||
|
|
||||||
coal = ((t_clk / 1000000) * delay) / 64;
|
|
||||||
/* Set RX Coalescing mechanism */
|
|
||||||
MV_REG_WRITE (MV64460_ETH_SDMA_CONFIG_REG (eth_port_num),
|
|
||||||
((coal & 0x3fff) << 8) |
|
|
||||||
(MV_REG_READ
|
|
||||||
(MV64460_ETH_SDMA_CONFIG_REG (eth_port_num))
|
|
||||||
& 0xffc000ff));
|
|
||||||
return coal;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* eth_port_set_tx_coal - Sets coalescing interrupt mechanism on TX path
|
* eth_port_set_tx_coal - Sets coalescing interrupt mechanism on TX path
|
||||||
*
|
*
|
||||||
|
@ -3294,20 +2906,6 @@ static unsigned int eth_port_set_rx_coal (ETH_PORT eth_port_num,
|
||||||
* The interrupt coalescing value set in the gigE port.
|
* The interrupt coalescing value set in the gigE port.
|
||||||
*
|
*
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
#if 0 /* FIXME */
|
|
||||||
static unsigned int eth_port_set_tx_coal (ETH_PORT eth_port_num,
|
|
||||||
unsigned int t_clk,
|
|
||||||
unsigned int delay)
|
|
||||||
{
|
|
||||||
unsigned int coal;
|
|
||||||
|
|
||||||
coal = ((t_clk / 1000000) * delay) / 64;
|
|
||||||
/* Set TX Coalescing mechanism */
|
|
||||||
MV_REG_WRITE (MV64460_ETH_TX_FIFO_URGENT_THRESHOLD_REG (eth_port_num),
|
|
||||||
coal << 4);
|
|
||||||
return coal;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* eth_b_copy - Copy bytes from source to destination
|
* eth_b_copy - Copy bytes from source to destination
|
||||||
|
|
|
@ -788,12 +788,6 @@ static bool eth_port_start(ETH_PORT_INFO *p_eth_port_ctrl);
|
||||||
static void eth_port_uc_addr_set (ETH_PORT eth_port_num,
|
static void eth_port_uc_addr_set (ETH_PORT eth_port_num,
|
||||||
unsigned char *p_addr,
|
unsigned char *p_addr,
|
||||||
ETH_QUEUE queue);
|
ETH_QUEUE queue);
|
||||||
#if 0 /* FIXME */
|
|
||||||
static void eth_port_mc_addr (ETH_PORT eth_port_num,
|
|
||||||
unsigned char *p_addr,
|
|
||||||
ETH_QUEUE queue,
|
|
||||||
int option);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* PHY and MIB routines */
|
/* PHY and MIB routines */
|
||||||
static bool ethernet_phy_reset(ETH_PORT eth_port_num);
|
static bool ethernet_phy_reset(ETH_PORT eth_port_num);
|
||||||
|
|
|
@ -868,21 +868,6 @@ void gt_cpcidvi_out8(unsigned int offset, unsigned char data)
|
||||||
|
|
||||||
/* TODO BJW: Change this for DB64360. This was pulled from the EV64260 */
|
/* TODO BJW: Change this for DB64360. This was pulled from the EV64260 */
|
||||||
/* and is curently not called *. */
|
/* and is curently not called *. */
|
||||||
#if 0
|
|
||||||
static void gt_fixup_irq (struct pci_controller *hose, pci_dev_t dev)
|
|
||||||
{
|
|
||||||
unsigned char pin, irq;
|
|
||||||
|
|
||||||
pci_read_config_byte (dev, PCI_INTERRUPT_PIN, &pin);
|
|
||||||
|
|
||||||
if (pin == 1) { /* only allow INT A */
|
|
||||||
irq = pci_irq_swizzle[(PCI_HOST) hose->
|
|
||||||
cfg_addr][PCI_DEV (dev)];
|
|
||||||
if (irq)
|
|
||||||
pci_write_config_byte (dev, PCI_INTERRUPT_LINE, irq);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct pci_config_table gt_config_table[] = {
|
struct pci_config_table gt_config_table[] = {
|
||||||
#ifdef CONFIG_USE_CPCIDVI
|
#ifdef CONFIG_USE_CPCIDVI
|
||||||
|
|
|
@ -29,61 +29,5 @@
|
||||||
#ifndef __SERIAL_H__
|
#ifndef __SERIAL_H__
|
||||||
#define __SERIAL_H__
|
#define __SERIAL_H__
|
||||||
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
#define B230400 1
|
|
||||||
#define B115200 2
|
|
||||||
#define B57600 4
|
|
||||||
#define B38400 82
|
|
||||||
#define B19200 163
|
|
||||||
#define B9600 24
|
|
||||||
#define B4800 651
|
|
||||||
#define B2400 1302
|
|
||||||
#define B1200 2604
|
|
||||||
#define B600 5208
|
|
||||||
#define B300 10417
|
|
||||||
#define B150 20833
|
|
||||||
#define B110 28409
|
|
||||||
#define BDEFAULT B115200
|
|
||||||
|
|
||||||
/* this stuff is important to initialize
|
|
||||||
the DUART channels */
|
|
||||||
|
|
||||||
#define Scale 0x01L /* distance between port addresses */
|
|
||||||
#define COM1 0x000003f8 /* Keyboard */
|
|
||||||
#define COM2 0x000002f8 /* Host */
|
|
||||||
|
|
||||||
|
|
||||||
/* Port Definitions relative to base COM port addresses */
|
|
||||||
#define DataIn (0x00*Scale) /* data input port */
|
|
||||||
#define DataOut (0x00*Scale) /* data output port */
|
|
||||||
#define BaudLsb (0x00*Scale) /* baud rate divisor least significant byte */
|
|
||||||
#define BaudMsb (0x01*Scale) /* baud rate divisor most significant byte */
|
|
||||||
#define Ier (0x01*Scale) /* interrupt enable register */
|
|
||||||
#define Iir (0x02*Scale) /* interrupt identification register */
|
|
||||||
#define Lcr (0x03*Scale) /* line control register */
|
|
||||||
#define Mcr (0x04*Scale) /* modem control register */
|
|
||||||
#define Lsr (0x05*Scale) /* line status register */
|
|
||||||
#define Msr (0x06*Scale) /* modem status register */
|
|
||||||
|
|
||||||
/* Bit Definitions for above ports */
|
|
||||||
#define LcrDlab 0x80 /* b7: enable baud rate divisor registers */
|
|
||||||
#define LcrDflt 0x03 /* b6-0: no parity, 1 stop, 8 data */
|
|
||||||
|
|
||||||
#define McrRts 0x02 /* b1: request to send (I am ready to xmit) */
|
|
||||||
#define McrDtr 0x01 /* b0: data terminal ready (I am alive ready to rcv) */
|
|
||||||
#define McrDflt (McrRts|McrDtr)
|
|
||||||
|
|
||||||
#define LsrTxD 0x6000 /* b5: transmit holding register empty (i.e. xmit OK!)*/
|
|
||||||
/* b6: transmitter empty */
|
|
||||||
#define LsrRxD 0x0100 /* b0: received data ready (i.e. got a byte!) */
|
|
||||||
|
|
||||||
#define MsrRi 0x0040 /* b6: ring indicator (other guy is ready to rcv) */
|
|
||||||
#define MsrDsr 0x0020 /* b5: data set ready (other guy is alive ready to rcv */
|
|
||||||
#define MsrCts 0x0010 /* b4: clear to send (other guy is ready to rcv) */
|
|
||||||
|
|
||||||
#define IerRda 0xf /* b0: Enable received data available interrupt */
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __SERIAL_H__ */
|
#endif /* __SERIAL_H__ */
|
||||||
|
|
|
@ -323,13 +323,6 @@ mem_init:
|
||||||
str r2, [r1, #MDMRS_OFFSET]
|
str r2, [r1, #MDMRS_OFFSET]
|
||||||
|
|
||||||
/* We are finished with Intel's memory controller initialisation */
|
/* We are finished with Intel's memory controller initialisation */
|
||||||
#if 0
|
|
||||||
/* FIXME turn on serial ports */
|
|
||||||
/* look into moving this to board_init() */
|
|
||||||
ldr r2, =(PXA_CS5_PHYS + 0x03C0002c)
|
|
||||||
mov r3, #0x13
|
|
||||||
str r3, [r2]
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DEBUG_BLINK_ENABLE
|
#ifdef DEBUG_BLINK_ENABLE
|
||||||
/* 6th blink */
|
/* 6th blink */
|
||||||
|
@ -360,19 +353,6 @@ initclks:
|
||||||
|
|
||||||
/* Turn Off ALL on-chip peripheral clocks for re-configuration */
|
/* Turn Off ALL on-chip peripheral clocks for re-configuration */
|
||||||
/* Note: See label 'ENABLECLKS' for the re-enabling */
|
/* Note: See label 'ENABLECLKS' for the re-enabling */
|
||||||
#if 0
|
|
||||||
ldr r1, =CKEN
|
|
||||||
mov r2, #0
|
|
||||||
str r2, [r1]
|
|
||||||
|
|
||||||
/* default value in case no valid rotary switch setting is found */
|
|
||||||
ldr r2, =(CCCR_L27|CCCR_M2|CCCR_N10) /* DEFAULT: {200/200/100} */
|
|
||||||
|
|
||||||
/* ... and write the core clock config register */
|
|
||||||
ldr r1, =CCCR
|
|
||||||
str r2, [r1]
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef RTC
|
#ifdef RTC
|
||||||
/* enable the 32Khz oscillator for RTC and PowerManager */
|
/* enable the 32Khz oscillator for RTC and PowerManager */
|
||||||
|
|
|
@ -265,13 +265,6 @@ long int initdram (int board_type)
|
||||||
long dram_size = 0;
|
long dram_size = 0;
|
||||||
extern long spd_sdram (void);
|
extern long spd_sdram (void);
|
||||||
volatile immap_t *immap = (immap_t *)CFG_IMMR;
|
volatile immap_t *immap = (immap_t *)CFG_IMMR;
|
||||||
#if 0
|
|
||||||
#if !defined(CONFIG_RAM_AS_FLASH)
|
|
||||||
volatile ccsr_lbc_t *lbc= &immap->im_lbc;
|
|
||||||
sys_info_t sysinfo;
|
|
||||||
uint temp_lbcdll = 0;
|
|
||||||
#endif
|
|
||||||
#endif /* 0 */
|
|
||||||
#if !defined(CONFIG_RAM_AS_FLASH) || defined(CONFIG_DDR_DLL)
|
#if !defined(CONFIG_RAM_AS_FLASH) || defined(CONFIG_DDR_DLL)
|
||||||
volatile ccsr_gur_t *gur= &immap->im_gur;
|
volatile ccsr_gur_t *gur= &immap->im_gur;
|
||||||
#endif
|
#endif
|
||||||
|
@ -290,45 +283,6 @@ long int initdram (int board_type)
|
||||||
dram_size = fixed_sdram ();
|
dram_size = fixed_sdram ();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
|
||||||
#if !defined(CONFIG_RAM_AS_FLASH) /* LocalBus SDRAM is not emulating flash */
|
|
||||||
get_sys_info(&sysinfo);
|
|
||||||
/* if localbus freq is less than 66Mhz,we use bypass mode,otherwise use DLL */
|
|
||||||
if(sysinfo.freqSystemBus/(CFG_LBC_LCRR & 0x0f) < 66000000) {
|
|
||||||
lbc->lcrr = (CFG_LBC_LCRR & 0x0fffffff)| 0x80000000;
|
|
||||||
} else {
|
|
||||||
#if defined(CONFIG_MPC85xx_REV1) /* need change CLKDIV before enable DLL */
|
|
||||||
lbc->lcrr = 0x10000004; /* default CLKDIV is 8, change it to 4 temporarily */
|
|
||||||
#endif
|
|
||||||
lbc->lcrr = CFG_LBC_LCRR & 0x7fffffff;
|
|
||||||
udelay(200);
|
|
||||||
temp_lbcdll = gur->lbcdllcr;
|
|
||||||
gur->lbcdllcr = ((temp_lbcdll & 0xff) << 16 ) | 0x80000000;
|
|
||||||
asm("sync;isync;msync");
|
|
||||||
}
|
|
||||||
lbc->or2 = CFG_OR2_PRELIM; /* 64MB SDRAM */
|
|
||||||
lbc->br2 = CFG_BR2_PRELIM;
|
|
||||||
lbc->lbcr = CFG_LBC_LBCR;
|
|
||||||
lbc->lsdmr = CFG_LBC_LSDMR_1;
|
|
||||||
asm("sync");
|
|
||||||
(unsigned int) * (ulong *)0 = 0x000000ff;
|
|
||||||
lbc->lsdmr = CFG_LBC_LSDMR_2;
|
|
||||||
asm("sync");
|
|
||||||
(unsigned int) * (ulong *)0 = 0x000000ff;
|
|
||||||
lbc->lsdmr = CFG_LBC_LSDMR_3;
|
|
||||||
asm("sync");
|
|
||||||
(unsigned int) * (ulong *)0 = 0x000000ff;
|
|
||||||
lbc->lsdmr = CFG_LBC_LSDMR_4;
|
|
||||||
asm("sync");
|
|
||||||
(unsigned int) * (ulong *)0 = 0x000000ff;
|
|
||||||
lbc->lsdmr = CFG_LBC_LSDMR_5;
|
|
||||||
asm("sync");
|
|
||||||
lbc->lsrt = CFG_LBC_LSRT;
|
|
||||||
asm("sync");
|
|
||||||
lbc->mrtpr = CFG_LBC_MRTPR;
|
|
||||||
asm("sync");
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CONFIG_DDR_ECC)
|
#if defined(CONFIG_DDR_ECC)
|
||||||
{
|
{
|
||||||
|
|
|
@ -536,19 +536,16 @@ int board_early_init_f(void)
|
||||||
|
|
||||||
(void)ioport;
|
(void)ioport;
|
||||||
(void)cpm;
|
(void)cpm;
|
||||||
#if 1
|
|
||||||
/* NAND chip select */
|
/* NAND chip select */
|
||||||
upmconfig(UPMB, (uint *) nandcs_table, sizeof(nandcs_table) / sizeof(nandcs_table[0]));
|
upmconfig(UPMB, (uint *) nandcs_table, sizeof(nandcs_table) / sizeof(nandcs_table[0]));
|
||||||
memctl->memc_or2 = ((0xFFFFFFFFLU & ~(NAND_SIZE - 1)) | OR_BI | OR_G5LS);
|
memctl->memc_or2 = ((0xFFFFFFFFLU & ~(NAND_SIZE - 1)) | OR_BI | OR_G5LS);
|
||||||
memctl->memc_br2 = ((NAND_BASE & BR_BA_MSK) | BR_PS_8 | BR_V | BR_MS_UPMB);
|
memctl->memc_br2 = ((NAND_BASE & BR_BA_MSK) | BR_PS_8 | BR_V | BR_MS_UPMB);
|
||||||
memctl->memc_mbmr = 0; /* all clear */
|
memctl->memc_mbmr = 0; /* all clear */
|
||||||
#endif
|
|
||||||
|
|
||||||
memctl->memc_br5 &= ~BR_V;
|
memctl->memc_br5 &= ~BR_V;
|
||||||
memctl->memc_br6 &= ~BR_V;
|
memctl->memc_br6 &= ~BR_V;
|
||||||
memctl->memc_br7 &= ~BR_V;
|
memctl->memc_br7 &= ~BR_V;
|
||||||
|
|
||||||
#if 1
|
|
||||||
ioport->iop_padat = PA_GP_OUTVAL;
|
ioport->iop_padat = PA_GP_OUTVAL;
|
||||||
ioport->iop_paodr = PA_ODR_VAL;
|
ioport->iop_paodr = PA_ODR_VAL;
|
||||||
ioport->iop_padir = PA_GP_OUTMASK | PA_SP_DIRVAL;
|
ioport->iop_padir = PA_GP_OUTMASK | PA_SP_DIRVAL;
|
||||||
|
@ -569,7 +566,6 @@ int board_early_init_f(void)
|
||||||
cpm->cp_peodr = PE_ODR_VAL;
|
cpm->cp_peodr = PE_ODR_VAL;
|
||||||
cpm->cp_pedir = PE_GP_OUTMASK | PE_SP_DIRVAL;
|
cpm->cp_pedir = PE_GP_OUTMASK | PE_SP_DIRVAL;
|
||||||
cpm->cp_pepar = PE_SP_MASK;
|
cpm->cp_pepar = PE_SP_MASK;
|
||||||
#endif
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,13 +35,8 @@
|
||||||
#include <image.h>
|
#include <image.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
|
||||||
#define deb_printf(fmt,arg...) \
|
|
||||||
printf ("TQM8272 %s %s: " fmt,__FILE__, __FUNCTION__, ##arg)
|
|
||||||
#else
|
|
||||||
#define deb_printf(fmt,arg...) \
|
#define deb_printf(fmt,arg...) \
|
||||||
do { } while (0)
|
do { } while (0)
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CONFIG_BOARD_GET_CPU_CLK_F)
|
#if defined(CONFIG_BOARD_GET_CPU_CLK_F)
|
||||||
unsigned long board_get_cpu_clk_f (void);
|
unsigned long board_get_cpu_clk_f (void);
|
||||||
|
|
|
@ -100,10 +100,6 @@ pci_init_board(void)
|
||||||
* (13 oct 05)
|
* (13 oct 05)
|
||||||
*/
|
*/
|
||||||
reg32 = OCCR_PCICOE1;
|
reg32 = OCCR_PCICOE1;
|
||||||
#if 0
|
|
||||||
/* enabling all PCI_CLK_OUTPUT lines HANGS the board... */
|
|
||||||
reg32 = 0xff000000;
|
|
||||||
#endif
|
|
||||||
if (clk->spmr & SPMR_CKID) {
|
if (clk->spmr & SPMR_CKID) {
|
||||||
/* PCI Clock is half CONFIG_83XX_CLKIN so need to set up OCCR
|
/* PCI Clock is half CONFIG_83XX_CLKIN so need to set up OCCR
|
||||||
* fields accordingly */
|
* fields accordingly */
|
||||||
|
|
|
@ -21,9 +21,6 @@
|
||||||
* MA 02111-1307 USA
|
* MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if 0
|
|
||||||
#define DEBUG
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <mpc8xx.h>
|
#include <mpc8xx.h>
|
||||||
|
|
|
@ -209,13 +209,6 @@ static int ACEX1K_ps_load (Altera_desc * desc, void *buf, size_t bsize)
|
||||||
#endif
|
#endif
|
||||||
/* Altera detects an error if INIT goes low (active)
|
/* Altera detects an error if INIT goes low (active)
|
||||||
while DONE is low (inactive) */
|
while DONE is low (inactive) */
|
||||||
#if 0 /* not yet implemented */
|
|
||||||
if ((*fn->done) (cookie) == 0 && (*fn->init) (cookie)) {
|
|
||||||
puts ("** CRC error during FPGA load.\n");
|
|
||||||
(*fn->abort) (cookie);
|
|
||||||
return (FPGA_FAIL);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
val = data [bytecount ++ ];
|
val = data [bytecount ++ ];
|
||||||
i = 8;
|
i = 8;
|
||||||
do {
|
do {
|
||||||
|
|
|
@ -36,10 +36,6 @@ int do_icache ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||||
switch (argc) {
|
switch (argc) {
|
||||||
case 2: /* on / off */
|
case 2: /* on / off */
|
||||||
switch (on_off(argv[1])) {
|
switch (on_off(argv[1])) {
|
||||||
#if 0 /* prevented by varargs handling; FALLTROUGH is harmless, too */
|
|
||||||
default: printf ("Usage:\n%s\n", cmdtp->usage);
|
|
||||||
return;
|
|
||||||
#endif
|
|
||||||
case 0: icache_disable();
|
case 0: icache_disable();
|
||||||
break;
|
break;
|
||||||
case 1: icache_enable ();
|
case 1: icache_enable ();
|
||||||
|
@ -62,10 +58,6 @@ int do_dcache ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||||
switch (argc) {
|
switch (argc) {
|
||||||
case 2: /* on / off */
|
case 2: /* on / off */
|
||||||
switch (on_off(argv[1])) {
|
switch (on_off(argv[1])) {
|
||||||
#if 0 /* prevented by varargs handling; FALLTROUGH is harmless, too */
|
|
||||||
default: printf ("Usage:\n%s\n", cmdtp->usage);
|
|
||||||
return;
|
|
||||||
#endif
|
|
||||||
case 0: dcache_disable();
|
case 0: dcache_disable();
|
||||||
break;
|
break;
|
||||||
case 1: dcache_enable ();
|
case 1: dcache_enable ();
|
||||||
|
|
|
@ -1551,10 +1551,6 @@ static inline int doccheck(unsigned long potential, unsigned long physadr)
|
||||||
* if the ID isn't the DoC2000 or DoCMillenium ID, so we can assume
|
* if the ID isn't the DoC2000 or DoCMillenium ID, so we can assume
|
||||||
* the DOC is missing
|
* the DOC is missing
|
||||||
*/
|
*/
|
||||||
# if 0
|
|
||||||
printf("Possible DiskOnChip with unknown ChipID %2.2X found at 0x%lx\n",
|
|
||||||
ChipID, physadr);
|
|
||||||
# endif
|
|
||||||
#endif
|
#endif
|
||||||
#ifndef DOC_PASSIVE_PROBE
|
#ifndef DOC_PASSIVE_PROBE
|
||||||
/* Put back the contents of the DOCControl register, in case it's not
|
/* Put back the contents of the DOCControl register, in case it's not
|
||||||
|
|
|
@ -243,13 +243,6 @@ int valid_elf_image (unsigned long addr)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
if (ehdr->e_machine != EM_PPC) {
|
|
||||||
printf ("## Not a PowerPC elf image at address 0x%08lx\n",
|
|
||||||
addr);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,9 +33,6 @@
|
||||||
#include <fpga.h>
|
#include <fpga.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
|
||||||
#if 0
|
|
||||||
#define FPGA_DEBUG
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef FPGA_DEBUG
|
#ifdef FPGA_DEBUG
|
||||||
#define PRINTF(fmt,args...) printf (fmt ,##args)
|
#define PRINTF(fmt,args...) printf (fmt ,##args)
|
||||||
|
|
|
@ -321,13 +321,6 @@ int do_i2c_mw ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||||
udelay(11000);
|
udelay(11000);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
|
||||||
for (timeout = 0; timeout < 10; timeout++) {
|
|
||||||
udelay(2000);
|
|
||||||
if (i2c_probe(chip) == 0)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
|
|
|
@ -282,20 +282,6 @@ int do_ide (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||||
rcode = 1;
|
rcode = 1;
|
||||||
}
|
}
|
||||||
return rcode;
|
return rcode;
|
||||||
#if 0
|
|
||||||
} else if (strncmp(argv[1],"pio",4) == 0) {
|
|
||||||
int mode = (int)simple_strtoul(argv[2], NULL, 10);
|
|
||||||
|
|
||||||
if ((mode >= 0) && (mode <= IDE_MAX_PIO_MODE)) {
|
|
||||||
puts ("\nSetting ");
|
|
||||||
pio_mode = mode;
|
|
||||||
ide_init ();
|
|
||||||
} else {
|
|
||||||
printf ("\nInvalid PIO mode %d (0 ... %d only)\n",
|
|
||||||
mode, IDE_MAX_PIO_MODE);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
printf ("Usage:\n%s\n", cmdtp->usage);
|
printf ("Usage:\n%s\n", cmdtp->usage);
|
||||||
|
@ -1029,9 +1015,6 @@ static void ide_ident (block_dev_desc_t *dev_desc)
|
||||||
int do_retry = 0;
|
int do_retry = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
|
||||||
int mode, cycle_time;
|
|
||||||
#endif
|
|
||||||
int device;
|
int device;
|
||||||
device=dev_desc->dev;
|
device=dev_desc->dev;
|
||||||
printf (" Device %d: ", device);
|
printf (" Device %d: ", device);
|
||||||
|
@ -1144,34 +1127,6 @@ static void ide_ident (block_dev_desc_t *dev_desc)
|
||||||
else
|
else
|
||||||
dev_desc->removable = 0;
|
dev_desc->removable = 0;
|
||||||
|
|
||||||
#if 0
|
|
||||||
/*
|
|
||||||
* Drive PIO mode autoselection
|
|
||||||
*/
|
|
||||||
mode = iop->tPIO;
|
|
||||||
|
|
||||||
printf ("tPIO = 0x%02x = %d\n",mode, mode);
|
|
||||||
if (mode > 2) { /* 2 is maximum allowed tPIO value */
|
|
||||||
mode = 2;
|
|
||||||
debug ("Override tPIO -> 2\n");
|
|
||||||
}
|
|
||||||
if (iop->field_valid & 2) { /* drive implements ATA2? */
|
|
||||||
debug ("Drive implements ATA2\n");
|
|
||||||
if (iop->capability & 8) { /* drive supports use_iordy? */
|
|
||||||
cycle_time = iop->eide_pio_iordy;
|
|
||||||
} else {
|
|
||||||
cycle_time = iop->eide_pio;
|
|
||||||
}
|
|
||||||
debug ("cycle time = %d\n", cycle_time);
|
|
||||||
mode = 4;
|
|
||||||
if (cycle_time > 120) mode = 3; /* 120 ns for PIO mode 4 */
|
|
||||||
if (cycle_time > 180) mode = 2; /* 180 ns for PIO mode 3 */
|
|
||||||
if (cycle_time > 240) mode = 1; /* 240 ns for PIO mode 4 */
|
|
||||||
if (cycle_time > 383) mode = 0; /* 383 ns for PIO mode 4 */
|
|
||||||
}
|
|
||||||
printf ("PIO mode to use: PIO %d\n", mode);
|
|
||||||
#endif /* 0 */
|
|
||||||
|
|
||||||
#ifdef CONFIG_ATAPI
|
#ifdef CONFIG_ATAPI
|
||||||
if (dev_desc->if_type==IF_TYPE_ATAPI) {
|
if (dev_desc->if_type==IF_TYPE_ATAPI) {
|
||||||
atapi_inquiry(dev_desc);
|
atapi_inquiry(dev_desc);
|
||||||
|
@ -1207,21 +1162,6 @@ static void ide_ident (block_dev_desc_t *dev_desc)
|
||||||
dev_desc->type=DEV_TYPE_HARDDISK;
|
dev_desc->type=DEV_TYPE_HARDDISK;
|
||||||
dev_desc->blksz=ATA_BLOCKSIZE;
|
dev_desc->blksz=ATA_BLOCKSIZE;
|
||||||
dev_desc->lun=0; /* just to fill something in... */
|
dev_desc->lun=0; /* just to fill something in... */
|
||||||
|
|
||||||
#if 0 /* only used to test the powersaving mode,
|
|
||||||
* if enabled, the drive goes after 5 sec
|
|
||||||
* in standby mode */
|
|
||||||
ide_outb (device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
|
|
||||||
c = ide_wait (device, IDE_TIME_OUT);
|
|
||||||
ide_outb (device, ATA_SECT_CNT, 1);
|
|
||||||
ide_outb (device, ATA_LBA_LOW, 0);
|
|
||||||
ide_outb (device, ATA_LBA_MID, 0);
|
|
||||||
ide_outb (device, ATA_LBA_HIGH, 0);
|
|
||||||
ide_outb (device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
|
|
||||||
ide_outb (device, ATA_COMMAND, 0xe3);
|
|
||||||
udelay (50);
|
|
||||||
c = ide_wait (device, IDE_TIME_OUT); /* can't take over 500 ms */
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -842,12 +842,6 @@ static int k_recv (void)
|
||||||
If a character less than SPACE (0x20) is received - error.
|
If a character less than SPACE (0x20) is received - error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* OLD CODE, Prior to checking sequence numbers */
|
|
||||||
/* first have all state machines save current states */
|
|
||||||
k_state_saved = k_state;
|
|
||||||
k_data_save ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* get a packet */
|
/* get a packet */
|
||||||
/* wait for the starting character or ^C */
|
/* wait for the starting character or ^C */
|
||||||
|
|
|
@ -629,10 +629,6 @@ U_BOOT_CMD(nboot, 4, 1, do_nandboot,
|
||||||
|
|
||||||
#if (CONFIG_COMMANDS & CFG_CMD_NAND)
|
#if (CONFIG_COMMANDS & CFG_CMD_NAND)
|
||||||
#include <linux/mtd/nand_legacy.h>
|
#include <linux/mtd/nand_legacy.h>
|
||||||
#if 0
|
|
||||||
#include <linux/mtd/nand_ids.h>
|
|
||||||
#include <jffs2/jffs2.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_OMAP1510
|
#ifdef CONFIG_OMAP1510
|
||||||
void archflashwp(void *archdata, int wp);
|
void archflashwp(void *archdata, int wp);
|
||||||
|
|
|
@ -351,13 +351,6 @@ int check_ide_device (int slot)
|
||||||
#else
|
#else
|
||||||
/* set I/O area in config reg -> only valid for ARGOSY D5!!! */
|
/* set I/O area in config reg -> only valid for ARGOSY D5!!! */
|
||||||
*((uchar *)(addr + config_base)) = 1;
|
*((uchar *)(addr + config_base)) = 1;
|
||||||
#endif
|
|
||||||
#if 0
|
|
||||||
printf("\n## Config_base = %04x ###\n", config_base);
|
|
||||||
printf("Configuration Option Register: %02x @ %x\n", readb(addr + config_base), addr + config_base);
|
|
||||||
printf("Card Configuration and Status Register: %02x\n", readb(addr + config_base + 2));
|
|
||||||
printf("Pin Replacement Register Register: %02x\n", readb(addr + config_base + 4));
|
|
||||||
printf("Socket and Copy Register: %02x\n", readb(addr + config_base + 6));
|
|
||||||
#endif
|
#endif
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,14 +90,6 @@ do_test (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||||
if (argc < 3)
|
if (argc < 3)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
#if 0
|
|
||||||
{
|
|
||||||
printf("test:");
|
|
||||||
left = 1;
|
|
||||||
while (argv[left])
|
|
||||||
printf(" %s", argv[left++]);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
last_expr = 0;
|
last_expr = 0;
|
||||||
left = argc - 1; ap = argv + 1;
|
left = argc - 1; ap = argv + 1;
|
||||||
|
@ -196,9 +188,6 @@ do_test (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||||
|
|
||||||
expr = !expr;
|
expr = !expr;
|
||||||
|
|
||||||
#if 0
|
|
||||||
printf(": returns %d\n", expr);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return expr;
|
return expr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -474,11 +474,6 @@ int console_init_r (void)
|
||||||
}
|
}
|
||||||
#endif /* CFG_CONSOLE_ENV_OVERWRITE */
|
#endif /* CFG_CONSOLE_ENV_OVERWRITE */
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* If nothing usable installed, use only the initial console */
|
|
||||||
if ((stdio_devices[stdin] == NULL) && (stdio_devices[stdout] == NULL))
|
|
||||||
return (0);
|
|
||||||
#endif
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -560,11 +555,6 @@ int console_init_r (void)
|
||||||
setenv (stdio_names[i], stdio_devices[i]->name);
|
setenv (stdio_names[i], stdio_devices[i]->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* If nothing usable installed, use only the initial console */
|
|
||||||
if ((stdio_devices[stdin] == NULL) && (stdio_devices[stdout] == NULL))
|
|
||||||
return (0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
1021
common/dlmalloc.c
1021
common/dlmalloc.c
File diff suppressed because it is too large
Load Diff
|
@ -31,9 +31,6 @@
|
||||||
|
|
||||||
#if defined(CONFIG_FPGA)
|
#if defined(CONFIG_FPGA)
|
||||||
|
|
||||||
#if 0
|
|
||||||
#define FPGA_DEBUG /* define FPGA_DEBUG to get debug messages */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Local definitions */
|
/* Local definitions */
|
||||||
#ifndef CONFIG_MAX_FPGA_DEVICES
|
#ifndef CONFIG_MAX_FPGA_DEVICES
|
||||||
|
@ -207,10 +204,6 @@ void fpga_init( ulong reloc_off )
|
||||||
memset( desc_table, 0, sizeof(desc_table));
|
memset( desc_table, 0, sizeof(desc_table));
|
||||||
|
|
||||||
PRINTF( "%s: CONFIG_FPGA = 0x%x\n", __FUNCTION__, CONFIG_FPGA );
|
PRINTF( "%s: CONFIG_FPGA = 0x%x\n", __FUNCTION__, CONFIG_FPGA );
|
||||||
#if 0
|
|
||||||
PRINTF( "%s: CFG_FPGA_XILINX = 0x%x\n", __FUNCTION__, CFG_FPGA_XILINX );
|
|
||||||
PRINTF( "%s: CFG_FPGA_ALTERA = 0x%x\n", __FUNCTION__, CFG_FPGA_ALTERA );
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* fpga_count
|
/* fpga_count
|
||||||
|
|
|
@ -118,16 +118,8 @@ extern int do_bootd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); /
|
||||||
/* #include <dmalloc.h> */
|
/* #include <dmalloc.h> */
|
||||||
/* #define DEBUG_SHELL */
|
/* #define DEBUG_SHELL */
|
||||||
|
|
||||||
#if 1
|
|
||||||
#include "busybox.h"
|
#include "busybox.h"
|
||||||
#include "cmdedit.h"
|
#include "cmdedit.h"
|
||||||
#else
|
|
||||||
#define applet_name "hush"
|
|
||||||
#include "standalone.h"
|
|
||||||
#define hush_main main
|
|
||||||
#undef CONFIG_FEATURE_SH_FANCY_PROMPT
|
|
||||||
#define BB_BANNER
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
#define SPECIAL_VAR_SYMBOL 03
|
#define SPECIAL_VAR_SYMBOL 03
|
||||||
#ifndef __U_BOOT__
|
#ifndef __U_BOOT__
|
||||||
|
@ -1480,14 +1472,6 @@ static int checkjobs(struct pipe* fg_pipe)
|
||||||
pi->stopped_progs++;
|
pi->stopped_progs++;
|
||||||
pi->progs[prognum].is_stopped = 1;
|
pi->progs[prognum].is_stopped = 1;
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* Printing this stuff is a pain, since it tends to
|
|
||||||
* overwrite the prompt an inconveinient moments. So
|
|
||||||
* don't do that. */
|
|
||||||
if (pi->stopped_progs == pi->num_progs) {
|
|
||||||
printf("\n"JOB_STATUS_FORMAT, pi->jobid, "Stopped", pi->text);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2125,18 +2109,6 @@ static int glob_needed(const char *s)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
static void globprint(glob_t *pglob)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
debug_printf("glob_t at %p:\n", pglob);
|
|
||||||
debug_printf(" gl_pathc=%d gl_pathv=%p gl_offs=%d gl_flags=%d\n",
|
|
||||||
pglob->gl_pathc, pglob->gl_pathv, pglob->gl_offs, pglob->gl_flags);
|
|
||||||
for (i=0; i<pglob->gl_pathc; i++)
|
|
||||||
debug_printf("pglob->gl_pathv[%d] = %p = %s\n", i,
|
|
||||||
pglob->gl_pathv[i], pglob->gl_pathv[i]);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int xglob(o_string *dest, int flags, glob_t *pglob)
|
static int xglob(o_string *dest, int flags, glob_t *pglob)
|
||||||
{
|
{
|
||||||
|
@ -2693,7 +2665,6 @@ static int redirect_opt_num(o_string *o)
|
||||||
FILE *generate_stream_from_list(struct pipe *head)
|
FILE *generate_stream_from_list(struct pipe *head)
|
||||||
{
|
{
|
||||||
FILE *pf;
|
FILE *pf;
|
||||||
#if 1
|
|
||||||
int pid, channel[2];
|
int pid, channel[2];
|
||||||
if (pipe(channel)<0) perror_msg_and_die("pipe");
|
if (pipe(channel)<0) perror_msg_and_die("pipe");
|
||||||
pid=fork();
|
pid=fork();
|
||||||
|
@ -2705,23 +2676,12 @@ FILE *generate_stream_from_list(struct pipe *head)
|
||||||
dup2(channel[1],1);
|
dup2(channel[1],1);
|
||||||
close(channel[1]);
|
close(channel[1]);
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
#define SURROGATE "surrogate response"
|
|
||||||
write(1,SURROGATE,sizeof(SURROGATE));
|
|
||||||
_exit(run_list(head));
|
|
||||||
#else
|
|
||||||
_exit(run_list_real(head)); /* leaks memory */
|
_exit(run_list_real(head)); /* leaks memory */
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
debug_printf("forked child %d\n",pid);
|
debug_printf("forked child %d\n",pid);
|
||||||
close(channel[1]);
|
close(channel[1]);
|
||||||
pf = fdopen(channel[0],"r");
|
pf = fdopen(channel[0],"r");
|
||||||
debug_printf("pipe on FILE *%p\n",pf);
|
debug_printf("pipe on FILE *%p\n",pf);
|
||||||
#else
|
|
||||||
free_pipe_list(head,0);
|
|
||||||
pf=popen("echo surrogate response","r");
|
|
||||||
debug_printf("started fake pipe on FILE *%p\n",pf);
|
|
||||||
#endif
|
|
||||||
return pf;
|
return pf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2984,14 +2944,6 @@ int parse_stream(o_string *dest, struct p_context *ctx,
|
||||||
debug_printf("leaving parse_stream (triggered)\n");
|
debug_printf("leaving parse_stream (triggered)\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
if (ch=='\n') {
|
|
||||||
/* Yahoo! Time to run with it! */
|
|
||||||
done_pipe(ctx,PIPE_SEQ);
|
|
||||||
run_list(ctx->list_head);
|
|
||||||
initialize_context(ctx);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (m!=2) switch (ch) {
|
if (m!=2) switch (ch) {
|
||||||
case '#':
|
case '#':
|
||||||
if (dest->length == 0 && !dest->quote) {
|
if (dest->length == 0 && !dest->quote) {
|
||||||
|
|
21
common/lcd.c
21
common/lcd.c
|
@ -110,32 +110,11 @@ static int lcd_getfgcolor (void);
|
||||||
|
|
||||||
static void console_scrollup (void)
|
static void console_scrollup (void)
|
||||||
{
|
{
|
||||||
#if 1
|
|
||||||
/* Copy up rows ignoring the first one */
|
/* Copy up rows ignoring the first one */
|
||||||
memcpy (CONSOLE_ROW_FIRST, CONSOLE_ROW_SECOND, CONSOLE_SCROLL_SIZE);
|
memcpy (CONSOLE_ROW_FIRST, CONSOLE_ROW_SECOND, CONSOLE_SCROLL_SIZE);
|
||||||
|
|
||||||
/* Clear the last one */
|
/* Clear the last one */
|
||||||
memset (CONSOLE_ROW_LAST, COLOR_MASK(lcd_color_bg), CONSOLE_ROW_SIZE);
|
memset (CONSOLE_ROW_LAST, COLOR_MASK(lcd_color_bg), CONSOLE_ROW_SIZE);
|
||||||
#else
|
|
||||||
/*
|
|
||||||
* Poor attempt to optimize speed by moving "long"s.
|
|
||||||
* But the code is ugly, and not a bit faster :-(
|
|
||||||
*/
|
|
||||||
ulong *t = (ulong *)CONSOLE_ROW_FIRST;
|
|
||||||
ulong *s = (ulong *)CONSOLE_ROW_SECOND;
|
|
||||||
ulong l = CONSOLE_SCROLL_SIZE / sizeof(ulong);
|
|
||||||
uchar c = lcd_color_bg & 0xFF;
|
|
||||||
ulong val= (c<<24) | (c<<16) | (c<<8) | c;
|
|
||||||
|
|
||||||
while (l--)
|
|
||||||
*t++ = *s++;
|
|
||||||
|
|
||||||
t = (ulong *)CONSOLE_ROW_LAST;
|
|
||||||
l = CONSOLE_ROW_SIZE / sizeof(ulong);
|
|
||||||
|
|
||||||
while (l-- > 0)
|
|
||||||
*t++ = val;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
|
|
369
common/usb_kbd.c
369
common/usb_kbd.c
|
@ -355,374 +355,5 @@ static int usb_kbd_probe(struct usb_device *dev, unsigned int ifnum)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
struct usb_hid_descriptor {
|
|
||||||
unsigned char bLength;
|
|
||||||
unsigned char bDescriptorType; /* 0x21 for HID */
|
|
||||||
unsigned short bcdHID; /* release number */
|
|
||||||
unsigned char bCountryCode;
|
|
||||||
unsigned char bNumDescriptors;
|
|
||||||
unsigned char bReportDescriptorType;
|
|
||||||
unsigned short wDescriptorLength;
|
|
||||||
} __attribute__ ((packed));
|
|
||||||
|
|
||||||
/*
|
|
||||||
* We parse each description item into this structure. Short items data
|
|
||||||
* values are expanded to 32-bit signed int, long items contain a pointer
|
|
||||||
* into the data area.
|
|
||||||
*/
|
|
||||||
|
|
||||||
struct hid_item {
|
|
||||||
unsigned char format;
|
|
||||||
unsigned char size;
|
|
||||||
unsigned char type;
|
|
||||||
unsigned char tag;
|
|
||||||
union {
|
|
||||||
unsigned char u8;
|
|
||||||
char s8;
|
|
||||||
unsigned short u16;
|
|
||||||
short s16;
|
|
||||||
unsigned long u32;
|
|
||||||
long s32;
|
|
||||||
unsigned char *longdata;
|
|
||||||
} data;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* HID report item format
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define HID_ITEM_FORMAT_SHORT 0
|
|
||||||
#define HID_ITEM_FORMAT_LONG 1
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Special tag indicating long items
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define HID_ITEM_TAG_LONG 15
|
|
||||||
|
|
||||||
|
|
||||||
static struct usb_hid_descriptor usb_kbd_hid_desc;
|
|
||||||
|
|
||||||
void usb_kbd_display_hid(struct usb_hid_descriptor *hid)
|
|
||||||
{
|
|
||||||
printf("USB_HID_DESC:\n");
|
|
||||||
printf(" bLenght 0x%x\n",hid->bLength);
|
|
||||||
printf(" bcdHID 0x%x\n",hid->bcdHID);
|
|
||||||
printf(" bCountryCode %d\n",hid->bCountryCode);
|
|
||||||
printf(" bNumDescriptors 0x%x\n",hid->bNumDescriptors);
|
|
||||||
printf(" bReportDescriptorType 0x%x\n",hid->bReportDescriptorType);
|
|
||||||
printf(" wDescriptorLength 0x%x\n",hid->wDescriptorLength);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Fetch a report description item from the data stream. We support long
|
|
||||||
* items, though they are not used yet.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static int fetch_item(unsigned char *start,unsigned char *end, struct hid_item *item)
|
|
||||||
{
|
|
||||||
if((end - start) > 0) {
|
|
||||||
unsigned char b = *start++;
|
|
||||||
item->type = (b >> 2) & 3;
|
|
||||||
item->tag = (b >> 4) & 15;
|
|
||||||
if (item->tag == HID_ITEM_TAG_LONG) {
|
|
||||||
item->format = HID_ITEM_FORMAT_LONG;
|
|
||||||
if ((end - start) >= 2) {
|
|
||||||
item->size = *start++;
|
|
||||||
item->tag = *start++;
|
|
||||||
if ((end - start) >= item->size) {
|
|
||||||
item->data.longdata = start;
|
|
||||||
start += item->size;
|
|
||||||
return item->size;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
item->format = HID_ITEM_FORMAT_SHORT;
|
|
||||||
item->size = b & 3;
|
|
||||||
switch (item->size) {
|
|
||||||
case 0:
|
|
||||||
return item->size;
|
|
||||||
case 1:
|
|
||||||
if ((end - start) >= 1) {
|
|
||||||
item->data.u8 = *start++;
|
|
||||||
return item->size;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
if ((end - start) >= 2) {
|
|
||||||
item->data.u16 = swap_16((unsigned short *)start);
|
|
||||||
start+=2;
|
|
||||||
return item->size;
|
|
||||||
}
|
|
||||||
case 3:
|
|
||||||
item->size++;
|
|
||||||
if ((end - start) >= 4) {
|
|
||||||
item->data.u32 = swap_32((unsigned long *)start);
|
|
||||||
start+=4;
|
|
||||||
return item->size;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* HID report descriptor item type (prefix bit 2,3)
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define HID_ITEM_TYPE_MAIN 0
|
|
||||||
#define HID_ITEM_TYPE_GLOBAL 1
|
|
||||||
#define HID_ITEM_TYPE_LOCAL 2
|
|
||||||
#define HID_ITEM_TYPE_RESERVED 3
|
|
||||||
/*
|
|
||||||
* HID report descriptor main item tags
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define HID_MAIN_ITEM_TAG_INPUT 8
|
|
||||||
#define HID_MAIN_ITEM_TAG_OUTPUT 9
|
|
||||||
#define HID_MAIN_ITEM_TAG_FEATURE 11
|
|
||||||
#define HID_MAIN_ITEM_TAG_BEGIN_COLLECTION 10
|
|
||||||
#define HID_MAIN_ITEM_TAG_END_COLLECTION 12
|
|
||||||
/*
|
|
||||||
* HID report descriptor main item contents
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define HID_MAIN_ITEM_CONSTANT 0x001
|
|
||||||
#define HID_MAIN_ITEM_VARIABLE 0x002
|
|
||||||
#define HID_MAIN_ITEM_RELATIVE 0x004
|
|
||||||
#define HID_MAIN_ITEM_WRAP 0x008
|
|
||||||
#define HID_MAIN_ITEM_NONLINEAR 0x010
|
|
||||||
#define HID_MAIN_ITEM_NO_PREFERRED 0x020
|
|
||||||
#define HID_MAIN_ITEM_NULL_STATE 0x040
|
|
||||||
#define HID_MAIN_ITEM_VOLATILE 0x080
|
|
||||||
#define HID_MAIN_ITEM_BUFFERED_BYTE 0x100
|
|
||||||
|
|
||||||
/*
|
|
||||||
* HID report descriptor collection item types
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define HID_COLLECTION_PHYSICAL 0
|
|
||||||
#define HID_COLLECTION_APPLICATION 1
|
|
||||||
#define HID_COLLECTION_LOGICAL 2
|
|
||||||
/*
|
|
||||||
* HID report descriptor global item tags
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define HID_GLOBAL_ITEM_TAG_USAGE_PAGE 0
|
|
||||||
#define HID_GLOBAL_ITEM_TAG_LOGICAL_MINIMUM 1
|
|
||||||
#define HID_GLOBAL_ITEM_TAG_LOGICAL_MAXIMUM 2
|
|
||||||
#define HID_GLOBAL_ITEM_TAG_PHYSICAL_MINIMUM 3
|
|
||||||
#define HID_GLOBAL_ITEM_TAG_PHYSICAL_MAXIMUM 4
|
|
||||||
#define HID_GLOBAL_ITEM_TAG_UNIT_EXPONENT 5
|
|
||||||
#define HID_GLOBAL_ITEM_TAG_UNIT 6
|
|
||||||
#define HID_GLOBAL_ITEM_TAG_REPORT_SIZE 7
|
|
||||||
#define HID_GLOBAL_ITEM_TAG_REPORT_ID 8
|
|
||||||
#define HID_GLOBAL_ITEM_TAG_REPORT_COUNT 9
|
|
||||||
#define HID_GLOBAL_ITEM_TAG_PUSH 10
|
|
||||||
#define HID_GLOBAL_ITEM_TAG_POP 11
|
|
||||||
|
|
||||||
/*
|
|
||||||
* HID report descriptor local item tags
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define HID_LOCAL_ITEM_TAG_USAGE 0
|
|
||||||
#define HID_LOCAL_ITEM_TAG_USAGE_MINIMUM 1
|
|
||||||
#define HID_LOCAL_ITEM_TAG_USAGE_MAXIMUM 2
|
|
||||||
#define HID_LOCAL_ITEM_TAG_DESIGNATOR_INDEX 3
|
|
||||||
#define HID_LOCAL_ITEM_TAG_DESIGNATOR_MINIMUM 4
|
|
||||||
#define HID_LOCAL_ITEM_TAG_DESIGNATOR_MAXIMUM 5
|
|
||||||
#define HID_LOCAL_ITEM_TAG_STRING_INDEX 7
|
|
||||||
#define HID_LOCAL_ITEM_TAG_STRING_MINIMUM 8
|
|
||||||
#define HID_LOCAL_ITEM_TAG_STRING_MAXIMUM 9
|
|
||||||
#define HID_LOCAL_ITEM_TAG_DELIMITER 10
|
|
||||||
|
|
||||||
|
|
||||||
static void usb_kbd_show_item(struct hid_item *item)
|
|
||||||
{
|
|
||||||
switch(item->type) {
|
|
||||||
case HID_ITEM_TYPE_MAIN:
|
|
||||||
switch(item->tag) {
|
|
||||||
case HID_MAIN_ITEM_TAG_INPUT:
|
|
||||||
printf("Main Input");
|
|
||||||
break;
|
|
||||||
case HID_MAIN_ITEM_TAG_OUTPUT:
|
|
||||||
printf("Main Output");
|
|
||||||
break;
|
|
||||||
case HID_MAIN_ITEM_TAG_FEATURE:
|
|
||||||
printf("Main Feature");
|
|
||||||
break;
|
|
||||||
case HID_MAIN_ITEM_TAG_BEGIN_COLLECTION:
|
|
||||||
printf("Main Begin Collection");
|
|
||||||
break;
|
|
||||||
case HID_MAIN_ITEM_TAG_END_COLLECTION:
|
|
||||||
printf("Main End Collection");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
printf("Main reserved %d",item->tag);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case HID_ITEM_TYPE_GLOBAL:
|
|
||||||
switch(item->tag) {
|
|
||||||
case HID_GLOBAL_ITEM_TAG_USAGE_PAGE:
|
|
||||||
printf("- Global Usage Page");
|
|
||||||
break;
|
|
||||||
case HID_GLOBAL_ITEM_TAG_LOGICAL_MINIMUM:
|
|
||||||
printf("- Global Logical Minimum");
|
|
||||||
break;
|
|
||||||
case HID_GLOBAL_ITEM_TAG_LOGICAL_MAXIMUM:
|
|
||||||
printf("- Global Logical Maximum");
|
|
||||||
break;
|
|
||||||
case HID_GLOBAL_ITEM_TAG_PHYSICAL_MINIMUM:
|
|
||||||
printf("- Global physical Minimum");
|
|
||||||
break;
|
|
||||||
case HID_GLOBAL_ITEM_TAG_PHYSICAL_MAXIMUM:
|
|
||||||
printf("- Global physical Maximum");
|
|
||||||
break;
|
|
||||||
case HID_GLOBAL_ITEM_TAG_UNIT_EXPONENT:
|
|
||||||
printf("- Global Unit Exponent");
|
|
||||||
break;
|
|
||||||
case HID_GLOBAL_ITEM_TAG_UNIT:
|
|
||||||
printf("- Global Unit");
|
|
||||||
break;
|
|
||||||
case HID_GLOBAL_ITEM_TAG_REPORT_SIZE:
|
|
||||||
printf("- Global Report Size");
|
|
||||||
break;
|
|
||||||
case HID_GLOBAL_ITEM_TAG_REPORT_ID:
|
|
||||||
printf("- Global Report ID");
|
|
||||||
break;
|
|
||||||
case HID_GLOBAL_ITEM_TAG_REPORT_COUNT:
|
|
||||||
printf("- Global Report Count");
|
|
||||||
break;
|
|
||||||
case HID_GLOBAL_ITEM_TAG_PUSH:
|
|
||||||
printf("- Global Push");
|
|
||||||
break;
|
|
||||||
case HID_GLOBAL_ITEM_TAG_POP:
|
|
||||||
printf("- Global Pop");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
printf("- Global reserved %d",item->tag);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case HID_ITEM_TYPE_LOCAL:
|
|
||||||
switch(item->tag) {
|
|
||||||
case HID_LOCAL_ITEM_TAG_USAGE:
|
|
||||||
printf("-- Local Usage");
|
|
||||||
break;
|
|
||||||
case HID_LOCAL_ITEM_TAG_USAGE_MINIMUM:
|
|
||||||
printf("-- Local Usage Minimum");
|
|
||||||
break;
|
|
||||||
case HID_LOCAL_ITEM_TAG_USAGE_MAXIMUM:
|
|
||||||
printf("-- Local Usage Maximum");
|
|
||||||
break;
|
|
||||||
case HID_LOCAL_ITEM_TAG_DESIGNATOR_INDEX:
|
|
||||||
printf("-- Local Designator Index");
|
|
||||||
break;
|
|
||||||
case HID_LOCAL_ITEM_TAG_DESIGNATOR_MINIMUM:
|
|
||||||
printf("-- Local Designator Minimum");
|
|
||||||
break;
|
|
||||||
case HID_LOCAL_ITEM_TAG_DESIGNATOR_MAXIMUM:
|
|
||||||
printf("-- Local Designator Maximum");
|
|
||||||
break;
|
|
||||||
case HID_LOCAL_ITEM_TAG_STRING_INDEX:
|
|
||||||
printf("-- Local String Index");
|
|
||||||
break;
|
|
||||||
case HID_LOCAL_ITEM_TAG_STRING_MINIMUM:
|
|
||||||
printf("-- Local String Minimum");
|
|
||||||
break;
|
|
||||||
case HID_LOCAL_ITEM_TAG_STRING_MAXIMUM:
|
|
||||||
printf("-- Local String Maximum");
|
|
||||||
break;
|
|
||||||
case HID_LOCAL_ITEM_TAG_DELIMITER:
|
|
||||||
printf("-- Local Delimiter");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
printf("-- Local reserved %d",item->tag);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
printf("--- reserved %d",item->type);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
switch(item->size) {
|
|
||||||
case 1:
|
|
||||||
printf(" %d",item->data.u8);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
printf(" %d",item->data.u16);
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
printf(" %ld",item->data.u32);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int usb_kbd_get_hid_desc(struct usb_device *dev)
|
|
||||||
{
|
|
||||||
unsigned char buffer[256];
|
|
||||||
struct usb_descriptor_header *head;
|
|
||||||
struct usb_config_descriptor *config;
|
|
||||||
int index,len,i;
|
|
||||||
unsigned char *start, *end;
|
|
||||||
struct hid_item item;
|
|
||||||
|
|
||||||
if(usb_get_configuration_no(dev,&buffer[0],0)==-1)
|
|
||||||
return -1;
|
|
||||||
head =(struct usb_descriptor_header *)&buffer[0];
|
|
||||||
if(head->bDescriptorType!=USB_DT_CONFIG) {
|
|
||||||
printf(" ERROR: NOT USB_CONFIG_DESC %x\n",head->bDescriptorType);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
index=head->bLength;
|
|
||||||
config=(struct usb_config_descriptor *)&buffer[0];
|
|
||||||
len=swap_16(config->wTotalLength);
|
|
||||||
/* Ok the first entry must be a configuration entry, now process the others */
|
|
||||||
head=(struct usb_descriptor_header *)&buffer[index];
|
|
||||||
while(index+1 < len) {
|
|
||||||
if(head->bDescriptorType==USB_DT_HID) {
|
|
||||||
printf("HID desc found\n");
|
|
||||||
memcpy(&usb_kbd_hid_desc,&buffer[index],buffer[index]);
|
|
||||||
usb_kbd_hid_desc.bcdHID=swap_16(usb_kbd_hid_desc.bcdHID);
|
|
||||||
usb_kbd_hid_desc.wDescriptorLength=swap_16(usb_kbd_hid_desc.wDescriptorLength);
|
|
||||||
usb_kbd_display_hid(&usb_kbd_hid_desc);
|
|
||||||
len=0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
index+=head->bLength;
|
|
||||||
head=(struct usb_descriptor_header *)&buffer[index];
|
|
||||||
}
|
|
||||||
if(len>0)
|
|
||||||
return -1;
|
|
||||||
len=usb_kbd_hid_desc.wDescriptorLength;
|
|
||||||
if((index = usb_get_class_descriptor(dev, 0, USB_DT_REPORT, 0, &buffer[0], len)) < 0) {
|
|
||||||
printf("reading report descriptor failed\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
printf(" report descriptor (size %u, read %d)\n", len, index);
|
|
||||||
start=&buffer[0];
|
|
||||||
end=&buffer[len];
|
|
||||||
i=0;
|
|
||||||
do {
|
|
||||||
index=fetch_item(start,end,&item);
|
|
||||||
i+=index;
|
|
||||||
i++;
|
|
||||||
if(index>=0)
|
|
||||||
usb_kbd_show_item(&item);
|
|
||||||
|
|
||||||
start+=index;
|
|
||||||
start++;
|
|
||||||
} while(index>=0);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* CONFIG_USB_KEYBOARD */
|
#endif /* CONFIG_USB_KEYBOARD */
|
||||||
|
|
|
@ -1022,15 +1022,6 @@ int usb_storage_probe(struct usb_device *dev, unsigned int ifnum,struct us_data
|
||||||
/* let's examine the device now */
|
/* let's examine the device now */
|
||||||
iface = &dev->config.if_desc[ifnum];
|
iface = &dev->config.if_desc[ifnum];
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* this is the place to patch some storage devices */
|
|
||||||
USB_STOR_PRINTF("iVendor %X iProduct %X\n",dev->descriptor.idVendor,dev->descriptor.idProduct);
|
|
||||||
if ((dev->descriptor.idVendor) == 0x066b && (dev->descriptor.idProduct) == 0x0103) {
|
|
||||||
USB_STOR_PRINTF("patched for E-USB\n");
|
|
||||||
protocol = US_PR_CB;
|
|
||||||
subclass = US_SC_UFI; /* an assumption */
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (dev->descriptor.bDeviceClass != 0 ||
|
if (dev->descriptor.bDeviceClass != 0 ||
|
||||||
iface->bInterfaceClass != USB_CLASS_MASS_STORAGE ||
|
iface->bInterfaceClass != USB_CLASS_MASS_STORAGE ||
|
||||||
|
@ -1214,10 +1205,6 @@ int usb_stor_get_info(struct usb_device *dev,struct us_data *ss,block_dev_desc_t
|
||||||
cap[1] = 0x200;
|
cap[1] = 0x200;
|
||||||
}
|
}
|
||||||
USB_STOR_PRINTF("Read Capacity returns: 0x%lx, 0x%lx\n",cap[0],cap[1]);
|
USB_STOR_PRINTF("Read Capacity returns: 0x%lx, 0x%lx\n",cap[0],cap[1]);
|
||||||
#if 0
|
|
||||||
if(cap[0]>(0x200000 * 10)) /* greater than 10 GByte */
|
|
||||||
cap[0]>>=16;
|
|
||||||
#endif
|
|
||||||
#ifdef LITTLEENDIAN
|
#ifdef LITTLEENDIAN
|
||||||
cap[0] = ((unsigned long)(
|
cap[0] = ((unsigned long)(
|
||||||
(((unsigned long)(cap[0]) & (unsigned long)0x000000ffUL) << 24) |
|
(((unsigned long)(cap[0]) & (unsigned long)0x000000ffUL) << 24) |
|
||||||
|
|
|
@ -33,9 +33,6 @@
|
||||||
|
|
||||||
#if (CONFIG_FPGA & (CFG_XILINX | CFG_VIRTEX2))
|
#if (CONFIG_FPGA & (CFG_XILINX | CFG_VIRTEX2))
|
||||||
|
|
||||||
#if 0
|
|
||||||
#define FPGA_DEBUG
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef FPGA_DEBUG
|
#ifdef FPGA_DEBUG
|
||||||
#define PRINTF(fmt,args...) printf (fmt ,##args)
|
#define PRINTF(fmt,args...) printf (fmt ,##args)
|
||||||
|
|
|
@ -34,9 +34,6 @@
|
||||||
|
|
||||||
#if (CONFIG_FPGA & CFG_FPGA_XILINX)
|
#if (CONFIG_FPGA & CFG_FPGA_XILINX)
|
||||||
|
|
||||||
#if 0
|
|
||||||
#define FPGA_DEBUG
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define FPGA_DEBUG to get debug printf's */
|
/* Define FPGA_DEBUG to get debug printf's */
|
||||||
#ifdef FPGA_DEBUG
|
#ifdef FPGA_DEBUG
|
||||||
|
|
|
@ -840,10 +840,3 @@ xyzModem_error (int err)
|
||||||
/*
|
/*
|
||||||
* RedBoot interface
|
* RedBoot interface
|
||||||
*/
|
*/
|
||||||
#if 0 /* SB */
|
|
||||||
GETC_IO_FUNCS (xyzModem_io, xyzModem_stream_open, xyzModem_stream_close,
|
|
||||||
xyzModem_stream_terminate, xyzModem_stream_read,
|
|
||||||
xyzModem_error);
|
|
||||||
RedBoot_load (xmodem, xyzModem_io, false, false, xyzModem_xmodem);
|
|
||||||
RedBoot_load (ymodem, xyzModem_io, false, false, xyzModem_ymodem);
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -232,24 +232,5 @@ UnknownException(struct pt_regs *regs)
|
||||||
int
|
int
|
||||||
addr_probe(uint *addr)
|
addr_probe(uint *addr)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
int retval;
|
|
||||||
|
|
||||||
__asm__ __volatile__( \
|
|
||||||
"1: lwz %0,0(%1)\n" \
|
|
||||||
" eieio\n" \
|
|
||||||
" li %0,0\n" \
|
|
||||||
"2:\n" \
|
|
||||||
".section .fixup,\"ax\"\n" \
|
|
||||||
"3: li %0,-1\n" \
|
|
||||||
" b 2b\n" \
|
|
||||||
".section __ex_table,\"a\"\n" \
|
|
||||||
" .align 2\n" \
|
|
||||||
" .long 1b,3b\n" \
|
|
||||||
".text" \
|
|
||||||
: "=r" (retval) : "r"(addr));
|
|
||||||
|
|
||||||
return (retval);
|
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -126,9 +126,6 @@ i2c_read (unsigned char chip, unsigned int addr, int alen,
|
||||||
return 1;
|
return 1;
|
||||||
/* XXX assume an ATMEL AT24C16 */
|
/* XXX assume an ATMEL AT24C16 */
|
||||||
if (alen == 1) {
|
if (alen == 1) {
|
||||||
#if 0 /* EEPROM code already sets this correctly */
|
|
||||||
chip |= (addr >> 8) & 0xff;
|
|
||||||
#endif
|
|
||||||
addr = addr & 0xff;
|
addr = addr & 0xff;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -151,9 +148,6 @@ i2c_write(unsigned char chip, unsigned int addr, int alen,
|
||||||
buf = buffer;
|
buf = buffer;
|
||||||
/* do single byte writes */
|
/* do single byte writes */
|
||||||
for (i = 0; i < len; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
#if 0 /* EEPROM code already sets this correctly */
|
|
||||||
chip |= (addr >> 8) & 0xff;
|
|
||||||
#endif
|
|
||||||
addr = addr & 0xff;
|
addr = addr & 0xff;
|
||||||
if (at91_xfer(chip, addr, alen, buf++, 1, 0))
|
if (at91_xfer(chip, addr, alen, buf++, 1, 0))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -1279,10 +1279,6 @@ int submit_common_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
|
||||||
/* abuse timeout */
|
/* abuse timeout */
|
||||||
timeout = rh_check_port_status(&gohci);
|
timeout = rh_check_port_status(&gohci);
|
||||||
if (timeout >= 0) {
|
if (timeout >= 0) {
|
||||||
#if 0 /* this does nothing useful, but leave it here in case that changes */
|
|
||||||
/* the called routine adds 1 to the passed value */
|
|
||||||
usb_hub_port_connect_change(gohci.rh.dev, timeout - 1);
|
|
||||||
#endif
|
|
||||||
/*
|
/*
|
||||||
* XXX
|
* XXX
|
||||||
* This is potentially dangerous because it assumes
|
* This is potentially dangerous because it assumes
|
||||||
|
|
|
@ -71,12 +71,6 @@ static int GetI2CSDA(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
static void SetI2CSDA(int x)
|
|
||||||
{
|
|
||||||
rGPEDAT = (rGPEDAT & ~0x8000) | (x&1) << 15;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void SetI2CSCL(int x)
|
static void SetI2CSCL(int x)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1302,29 +1302,6 @@ int submit_common_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* we got an Root Hub Status Change interrupt */
|
|
||||||
if (got_rhsc) {
|
|
||||||
#ifdef DEBUG
|
|
||||||
ohci_dump_roothub (&gohci, 1);
|
|
||||||
#endif
|
|
||||||
got_rhsc = 0;
|
|
||||||
/* abuse timeout */
|
|
||||||
timeout = rh_check_port_status(&gohci);
|
|
||||||
if (timeout >= 0) {
|
|
||||||
#if 0 /* this does nothing useful, but leave it here in case that changes */
|
|
||||||
/* the called routine adds 1 to the passed value */
|
|
||||||
usb_hub_port_connect_change(gohci.rh.dev, timeout - 1);
|
|
||||||
#endif
|
|
||||||
/*
|
|
||||||
* XXX
|
|
||||||
* This is potentially dangerous because it assumes
|
|
||||||
* that only one device is ever plugged in!
|
|
||||||
*/
|
|
||||||
devgone = dev;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
dev->status = stat;
|
dev->status = stat;
|
||||||
dev->act_len = transfer_len;
|
dev->act_len = transfer_len;
|
||||||
|
|
|
@ -199,26 +199,6 @@ clbss_l:str r2, [r0] /* clear loop... */
|
||||||
cmp r0, r1
|
cmp r0, r1
|
||||||
ble clbss_l
|
ble clbss_l
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* try doing this stuff after the relocation */
|
|
||||||
ldr r0, =pWTCON
|
|
||||||
mov r1, #0x0
|
|
||||||
str r1, [r0]
|
|
||||||
|
|
||||||
/*
|
|
||||||
* mask all IRQs by setting all bits in the INTMR - default
|
|
||||||
*/
|
|
||||||
mov r1, #0xffffffff
|
|
||||||
ldr r0, =INTMR
|
|
||||||
str r1, [r0]
|
|
||||||
|
|
||||||
/* FCLK:HCLK:PCLK = 1:2:4 */
|
|
||||||
/* default FCLK is 120 MHz ! */
|
|
||||||
ldr r0, =CLKDIVN
|
|
||||||
mov r1, #3
|
|
||||||
str r1, [r0]
|
|
||||||
/* END stuff after relocation */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ldr pc, _start_armboot
|
ldr pc, _start_armboot
|
||||||
|
|
||||||
|
|
|
@ -236,9 +236,6 @@ unsigned long init_sc520_dram(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
printf("Configured %d bytes of dram\n", dram_present);
|
|
||||||
#endif
|
|
||||||
gd->ram_size = dram_present;
|
gd->ram_size = dram_present;
|
||||||
|
|
||||||
return dram_present;
|
return dram_present;
|
||||||
|
@ -284,9 +281,7 @@ int pci_sc520_set_irq(int pci_pin, int irq)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
# if 1
|
|
||||||
printf("set_irq(): map INT%c to IRQ%d\n", pci_pin + 'A', irq);
|
printf("set_irq(): map INT%c to IRQ%d\n", pci_pin + 'A', irq);
|
||||||
#endif
|
|
||||||
if (irq < 0 || irq > 15) {
|
if (irq < 0 || irq > 15) {
|
||||||
return -1; /* illegal irq */
|
return -1; /* illegal irq */
|
||||||
}
|
}
|
||||||
|
@ -426,10 +421,6 @@ void udelay(unsigned long usec)
|
||||||
read_mmcr_word(SC520_SWTMRMILLI);
|
read_mmcr_word(SC520_SWTMRMILLI);
|
||||||
read_mmcr_word(SC520_SWTMRMICRO);
|
read_mmcr_word(SC520_SWTMRMICRO);
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* do not enable this line, udelay is used in the serial driver -> recursion */
|
|
||||||
printf("udelay: %ld m.u %d.%d tm.tu %d.%d\n", usec, m, u, tm, tu);
|
|
||||||
#endif
|
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|
||||||
m += read_mmcr_word(SC520_SWTMRMILLI);
|
m += read_mmcr_word(SC520_SWTMRMILLI);
|
||||||
|
|
|
@ -136,76 +136,4 @@ void udelay (unsigned long usec)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* this is a version with debug output */
|
|
||||||
void _udelay (unsigned long usec)
|
|
||||||
{
|
|
||||||
int counter;
|
|
||||||
int wraps;
|
|
||||||
|
|
||||||
int usec1, usec2, usec3;
|
|
||||||
int wraps1, wraps2, wraps3, wraps4;
|
|
||||||
int ctr1, ctr2, ctr3, nct1, nct2;
|
|
||||||
int i;
|
|
||||||
usec1=usec;
|
|
||||||
if (!timer_init_done) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
counter = read_pit();
|
|
||||||
ctr1 = counter;
|
|
||||||
wraps = usec/1000;
|
|
||||||
usec = usec%1000;
|
|
||||||
|
|
||||||
usec2 = usec;
|
|
||||||
wraps1 = wraps;
|
|
||||||
|
|
||||||
usec*=1194;
|
|
||||||
usec/=1000;
|
|
||||||
usec+=counter;
|
|
||||||
if (usec > 1194) {
|
|
||||||
usec-=1194;
|
|
||||||
wraps++;
|
|
||||||
}
|
|
||||||
|
|
||||||
usec3 = usec;
|
|
||||||
wraps2 = wraps;
|
|
||||||
|
|
||||||
ctr2 = wraps3 = nct1 = 4711;
|
|
||||||
ctr3 = wraps4 = nct2 = 4711;
|
|
||||||
i=0;
|
|
||||||
while (1) {
|
|
||||||
int new_count = read_pit();
|
|
||||||
i++;
|
|
||||||
if ((new_count < usec && !wraps) || wraps < 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (new_count > counter) {
|
|
||||||
wraps--;
|
|
||||||
}
|
|
||||||
if (ctr2==4711) {
|
|
||||||
ctr2 = counter;
|
|
||||||
wraps3 = wraps;
|
|
||||||
nct1 = new_count;
|
|
||||||
} else {
|
|
||||||
ctr3 = counter;
|
|
||||||
wraps4 = wraps;
|
|
||||||
nct2 = new_count;
|
|
||||||
}
|
|
||||||
|
|
||||||
counter = new_count;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("udelay(%d)\n", usec1);
|
|
||||||
printf("counter %d\n", ctr1);
|
|
||||||
printf("1: wraps %d, usec %d\n", wraps1, usec2);
|
|
||||||
printf("2: wraps %d, usec %d\n", wraps2, usec3);
|
|
||||||
printf("new_count[0] %d counter %d wraps %d\n", nct1, ctr2, wraps3);
|
|
||||||
printf("new_count[%d] %d counter %d wraps %d\n", i, nct2, ctr3, wraps4);
|
|
||||||
|
|
||||||
printf("%d %d %d %d %d\n",
|
|
||||||
read_pit(), read_pit(), read_pit(),
|
|
||||||
read_pit(), read_pit());
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -240,18 +240,6 @@ IxEthDBStatus ixEthDBPortEnable(IxEthDBPortId portID)
|
||||||
ixEthDBFirewallInvalidAddressFilterEnable(portID, ixEthDBPortState[portID].srcAddressFilterEnabled);
|
ixEthDBFirewallInvalidAddressFilterEnable(portID, ixEthDBPortState[portID].srcAddressFilterEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 /* test-only */
|
|
||||||
if ((portInfo->featureCapability & IX_ETH_DB_VLAN_QOS) != 0)
|
|
||||||
{
|
|
||||||
ixEthDBAcceptableFrameTypeSet(portID, ixEthDBPortState[portID].frameFilter);
|
|
||||||
ixEthDBIngressVlanTaggingEnabledSet(portID, ixEthDBPortState[portID].taggingAction);
|
|
||||||
|
|
||||||
ixEthDBEgressVlanTaggingEnabledSet(portID, ixEthDBPortState[portID].transmitTaggingInfo);
|
|
||||||
ixEthDBPortVlanMembershipSet(portID, ixEthDBPortState[portID].vlanMembership);
|
|
||||||
|
|
||||||
ixEthDBPriorityMappingTableSet(portID, ixEthDBPortState[portID].priorityTable);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if ((portInfo->featureCapability & IX_ETH_DB_SPANNING_TREE_PROTOCOL) != 0)
|
if ((portInfo->featureCapability & IX_ETH_DB_SPANNING_TREE_PROTOCOL) != 0)
|
||||||
{
|
{
|
||||||
|
@ -290,9 +278,6 @@ IxEthDBStatus ixEthDBPortDisable(IxEthDBPortId portID)
|
||||||
BOOL result;
|
BOOL result;
|
||||||
PortInfo *portInfo;
|
PortInfo *portInfo;
|
||||||
IxEthDBFeature learningEnabled;
|
IxEthDBFeature learningEnabled;
|
||||||
#if 0 /* test-only */
|
|
||||||
IxEthDBPriorityTable classZeroTable;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
IX_ETH_DB_CHECK_PORT_EXISTS(portID);
|
IX_ETH_DB_CHECK_PORT_EXISTS(portID);
|
||||||
|
|
||||||
|
@ -325,19 +310,6 @@ IxEthDBStatus ixEthDBPortDisable(IxEthDBPortId portID)
|
||||||
|
|
||||||
/* now turn off all EthDB filtering features on the port */
|
/* now turn off all EthDB filtering features on the port */
|
||||||
|
|
||||||
#if 0 /* test-only */
|
|
||||||
/* VLAN & QoS */
|
|
||||||
if ((portInfo->featureCapability & IX_ETH_DB_VLAN_QOS) != 0)
|
|
||||||
{
|
|
||||||
ixEthDBPortVlanMembershipRangeAdd((IxEthDBPortId) portID, 0, IX_ETH_DB_802_1Q_MAX_VLAN_ID);
|
|
||||||
ixEthDBEgressVlanRangeTaggingEnabledSet((IxEthDBPortId) portID, 0, IX_ETH_DB_802_1Q_MAX_VLAN_ID, FALSE);
|
|
||||||
ixEthDBAcceptableFrameTypeSet((IxEthDBPortId) portID, IX_ETH_DB_ACCEPT_ALL_FRAMES);
|
|
||||||
ixEthDBIngressVlanTaggingEnabledSet((IxEthDBPortId) portID, IX_ETH_DB_PASS_THROUGH);
|
|
||||||
|
|
||||||
memset(classZeroTable, 0, sizeof (classZeroTable));
|
|
||||||
ixEthDBPriorityMappingTableSet((IxEthDBPortId) portID, classZeroTable);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* STP */
|
/* STP */
|
||||||
if ((portInfo->featureCapability & IX_ETH_DB_SPANNING_TREE_PROTOCOL) != 0)
|
if ((portInfo->featureCapability & IX_ETH_DB_SPANNING_TREE_PROTOCOL) != 0)
|
||||||
|
|
|
@ -135,15 +135,9 @@ ixOsalLog (IxOsalLogLevel level,
|
||||||
|
|
||||||
if (level <= ixOsalCurrLogLevel && level != IX_OSAL_LOG_LVL_NONE)
|
if (level <= ixOsalCurrLogLevel && level != IX_OSAL_LOG_LVL_NONE)
|
||||||
{
|
{
|
||||||
#if 0 /* sr: U-Boots printf or debug doesn't return a length */
|
|
||||||
int headerByteCount = (level == IX_OSAL_LOG_LVL_USER) ? 0 : diag_printf(traceHeaders[level - 1]);
|
|
||||||
|
|
||||||
return headerByteCount + diag_printf (format, arg1, arg2, arg3, arg4, arg5, arg6);
|
|
||||||
#else
|
|
||||||
int headerByteCount = (level == IX_OSAL_LOG_LVL_USER) ? 0 : strlen(traceHeaders[level - 1]);
|
int headerByteCount = (level == IX_OSAL_LOG_LVL_USER) ? 0 : strlen(traceHeaders[level - 1]);
|
||||||
|
|
||||||
return headerByteCount + strlen(format);
|
return headerByteCount + strlen(format);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -191,7 +185,6 @@ PUBLIC void
|
||||||
ixOsalSleep (UINT32 milliseconds)
|
ixOsalSleep (UINT32 milliseconds)
|
||||||
{
|
{
|
||||||
if (milliseconds != 0) {
|
if (milliseconds != 0) {
|
||||||
#if 1
|
|
||||||
/*
|
/*
|
||||||
* sr: We poll while we wait because interrupts are off in U-Boot
|
* sr: We poll while we wait because interrupts are off in U-Boot
|
||||||
* and CSR expects messages, etc to be dispatched while sleeping.
|
* and CSR expects messages, etc to be dispatched while sleeping.
|
||||||
|
@ -208,7 +201,6 @@ ixOsalSleep (UINT32 milliseconds)
|
||||||
|
|
||||||
udelay(1000);
|
udelay(1000);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -119,7 +119,6 @@ void ixEthAccDataPlaneShow(void);
|
||||||
#define IX_ETHACC_NE_SHARED(mBufPtr) \
|
#define IX_ETHACC_NE_SHARED(mBufPtr) \
|
||||||
((IxEthAccNe *)&((mBufPtr)->ix_ne))
|
((IxEthAccNe *)&((mBufPtr)->ix_ne))
|
||||||
|
|
||||||
#if 1
|
|
||||||
|
|
||||||
#define IX_ETHACC_NE_NEXT(mBufPtr) (mBufPtr)->ix_ne.reserved[0]
|
#define IX_ETHACC_NE_NEXT(mBufPtr) (mBufPtr)->ix_ne.reserved[0]
|
||||||
|
|
||||||
|
@ -128,17 +127,6 @@ void ixEthAccDataPlaneShow(void);
|
||||||
|
|
||||||
#define IX_ETHACC_NE_DATA(mBufPtr)(mBufPtr)->ix_ne.reserved[2]
|
#define IX_ETHACC_NE_DATA(mBufPtr)(mBufPtr)->ix_ne.reserved[2]
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#define IX_ETHACC_NE_NEXT(mBufPtr) \
|
|
||||||
IX_ETHACC_NE_SHARED(mBufPtr)->ixReserved_next
|
|
||||||
|
|
||||||
#define IX_ETHACC_NE_LEN(mBufPtr) \
|
|
||||||
IX_ETHACC_NE_SHARED(mBufPtr)->ixReserved_lengths
|
|
||||||
|
|
||||||
#define IX_ETHACC_NE_DATA(mBufPtr) \
|
|
||||||
IX_ETHACC_NE_SHARED(mBufPtr)->ixReserved_data
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Use MBUF next pointer field to chain data.
|
* Use MBUF next pointer field to chain data.
|
||||||
|
|
|
@ -252,26 +252,13 @@ ixOsalWinCEReadLCookie (volatile UINT32 * lCookie)
|
||||||
static __inline__ UINT16
|
static __inline__ UINT16
|
||||||
ixOsalWinCEReadWCookie (volatile UINT16 * wCookie)
|
ixOsalWinCEReadWCookie (volatile UINT16 * wCookie)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
UINT32 auxVal = *((volatile UINT32 *) wCookie);
|
|
||||||
if ((unsigned) wCookie & 3)
|
|
||||||
return (UINT16) (auxVal >> 16);
|
|
||||||
else
|
|
||||||
return (UINT16) (auxVal & 0xffff);
|
|
||||||
#else
|
|
||||||
return *wCookie;
|
return *wCookie;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static __inline__ UINT8
|
static __inline__ UINT8
|
||||||
ixOsalWinCEReadBCookie (volatile UINT8 * bCookie)
|
ixOsalWinCEReadBCookie (volatile UINT8 * bCookie)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
UINT32 auxVal = *((volatile UINT32 *) bCookie);
|
|
||||||
return (UINT8) ((auxVal >> (3 - (((unsigned) bCookie & 3) << 3)) & 0xff));
|
|
||||||
#else
|
|
||||||
return *bCookie;
|
return *bCookie;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static __inline__ void
|
static __inline__ void
|
||||||
|
@ -283,35 +270,13 @@ ixOsalWinCEWriteLCookie (volatile UINT32 * lCookie, UINT32 lVal)
|
||||||
static __inline__ void
|
static __inline__ void
|
||||||
ixOsalWinCEWriteWCookie (volatile UINT16 * wCookie, UINT16 wVal)
|
ixOsalWinCEWriteWCookie (volatile UINT16 * wCookie, UINT16 wVal)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
volatile UINT32 *auxCookie =
|
|
||||||
(volatile UINT32 *) ((unsigned) wCookie & ~3);
|
|
||||||
if ((unsigned) wCookie & 3)
|
|
||||||
{
|
|
||||||
*auxCookie &= 0xffff;
|
|
||||||
*auxCookie |= (UINT32) wVal << 16;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*auxCookie &= ~0xffff;
|
|
||||||
*auxCookie |= (UINT32) wVal & 0xffff;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
*wCookie = wVal;
|
*wCookie = wVal;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static __inline__ void
|
static __inline__ void
|
||||||
ixOsalWinCEWriteBCookie (volatile UINT8 * bCookie, UINT8 bVal)
|
ixOsalWinCEWriteBCookie (volatile UINT8 * bCookie, UINT8 bVal)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
volatile UINT32 *auxCookie =
|
|
||||||
(volatile UINT32 *) ((unsigned) bCookie & ~3);
|
|
||||||
*auxCookie &= 0xff << (3 - (((unsigned) bCookie & 3) << 3));
|
|
||||||
*auxCookie |= (UINT32) bVal << (3 - (((unsigned) bCookie & 3) << 3));
|
|
||||||
#else
|
|
||||||
*bCookie = bVal;
|
*bCookie = bVal;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -55,42 +55,5 @@
|
||||||
|
|
||||||
#include "IxOsalBufferMgtDefault.h"
|
#include "IxOsalBufferMgtDefault.h"
|
||||||
|
|
||||||
#if 0 /* FIXME */
|
|
||||||
/* Define os-specific buffer macros for subfields */
|
|
||||||
#define IX_OSAL_OSBUF_MDATA(osBufPtr) IX_OSAL_MBUF_MDATA(osBufPtr)
|
|
||||||
( ((M_BLK *) osBufPtr)->m_data )
|
|
||||||
|
|
||||||
#define IX_OSAL_OSBUF_MLEN(osBufPtr) \
|
|
||||||
( ((M_BLK *) osBufPtr)->m_len )
|
|
||||||
|
|
||||||
#define IX_OSAL_OSBUF_PKT_LEN(osBufPtr) \
|
|
||||||
( ((M_BLK *) osBufPtr)->m_pkthdr.len )
|
|
||||||
|
|
||||||
#define IX_OSAL_OS_CONVERT_OSBUF_TO_IXPBUF( osBufPtr, ixpBufPtr) \
|
|
||||||
{ \
|
|
||||||
IX_OSAL_MBUF_OSBUF_PTR( (IX_OSAL_MBUF *) ixpBufPtr) = (void *) osBufPtr; \
|
|
||||||
IX_OSAL_MBUF_MDATA((IX_OSAL_MBUF *) ixpBufPtr) = IX_OSAL_OSBUF_MDATA(osBufPtr); \
|
|
||||||
IX_OSAL_MBUF_PKT_LEN((IX_OSAL_MBUF *) ixpBufPtr) = IX_OSAL_OSBUF_PKT_LEN(osBufPtr); \
|
|
||||||
IX_OSAL_MBUF_MLEN((IX_OSAL_MBUF *) ixpBufPtr) = IX_OSAL_OSBUF_MLEN(osBufPtr); \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define IX_OSAL_OS_CONVERT_IXPBUF_TO_OSBUF( ixpBufPtr, osBufPtr) \
|
|
||||||
{ \
|
|
||||||
if (ixpBufPtr == NULL) \
|
|
||||||
{ /* Do nothing */ } \
|
|
||||||
else \
|
|
||||||
{ \
|
|
||||||
(M_BLK *) osBufPtr = (M_BLK *) IX_OSAL_MBUF_OSBUF_PTR((IX_OSAL_MBUF *) ixpBufPtr); \
|
|
||||||
if (osBufPtr == NULL) \
|
|
||||||
{ /* Do nothing */ } \
|
|
||||||
else \
|
|
||||||
{ \
|
|
||||||
IX_OSAL_OSBUF_MLEN(osBufPtr) =IX_OSAL_MBUF_MLEN((IX_OSAL_MBUF *) ixpBufPtr); \
|
|
||||||
IX_OSAL_OSBUF_PKT_LEN(osBufPtr) =IX_OSAL_MBUF_PKT_LEN((IX_OSAL_MBUF *) ixpBufPtr); \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* FIXME */
|
|
||||||
|
|
||||||
#endif /* #define IX_OSAL_OS_BUFFER_MGT_H */
|
#endif /* #define IX_OSAL_OS_BUFFER_MGT_H */
|
||||||
|
|
|
@ -17,21 +17,6 @@ typedef u16 USHORT;
|
||||||
typedef u8 UCHAR;
|
typedef u8 UCHAR;
|
||||||
typedef u32 BOOL;
|
typedef u32 BOOL;
|
||||||
|
|
||||||
#if 0 /* FIXME */
|
|
||||||
|
|
||||||
/* Default stack limit is 10 KB */
|
|
||||||
#define IX_OSAL_OS_THREAD_DEFAULT_STACK_SIZE (10240)
|
|
||||||
|
|
||||||
/* Maximum stack limit is 32 MB */
|
|
||||||
#define IX_OSAL_OS_THREAD_MAX_STACK_SIZE (33554432) /* 32 MBytes */
|
|
||||||
|
|
||||||
/* Default thread priority */
|
|
||||||
#define IX_OSAL_OS_DEFAULT_THREAD_PRIORITY (90)
|
|
||||||
|
|
||||||
/* Thread maximum priority (0 - 255). 0 - highest priority */
|
|
||||||
#define IX_OSAL_OS_MAX_THREAD_PRIORITY (255)
|
|
||||||
|
|
||||||
#endif /* FIXME */
|
|
||||||
|
|
||||||
#define IX_OSAL_OS_WAIT_FOREVER (-1L)
|
#define IX_OSAL_OS_WAIT_FOREVER (-1L)
|
||||||
#define IX_OSAL_OS_WAIT_NONE 0
|
#define IX_OSAL_OS_WAIT_NONE 0
|
||||||
|
|
|
@ -21,9 +21,6 @@
|
||||||
* MA 02111-1307 USA
|
* MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if 0
|
|
||||||
#define DEBUG /* define for debug output */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
|
@ -429,28 +426,6 @@ static int npe_init(struct eth_device *dev, bd_t * bis)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 /* test-only: probably have to deal with it when booting linux (for a clean state) */
|
|
||||||
/* Uninitialize CSR library. */
|
|
||||||
static void npe_csr_unload(void)
|
|
||||||
{
|
|
||||||
ixEthAccUnload();
|
|
||||||
ixEthDBUnload();
|
|
||||||
ixNpeMhUnload();
|
|
||||||
ixQMgrUnload();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* callback which is used by ethAcc to recover RX buffers when stopping */
|
|
||||||
static void npe_rx_stop_callback(u32 cbTag, IX_OSAL_MBUF *m, IxEthAccPortId portid)
|
|
||||||
{
|
|
||||||
debug("%s\n", __FUNCTION__);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* callback which is used by ethAcc to recover TX buffers when stopping */
|
|
||||||
static void npe_tx_stop_callback(u32 cbTag, IX_OSAL_MBUF *m)
|
|
||||||
{
|
|
||||||
debug("%s\n", __FUNCTION__);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void npe_halt(struct eth_device *dev)
|
static void npe_halt(struct eth_device *dev)
|
||||||
{
|
{
|
||||||
|
@ -465,40 +440,6 @@ static void npe_halt(struct eth_device *dev)
|
||||||
udelay(100);
|
udelay(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 /* test-only: probably have to deal with it when booting linux (for a clean state) */
|
|
||||||
if (ixEthAccPortRxCallbackRegister(p_npe->eth_id, npe_rx_stop_callback,
|
|
||||||
(u32)p_npe) != IX_ETH_ACC_SUCCESS) {
|
|
||||||
debug("Error registering rx callback!\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ixEthAccPortTxDoneCallbackRegister(p_npe->eth_id, npe_tx_stop_callback,
|
|
||||||
(u32)p_npe) != IX_ETH_ACC_SUCCESS) {
|
|
||||||
debug("Error registering tx callback!\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ixEthAccPortDisable(p_npe->eth_id) != IX_ETH_ACC_SUCCESS) {
|
|
||||||
debug("npe_stop: Error disabling NPEB!\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Delay to give time for recovery of mbufs */
|
|
||||||
for (i = 0; i < 100; i++) {
|
|
||||||
npe_poll(p_npe->eth_id);
|
|
||||||
udelay(10000);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* For U-Boot only, we are probably launching Linux or other OS that
|
|
||||||
* needs a clean slate for its NPE library.
|
|
||||||
*/
|
|
||||||
#if 0 /* test-only */
|
|
||||||
for (i = 0; i < IX_ETH_ACC_NUMBER_OF_PORTS; i++) {
|
|
||||||
if (npe_used[i] && npe_exists[i])
|
|
||||||
if (ixNpeDlNpeStopAndReset(__eth_to_npe(i)) != IX_SUCCESS)
|
|
||||||
printf("Failed to stop and reset NPE B.\n");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
p_npe->active = 0;
|
p_npe->active = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -159,12 +159,6 @@ reset:
|
||||||
str r1, [r2]
|
str r1, [r2]
|
||||||
|
|
||||||
/* make sure flash is visible at 0 */
|
/* make sure flash is visible at 0 */
|
||||||
#if 0
|
|
||||||
ldr r2, =IXP425_EXP_CFG0
|
|
||||||
ldr r1, [r2]
|
|
||||||
orr r1, r1, #0x80000000
|
|
||||||
str r1, [r2]
|
|
||||||
#endif
|
|
||||||
mov r1, #CFG_SDR_CONFIG
|
mov r1, #CFG_SDR_CONFIG
|
||||||
ldr r2, =IXP425_SDR_CONFIG
|
ldr r2, =IXP425_SDR_CONFIG
|
||||||
str r1, [r2]
|
str r1, [r2]
|
||||||
|
|
|
@ -324,14 +324,9 @@ int eth_init (bd_t * bd)
|
||||||
/* Enable MII mode
|
/* Enable MII mode
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if 0 /* Full duplex mode */
|
|
||||||
fecp->fec_r_cntrl = FEC_RCNTRL_MII_MODE;
|
|
||||||
fecp->fec_x_cntrl = FEC_TCNTRL_FDEN;
|
|
||||||
#else /* Half duplex mode */
|
|
||||||
fecp->fec_r_cntrl = (PKT_MAXBUF_SIZE << 16); /* set max frame length */
|
fecp->fec_r_cntrl = (PKT_MAXBUF_SIZE << 16); /* set max frame length */
|
||||||
fecp->fec_r_cntrl |= FEC_RCNTRL_MII_MODE | FEC_RCNTRL_DRT;
|
fecp->fec_r_cntrl |= FEC_RCNTRL_MII_MODE | FEC_RCNTRL_DRT;
|
||||||
fecp->fec_x_cntrl = 0;
|
fecp->fec_x_cntrl = 0;
|
||||||
#endif
|
|
||||||
/* Set MII speed */
|
/* Set MII speed */
|
||||||
fecp->fec_mii_speed = (((CFG_CLK / 2) / (2500000 / 10)) + 5) / 10;
|
fecp->fec_mii_speed = (((CFG_CLK / 2) / (2500000 / 10)) + 5) / 10;
|
||||||
fecp->fec_mii_speed *= 2;
|
fecp->fec_mii_speed *= 2;
|
||||||
|
|
|
@ -193,14 +193,6 @@ _copy_flash:
|
||||||
_after_flash_copy:
|
_after_flash_copy:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* invalidate and disable cache */
|
|
||||||
move.l #0x01000000, %d0 /* Invalidate cache cmd */
|
|
||||||
movec %d0, %CACR /* Invalidate cache */
|
|
||||||
move.l #0, %d0
|
|
||||||
movec %d0, %ACR0
|
|
||||||
movec %d0, %ACR1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* set stackpointer to end of internal ram to get some stackspace for the first c-code */
|
/* set stackpointer to end of internal ram to get some stackspace for the first c-code */
|
||||||
move.l #(CFG_INIT_RAM_ADDR + CFG_INIT_SP_OFFSET), %sp
|
move.l #(CFG_INIT_RAM_ADDR + CFG_INIT_SP_OFFSET), %sp
|
||||||
|
|
|
@ -1284,10 +1284,6 @@ int submit_common_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
|
||||||
/* abuse timeout */
|
/* abuse timeout */
|
||||||
timeout = rh_check_port_status(&gohci);
|
timeout = rh_check_port_status(&gohci);
|
||||||
if (timeout >= 0) {
|
if (timeout >= 0) {
|
||||||
#if 0 /* this does nothing useful, but leave it here in case that changes */
|
|
||||||
/* the called routine adds 1 to the passed value */
|
|
||||||
usb_hub_port_connect_change(gohci.rh.dev, timeout - 1);
|
|
||||||
#endif
|
|
||||||
/*
|
/*
|
||||||
* XXX
|
* XXX
|
||||||
* This is potentially dangerous because it assumes
|
* This is potentially dangerous because it assumes
|
||||||
|
|
|
@ -140,20 +140,12 @@ void irq_install_handler (int vec, interrupt_handler_t * handler,
|
||||||
irq_vecs[vec].handler = handler;
|
irq_vecs[vec].handler = handler;
|
||||||
irq_vecs[vec].arg = arg;
|
irq_vecs[vec].arg = arg;
|
||||||
immr->im_siu_conf.sc_simask |= 1 << (31 - vec);
|
immr->im_siu_conf.sc_simask |= 1 << (31 - vec);
|
||||||
#if 0
|
|
||||||
printf ("Install SIU interrupt for vector %d ==> %p\n",
|
|
||||||
vec, handler);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void irq_free_handler (int vec)
|
void irq_free_handler (int vec)
|
||||||
{
|
{
|
||||||
volatile immap_t *immr = (immap_t *) CFG_IMMR;
|
volatile immap_t *immr = (immap_t *) CFG_IMMR;
|
||||||
/* SIU interrupt */
|
/* SIU interrupt */
|
||||||
#if 0
|
|
||||||
printf ("Free CPM interrupt for vector %d\n",
|
|
||||||
vec);
|
|
||||||
#endif
|
|
||||||
immr->im_siu_conf.sc_simask &= ~(1 << (31 - vec));
|
immr->im_siu_conf.sc_simask &= ~(1 << (31 - vec));
|
||||||
irq_vecs[vec].handler = NULL;
|
irq_vecs[vec].handler = NULL;
|
||||||
irq_vecs[vec].arg = NULL;
|
irq_vecs[vec].arg = NULL;
|
||||||
|
@ -167,9 +159,6 @@ void timer_interrupt_cpu (struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
volatile immap_t *immr = (immap_t *) CFG_IMMR;
|
volatile immap_t *immr = (immap_t *) CFG_IMMR;
|
||||||
|
|
||||||
#if 0
|
|
||||||
printf ("*** Timer Interrupt *** ");
|
|
||||||
#endif
|
|
||||||
/* Reset Timer Status Bit and Timers Interrupt Status */
|
/* Reset Timer Status Bit and Timers Interrupt Status */
|
||||||
immr->im_clkrstk.cark_plprcrk = KAPWR_KEY;
|
immr->im_clkrstk.cark_plprcrk = KAPWR_KEY;
|
||||||
__asm__ ("nop");
|
__asm__ ("nop");
|
||||||
|
|
|
@ -86,14 +86,12 @@ static int wait_for_bb(void)
|
||||||
status = mpc_reg_in(®s->msr);
|
status = mpc_reg_in(®s->msr);
|
||||||
|
|
||||||
while (timeout-- && (status & I2C_BB)) {
|
while (timeout-- && (status & I2C_BB)) {
|
||||||
#if 1
|
|
||||||
volatile int temp;
|
volatile int temp;
|
||||||
mpc_reg_out(®s->mcr, I2C_STA, I2C_STA);
|
mpc_reg_out(®s->mcr, I2C_STA, I2C_STA);
|
||||||
temp = mpc_reg_in(®s->mdr);
|
temp = mpc_reg_in(®s->mdr);
|
||||||
mpc_reg_out(®s->mcr, 0, I2C_STA);
|
mpc_reg_out(®s->mcr, 0, I2C_STA);
|
||||||
mpc_reg_out(®s->mcr, 0, 0);
|
mpc_reg_out(®s->mcr, 0, 0);
|
||||||
mpc_reg_out(®s->mcr, I2C_EN, 0);
|
mpc_reg_out(®s->mcr, I2C_EN, 0);
|
||||||
#endif
|
|
||||||
udelay(1000);
|
udelay(1000);
|
||||||
status = mpc_reg_in(®s->msr);
|
status = mpc_reg_in(®s->msr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -225,24 +225,5 @@ DebugException(struct pt_regs *regs)
|
||||||
int
|
int
|
||||||
addr_probe(uint *addr)
|
addr_probe(uint *addr)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
int retval;
|
|
||||||
|
|
||||||
__asm__ __volatile__( \
|
|
||||||
"1: lwz %0,0(%1)\n" \
|
|
||||||
" eieio\n" \
|
|
||||||
" li %0,0\n" \
|
|
||||||
"2:\n" \
|
|
||||||
".section .fixup,\"ax\"\n" \
|
|
||||||
"3: li %0,-1\n" \
|
|
||||||
" b 2b\n" \
|
|
||||||
".section __ex_table,\"a\"\n" \
|
|
||||||
" .align 2\n" \
|
|
||||||
" .long 1b,3b\n" \
|
|
||||||
".text" \
|
|
||||||
: "=r" (retval) : "r"(addr));
|
|
||||||
|
|
||||||
return (retval);
|
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1289,29 +1289,6 @@ int submit_common_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
/* we got an Root Hub Status Change interrupt */
|
|
||||||
if (got_rhsc) {
|
|
||||||
#ifdef DEBUG
|
|
||||||
ohci_dump_roothub (&gohci, 1);
|
|
||||||
#endif
|
|
||||||
got_rhsc = 0;
|
|
||||||
/* abuse timeout */
|
|
||||||
timeout = rh_check_port_status(&gohci);
|
|
||||||
if (timeout >= 0) {
|
|
||||||
#if 0 /* this does nothing useful, but leave it here in case that changes */
|
|
||||||
/* the called routine adds 1 to the passed value */
|
|
||||||
usb_hub_port_connect_change(gohci.rh.dev, timeout - 1);
|
|
||||||
#endif
|
|
||||||
/*
|
|
||||||
* XXX
|
|
||||||
* This is potentially dangerous because it assumes
|
|
||||||
* that only one device is ever plugged in!
|
|
||||||
*/
|
|
||||||
devgone = dev;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
dev->status = stat;
|
dev->status = stat;
|
||||||
dev->act_len = transfer_len;
|
dev->act_len = transfer_len;
|
||||||
|
|
|
@ -348,14 +348,12 @@ static int mpc8220_fec_init (struct eth_device *dev, bd_t * bis)
|
||||||
*/
|
*/
|
||||||
fec->eth->xmit_fsm = 0x03000000;
|
fec->eth->xmit_fsm = 0x03000000;
|
||||||
|
|
||||||
#if 1
|
|
||||||
/*#if defined(CONFIG_MPC5200)*/
|
/*#if defined(CONFIG_MPC5200)*/
|
||||||
/*
|
/*
|
||||||
* Turn off COMM bus prefetch in the MGT5200 BestComm. It doesn't
|
* Turn off COMM bus prefetch in the MGT5200 BestComm. It doesn't
|
||||||
* work w/ the current receive task.
|
* work w/ the current receive task.
|
||||||
*/
|
*/
|
||||||
dma->PtdCntrl |= 0x00000001;
|
dma->PtdCntrl |= 0x00000001;
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set priority of different initiators
|
* Set priority of different initiators
|
||||||
|
@ -777,16 +775,6 @@ static int mpc8220_fec_recv (struct eth_device *dev)
|
||||||
frame = (NBUF *) pRbd->dataPointer;
|
frame = (NBUF *) pRbd->dataPointer;
|
||||||
frame_length = pRbd->dataLength - 4;
|
frame_length = pRbd->dataLength - 4;
|
||||||
|
|
||||||
#if (0)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
printf ("recv data hdr:");
|
|
||||||
for (i = 0; i < 14; i++)
|
|
||||||
printf ("%x ", *(frame->head + i));
|
|
||||||
printf ("\n");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
/*
|
/*
|
||||||
* Fill the buffer and pass it to upper layers
|
* Fill the buffer and pass it to upper layers
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -105,7 +105,6 @@ static int wait_for_bb (void)
|
||||||
status = mpc_reg_in (®s->sr);
|
status = mpc_reg_in (®s->sr);
|
||||||
|
|
||||||
while (timeout-- && (status & I2C_BB)) {
|
while (timeout-- && (status & I2C_BB)) {
|
||||||
#if 1
|
|
||||||
volatile int temp;
|
volatile int temp;
|
||||||
|
|
||||||
mpc_reg_out (®s->cr, I2C_STA, I2C_STA);
|
mpc_reg_out (®s->cr, I2C_STA, I2C_STA);
|
||||||
|
@ -113,7 +112,6 @@ static int wait_for_bb (void)
|
||||||
mpc_reg_out (®s->cr, 0, I2C_STA);
|
mpc_reg_out (®s->cr, 0, I2C_STA);
|
||||||
mpc_reg_out (®s->cr, 0, 0);
|
mpc_reg_out (®s->cr, 0, 0);
|
||||||
mpc_reg_out (®s->cr, I2C_EN, 0);
|
mpc_reg_out (®s->cr, I2C_EN, 0);
|
||||||
#endif
|
|
||||||
udelay (1000);
|
udelay (1000);
|
||||||
status = mpc_reg_in (®s->sr);
|
status = mpc_reg_in (®s->sr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -191,9 +191,7 @@ STATUS i2c_start (PSI2C pi2c, PI2CSET pi2cSet)
|
||||||
#else
|
#else
|
||||||
UINT8 ByteOffset = pi2cSet->str_adr;
|
UINT8 ByteOffset = pi2cSet->str_adr;
|
||||||
#endif
|
#endif
|
||||||
#if 1
|
|
||||||
UINT8 tmp = 0;
|
UINT8 tmp = 0;
|
||||||
#endif
|
|
||||||
UINT8 Addr = pi2cSet->slv_adr;
|
UINT8 Addr = pi2cSet->slv_adr;
|
||||||
|
|
||||||
pi2c->cr |= I2C_CTL_STA; /* Generate start signal */
|
pi2c->cr |= I2C_CTL_STA; /* Generate start signal */
|
||||||
|
@ -207,13 +205,6 @@ STATUS i2c_start (PSI2C pi2c, PI2CSET pi2cSet)
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
#ifdef TWOBYTES
|
#ifdef TWOBYTES
|
||||||
# if 0
|
|
||||||
/* Issue the offset to start */
|
|
||||||
if (i2c_write2byte (pi2c, &ByteOffset) != OK) {
|
|
||||||
i2c_stop (pi2c); /* Disable I2c */
|
|
||||||
return ERROR;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
tmp = (ByteOffset >> 8) & 0xff;
|
tmp = (ByteOffset >> 8) & 0xff;
|
||||||
if (i2c_writebyte (pi2c, &tmp) != OK) {
|
if (i2c_writebyte (pi2c, &tmp) != OK) {
|
||||||
i2c_stop (pi2c); /* Disable I2c */
|
i2c_stop (pi2c); /* Disable I2c */
|
||||||
|
|
|
@ -218,22 +218,5 @@ void DebugException (struct pt_regs *regs)
|
||||||
*/
|
*/
|
||||||
int addr_probe (uint * addr)
|
int addr_probe (uint * addr)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
int retval;
|
|
||||||
|
|
||||||
__asm__ __volatile__ ("1: lwz %0,0(%1)\n"
|
|
||||||
" eieio\n"
|
|
||||||
" li %0,0\n"
|
|
||||||
"2:\n"
|
|
||||||
".section .fixup,\"ax\"\n"
|
|
||||||
"3: li %0,-1\n"
|
|
||||||
" b 2b\n"
|
|
||||||
".section __ex_table,\"a\"\n"
|
|
||||||
" .align 2\n"
|
|
||||||
" .long 1b,3b\n"
|
|
||||||
".text":"=r" (retval):"r" (addr));
|
|
||||||
|
|
||||||
return (retval);
|
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,35 +106,6 @@ cpu_init_f (void)
|
||||||
CONFIG_READ_BYTE(AMBOR,val);
|
CONFIG_READ_BYTE(AMBOR,val);
|
||||||
CONFIG_WRITE_BYTE(AMBOR,val|0x1);
|
CONFIG_WRITE_BYTE(AMBOR,val|0x1);
|
||||||
|
|
||||||
#if 0
|
|
||||||
/*
|
|
||||||
* The following bug only affects older (XPC8245) processors.
|
|
||||||
* DMA transfers initiated by external devices get corrupted due
|
|
||||||
* to a hardware scheduling problem.
|
|
||||||
*
|
|
||||||
* The effect is:
|
|
||||||
* when transferring X words, the first 32 words are transferred
|
|
||||||
* OK, the next 3 x 32 words are 'old' data (from previous DMA)
|
|
||||||
* while the rest of the X words is xferred fine.
|
|
||||||
*
|
|
||||||
* Disabling 3 of the 4 32 word hardware buffers solves the problem
|
|
||||||
* with no significant performance loss.
|
|
||||||
*/
|
|
||||||
|
|
||||||
CONFIG_READ_BYTE(PCMBCR,val);
|
|
||||||
/* in order not to corrupt data which is being read over the PCI bus
|
|
||||||
* with the PPC as slave, we need to reduce the number of PCMRBs to 1,
|
|
||||||
* 4.11 in the processor user manual
|
|
||||||
* */
|
|
||||||
|
|
||||||
#if 1
|
|
||||||
CONFIG_WRITE_BYTE(PCMBCR,(val|0xC0)); /* 1 PCMRB */
|
|
||||||
#else
|
|
||||||
CONFIG_WRITE_BYTE(PCMBCR,(val|0x80)); /* 2 PCMRBs */
|
|
||||||
CONFIG_WRITE_BYTE(PCMBCR,(val|0x40)); /* 3 PCMRBs */
|
|
||||||
/* default, 4 PCMRBs are used */
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
CONFIG_READ_WORD(PICR1, val);
|
CONFIG_READ_WORD(PICR1, val);
|
||||||
|
|
|
@ -306,28 +306,12 @@ transfer_to_handler:
|
||||||
SAVE_4GPRS(8, r21)
|
SAVE_4GPRS(8, r21)
|
||||||
SAVE_8GPRS(12, r21)
|
SAVE_8GPRS(12, r21)
|
||||||
SAVE_8GPRS(24, r21)
|
SAVE_8GPRS(24, r21)
|
||||||
#if 0
|
|
||||||
andi. r23,r23,MSR_PR
|
|
||||||
mfspr r23,SPRG3 /* if from user, fix up tss.regs */
|
|
||||||
beq 2f
|
|
||||||
addi r24,r1,STACK_FRAME_OVERHEAD
|
|
||||||
stw r24,PT_REGS(r23)
|
|
||||||
2: addi r2,r23,-TSS /* set r2 to current */
|
|
||||||
tovirt(r2,r2,r23)
|
|
||||||
#endif
|
|
||||||
mflr r23
|
mflr r23
|
||||||
andi. r24,r23,0x3f00 /* get vector offset */
|
andi. r24,r23,0x3f00 /* get vector offset */
|
||||||
stw r24,TRAP(r21)
|
stw r24,TRAP(r21)
|
||||||
li r22,0
|
li r22,0
|
||||||
stw r22,RESULT(r21)
|
stw r22,RESULT(r21)
|
||||||
mtspr SPRG2,r22 /* r1 is now kernel sp */
|
mtspr SPRG2,r22 /* r1 is now kernel sp */
|
||||||
#if 0
|
|
||||||
addi r24,r2,TASK_STRUCT_SIZE /* check for kernel stack overflow */
|
|
||||||
cmplw 0,r1,r2
|
|
||||||
cmplw 1,r1,r24
|
|
||||||
crand 1,1,4
|
|
||||||
bgt stack_ovf /* if r2 < r1 < r2+TASK_STRUCT_SIZE */
|
|
||||||
#endif
|
|
||||||
lwz r24,0(r23) /* virtual address of handler */
|
lwz r24,0(r23) /* virtual address of handler */
|
||||||
lwz r23,4(r23) /* where to go when done */
|
lwz r23,4(r23) /* where to go when done */
|
||||||
mtspr SRR0,r24
|
mtspr SRR0,r24
|
||||||
|
|
|
@ -196,24 +196,5 @@ DebugException(struct pt_regs *regs)
|
||||||
int
|
int
|
||||||
addr_probe(uint *addr)
|
addr_probe(uint *addr)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
int retval;
|
|
||||||
|
|
||||||
__asm__ __volatile__( \
|
|
||||||
"1: lwz %0,0(%1)\n" \
|
|
||||||
" eieio\n" \
|
|
||||||
" li %0,0\n" \
|
|
||||||
"2:\n" \
|
|
||||||
".section .fixup,\"ax\"\n" \
|
|
||||||
"3: li %0,-1\n" \
|
|
||||||
" b 2b\n" \
|
|
||||||
".section __ex_table,\"a\"\n" \
|
|
||||||
" .align 2\n" \
|
|
||||||
" .long 1b,3b\n" \
|
|
||||||
".text" \
|
|
||||||
: "=r" (retval) : "r"(addr));
|
|
||||||
|
|
||||||
return (retval);
|
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -230,9 +230,6 @@ static int fec_init(struct eth_device* dev, bd_t *bis)
|
||||||
fcc_enet_t *pram_ptr;
|
fcc_enet_t *pram_ptr;
|
||||||
unsigned long mem_addr;
|
unsigned long mem_addr;
|
||||||
|
|
||||||
#if 0
|
|
||||||
mii_discover_phy();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* 28.9 - (1-2): ioports have been set up already */
|
/* 28.9 - (1-2): ioports have been set up already */
|
||||||
|
|
||||||
|
@ -328,12 +325,6 @@ static int fec_init(struct eth_device* dev, bd_t *bis)
|
||||||
pram_ptr->fen_maxd2 = PKT_MAXDMA_SIZE; /* maximum DMA2 length */
|
pram_ptr->fen_maxd2 = PKT_MAXDMA_SIZE; /* maximum DMA2 length */
|
||||||
pram_ptr->fen_rfthr = 1;
|
pram_ptr->fen_rfthr = 1;
|
||||||
pram_ptr->fen_rfcnt = 1;
|
pram_ptr->fen_rfcnt = 1;
|
||||||
#if 0
|
|
||||||
printf("pram_ptr->fen_genfcc.fcc_rbase %08lx\n",
|
|
||||||
pram_ptr->fen_genfcc.fcc_rbase);
|
|
||||||
printf("pram_ptr->fen_genfcc.fcc_tbase %08lx\n",
|
|
||||||
pram_ptr->fen_genfcc.fcc_tbase);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* 28.9 - (8): clear out events in FCCE */
|
/* 28.9 - (8): clear out events in FCCE */
|
||||||
immr->im_fcc[info->ether_index].fcc_fcce = ~0x0;
|
immr->im_fcc[info->ether_index].fcc_fcce = ~0x0;
|
||||||
|
@ -560,7 +551,6 @@ static uint __inline__
|
||||||
nbs (uint value, uint nbits)
|
nbs (uint value, uint nbits)
|
||||||
{
|
{
|
||||||
uint cnt = 0;
|
uint cnt = 0;
|
||||||
#if 1
|
|
||||||
uint pos = sizeof (uint) * 8;
|
uint pos = sizeof (uint) * 8;
|
||||||
|
|
||||||
__asm__ __volatile__ ("\
|
__asm__ __volatile__ ("\
|
||||||
|
@ -573,15 +563,6 @@ nbs (uint value, uint nbits)
|
||||||
: "=r"(cnt)
|
: "=r"(cnt)
|
||||||
: "r"(value), "r"(nbits), "r"(cnt), "r"(pos)
|
: "r"(value), "r"(nbits), "r"(cnt), "r"(pos)
|
||||||
: "ctr", "cc" );
|
: "ctr", "cc" );
|
||||||
#else
|
|
||||||
uint mask = 1;
|
|
||||||
|
|
||||||
do {
|
|
||||||
if (value & mask)
|
|
||||||
cnt++;
|
|
||||||
mask <<= 1;
|
|
||||||
} while (--nbits);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return (cnt);
|
return (cnt);
|
||||||
}
|
}
|
||||||
|
|
|
@ -344,13 +344,5 @@ void eth_halt(void)
|
||||||
SCC_GSMRL_ENT);
|
SCC_GSMRL_ENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
void restart(void)
|
|
||||||
{
|
|
||||||
volatile immap_t *immr = (immap_t *)CFG_IMMR;
|
|
||||||
immr->im_cpm.cp_scc[CONFIG_ETHER_INDEX-1].scc_gsmrl |= (SCC_GSMRL_ENR |
|
|
||||||
SCC_GSMRL_ENT);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* CONFIG_ETHER_ON_SCC && CFG_CMD_NET */
|
#endif /* CONFIG_ETHER_ON_SCC && CFG_CMD_NET */
|
||||||
|
|
|
@ -275,22 +275,7 @@ void pci_mpc8250_init (struct pci_controller *hose)
|
||||||
| SIUMCR_BCTLC00
|
| SIUMCR_BCTLC00
|
||||||
| SIUMCR_MMR11;
|
| SIUMCR_MMR11;
|
||||||
#elif defined(CONFIG_TQM8272)
|
#elif defined(CONFIG_TQM8272)
|
||||||
#if 0
|
|
||||||
immap->im_siu_conf.sc_siumcr = (immap->im_siu_conf.sc_siumcr &
|
|
||||||
~SIUMCR_LBPC11 &
|
|
||||||
~SIUMCR_CS10PC11 &
|
|
||||||
~SIUMCR_LBPC11) |
|
|
||||||
SIUMCR_LBPC01 |
|
|
||||||
SIUMCR_CS10PC01 |
|
|
||||||
SIUMCR_APPC10;
|
|
||||||
#else
|
|
||||||
#if 0
|
|
||||||
immap->im_siu_conf.sc_siumcr = (immap->im_siu_conf.sc_siumcr |
|
|
||||||
SIUMCR_APPC10);
|
|
||||||
#else
|
|
||||||
immap->im_siu_conf.sc_siumcr = 0x88000000;
|
immap->im_siu_conf.sc_siumcr = 0x88000000;
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#else
|
#else
|
||||||
/*
|
/*
|
||||||
* Setting required to enable IRQ1-IRQ7 (SIUMCR [DPPC]),
|
* Setting required to enable IRQ1-IRQ7 (SIUMCR [DPPC]),
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue