Line 646... |
Line 646... |
struct eth_device *eth = &(eths[i]);
|
struct eth_device *eth = &(eths[i]);
|
|
|
if ( eth->baseaddr == 0 )
|
if ( eth->baseaddr == 0 )
|
continue;
|
continue;
|
|
|
printf( "\nEthernet MAC %u at 0x%08X:\n", i, eth->baseaddr );
|
PRINTF( "\nEthernet MAC %u at 0x%08X:\n", i, eth->baseaddr );
|
printf( "MODER : 0x%08lX\n", eth->regs.moder );
|
PRINTF( "MODER : 0x%08lX\n", eth->regs.moder );
|
printf( "INT_SOURCE : 0x%08lX\n", eth->regs.int_source );
|
PRINTF( "INT_SOURCE : 0x%08lX\n", eth->regs.int_source );
|
printf( "INT_MASK : 0x%08lX\n", eth->regs.int_mask );
|
PRINTF( "INT_MASK : 0x%08lX\n", eth->regs.int_mask );
|
printf( "IPGT : 0x%08lX\n", eth->regs.ipgt );
|
PRINTF( "IPGT : 0x%08lX\n", eth->regs.ipgt );
|
printf( "IPGR1 : 0x%08lX\n", eth->regs.ipgr1 );
|
PRINTF( "IPGR1 : 0x%08lX\n", eth->regs.ipgr1 );
|
printf( "IPGR2 : 0x%08lX\n", eth->regs.ipgr2 );
|
PRINTF( "IPGR2 : 0x%08lX\n", eth->regs.ipgr2 );
|
printf( "PACKETLEN : 0x%08lX\n", eth->regs.packetlen );
|
PRINTF( "PACKETLEN : 0x%08lX\n", eth->regs.packetlen );
|
printf( "COLLCONF : 0x%08lX\n", eth->regs.collconf );
|
PRINTF( "COLLCONF : 0x%08lX\n", eth->regs.collconf );
|
printf( "TX_BD_NUM : 0x%08lX\n", eth->regs.tx_bd_num );
|
PRINTF( "TX_BD_NUM : 0x%08lX\n", eth->regs.tx_bd_num );
|
printf( "CTRLMODER : 0x%08lX\n", eth->regs.controlmoder );
|
PRINTF( "CTRLMODER : 0x%08lX\n", eth->regs.controlmoder );
|
printf( "MIIMODER : 0x%08lX\n", eth->regs.miimoder );
|
PRINTF( "MIIMODER : 0x%08lX\n", eth->regs.miimoder );
|
printf( "MIICOMMAND : 0x%08lX\n", eth->regs.miicommand );
|
PRINTF( "MIICOMMAND : 0x%08lX\n", eth->regs.miicommand );
|
printf( "MIIADDRESS : 0x%08lX\n", eth->regs.miiaddress );
|
PRINTF( "MIIADDRESS : 0x%08lX\n", eth->regs.miiaddress );
|
printf( "MIITX_DATA : 0x%08lX\n", eth->regs.miitx_data );
|
PRINTF( "MIITX_DATA : 0x%08lX\n", eth->regs.miitx_data );
|
printf( "MIIRX_DATA : 0x%08lX\n", eth->regs.miirx_data );
|
PRINTF( "MIIRX_DATA : 0x%08lX\n", eth->regs.miirx_data );
|
printf( "MIISTATUS : 0x%08lX\n", eth->regs.miistatus );
|
PRINTF( "MIISTATUS : 0x%08lX\n", eth->regs.miistatus );
|
printf( "MAC Address : %02X:%02X:%02X:%02X:%02X:%02X\n",
|
PRINTF( "MAC Address : %02X:%02X:%02X:%02X:%02X:%02X\n",
|
eth->mac_address[0], eth->mac_address[1], eth->mac_address[2],
|
eth->mac_address[0], eth->mac_address[1], eth->mac_address[2],
|
eth->mac_address[3], eth->mac_address[4], eth->mac_address[5] );
|
eth->mac_address[3], eth->mac_address[4], eth->mac_address[5] );
|
printf( "HASH0 : 0x%08lX\n", eth->regs.hash0 );
|
PRINTF( "HASH0 : 0x%08lX\n", eth->regs.hash0 );
|
printf( "HASH1 : 0x%08lX\n", eth->regs.hash1 );
|
PRINTF( "HASH1 : 0x%08lX\n", eth->regs.hash1 );
|
}
|
}
|
}
|
}
|
/* ========================================================================= */
|
/* ========================================================================= */
|
|
|
|
|
Line 695... |
Line 695... |
*/
|
*/
|
unsigned long eth_read32( unsigned long addr )
|
unsigned long eth_read32( unsigned long addr )
|
{
|
{
|
struct eth_device *eth;
|
struct eth_device *eth;
|
if ( !eth_find_controller( addr, ð, &addr ) ) {
|
if ( !eth_find_controller( addr, ð, &addr ) ) {
|
printf( "eth_read32( 0x%08lX ): Not in registered range(s)\n", addr );
|
PRINTF( "eth_read32( 0x%08lX ): Not in registered range(s)\n", addr );
|
return 0;
|
return 0;
|
}
|
}
|
|
|
switch( addr ) {
|
switch( addr ) {
|
case ETH_MODER: return eth->regs.moder;
|
case ETH_MODER: return eth->regs.moder;
|
Line 730... |
Line 730... |
}
|
}
|
|
|
if ( (addr >= ETH_BD_BASE) && (addr < ETH_BD_BASE + ETH_BD_SPACE) )
|
if ( (addr >= ETH_BD_BASE) && (addr < ETH_BD_BASE + ETH_BD_SPACE) )
|
return eth->regs.bd_ram[(addr - ETH_BD_BASE) / 4];
|
return eth->regs.bd_ram[(addr - ETH_BD_BASE) / 4];
|
|
|
printf( "eth_read32( 0x%08lX ): Illegal address\n", addr + eth->baseaddr );
|
PRINTF( "eth_read32( 0x%08lX ): Illegal address\n", addr + eth->baseaddr );
|
runtime.sim.cont_run = 0;
|
runtime.sim.cont_run = 0;
|
return 0;
|
return 0;
|
}
|
}
|
/* ========================================================================= */
|
/* ========================================================================= */
|
|
|
Line 744... |
Line 744... |
*/
|
*/
|
void eth_write32( unsigned long addr, unsigned long value )
|
void eth_write32( unsigned long addr, unsigned long value )
|
{
|
{
|
struct eth_device *eth;
|
struct eth_device *eth;
|
if ( !eth_find_controller( addr, ð, &addr ) ) {
|
if ( !eth_find_controller( addr, ð, &addr ) ) {
|
printf( "eth_write32( 0x%08lX ): Not in registered range(s)\n", addr );
|
PRINTF( "eth_write32( 0x%08lX ): Not in registered range(s)\n", addr );
|
return;
|
return;
|
}
|
}
|
|
|
switch( addr ) {
|
switch( addr ) {
|
case ETH_MODER: eth->regs.moder = value; if (TEST_FLAG(value, ETH_MODER, RST)) eth_reset(); return;
|
case ETH_MODER: eth->regs.moder = value; if (TEST_FLAG(value, ETH_MODER, RST)) eth_reset(); return;
|
Line 786... |
Line 786... |
if ( (addr >= ETH_BD_BASE) && (addr < ETH_BD_BASE + ETH_BD_SPACE) ) {
|
if ( (addr >= ETH_BD_BASE) && (addr < ETH_BD_BASE + ETH_BD_SPACE) ) {
|
eth->regs.bd_ram[(addr - ETH_BD_BASE) / 4] = value;
|
eth->regs.bd_ram[(addr - ETH_BD_BASE) / 4] = value;
|
return;
|
return;
|
}
|
}
|
|
|
printf( "eth_write32( 0x%08lX ): Illegal address\n", addr + eth->baseaddr );
|
PRINTF( "eth_write32( 0x%08lX ): Illegal address\n", addr + eth->baseaddr );
|
runtime.sim.cont_run = 0;
|
runtime.sim.cont_run = 0;
|
return;
|
return;
|
}
|
}
|
/* ========================================================================= */
|
/* ========================================================================= */
|
|
|