@@ -324,7 +324,7 @@ struct TULIPState {
324324    uint32_t  mii_bitcnt ;
325325
326326    /* 21040 ROM read address. */ 
327-     uint32_t  rom_read_addr ;
327+     uint8_t  rom_read_addr ;
328328
329329    uint32_t  current_rx_desc ;
330330    uint32_t  current_tx_desc ;
@@ -670,7 +670,7 @@ static uint32_t
670670tulip_csr9_read (TULIPState  * s )
671671{
672672    if  (s -> device_info -> local  ==  3 ) {
673-         return  (( uint8_t * ) nmc93cxx_eeprom_data ( s -> eeprom )) [s -> rom_read_addr ++ ];
673+         return  s -> eeprom_data [s -> rom_read_addr ++ ];
674674    }
675675    if  (s -> csr [9 ] &  CSR9_SR ) {
676676        if  (nmc93cxx_eeprom_read (s -> eeprom )) {
@@ -717,7 +717,7 @@ tulip_read(uint32_t addr, void *opaque)
717717                data  =  s -> csr [addr  >> 3 ];
718718            break ;
719719    }
720-     // pclog("[%04X:%08X]: CSR9 read %02x, data = %08x.\n", CS, cpu_state.pc, addr, data);
720+     pclog ("[%04X:%08X]: CSR9 read %02x, data = %08x.\n" , CS , cpu_state .pc , addr , data );
721721    return  data ;
722722}
723723
@@ -906,7 +906,7 @@ tulip_write(uint32_t addr, uint32_t data, void *opaque)
906906    TULIPState  * s  =  opaque ;
907907    addr  &= 127 ;
908908
909-     // pclog("[%04X:%08X]: Tulip Write >> 3: %02x, val=%08x.\n", CS, cpu_state.pc, addr >> 3, data);
909+     pclog ("[%04X:%08X]: Tulip Write >> 3: %02x, val=%08x.\n" , CS , cpu_state .pc , addr  >> 3 , data );
910910    switch  (addr ) {
911911        case  CSR (0 ):
912912            s -> csr [0 ] =  data ;
@@ -1266,11 +1266,11 @@ tulip_pci_write(UNUSED(int func), int addr, uint8_t val, void *priv)
12661266{
12671267    TULIPState  * s  =  (TULIPState  * ) priv ;
12681268
1269-     // pclog("PCI write=%02x, ret=%02x.\n", addr, val);
1269+     pclog ("PCI write=%02x, ret=%02x.\n" , addr , val );
12701270    switch  (addr ) {
12711271        case  0x04 :
12721272            s -> pci_conf [0x04 ] =  val  &  0x07 ;
1273-             // pclog("PCI write cmd: IOBase=%04x, MMIOBase=%08x, val=%02x.\n", s->PCIBase, s->MMIOBase, s->pci_conf[0x04]);
1273+             pclog ("PCI write cmd: IOBase=%04x, MMIOBase=%08x, val=%02x.\n" , s -> PCIBase , s -> MMIOBase , s -> pci_conf [0x04 ]);
12741274            io_removehandler (s -> PCIBase , 128 ,
12751275                         tulip_readb_io , tulip_readw_io , tulip_readl_io ,
12761276                         tulip_writeb_io , tulip_writew_io , tulip_writel_io ,
@@ -1280,7 +1280,7 @@ tulip_pci_write(UNUSED(int func), int addr, uint8_t val, void *priv)
12801280                         tulip_readb_io , tulip_readw_io , tulip_readl_io ,
12811281                         tulip_writeb_io , tulip_writew_io , tulip_writel_io ,
12821282                         priv );
1283-             // pclog("PCI write cmd: IOBase=%04x, MMIOBase=%08x, val=%02x.\n", s->PCIBase, s->MMIOBase, s->pci_conf[0x04]);
1283+             pclog ("PCI write cmd: IOBase=%04x, MMIOBase=%08x, val=%02x.\n" , s -> PCIBase , s -> MMIOBase , s -> pci_conf [0x04 ]);
12841284            mem_mapping_disable (& s -> memory );
12851285            if  ((s -> MMIOBase  !=  0 ) &&  (val  &  PCI_COMMAND_MEM ))
12861286                mem_mapping_set_addr (& s -> memory , s -> MMIOBase , 128 );
@@ -1300,7 +1300,7 @@ tulip_pci_write(UNUSED(int func), int addr, uint8_t val, void *priv)
13001300            tulip_pci_bar [0 ].addr  &= 0xffffff80 ;
13011301            s -> PCIBase  =  tulip_pci_bar [0 ].addr ;
13021302            if  (s -> pci_conf [0x4 ] &  PCI_COMMAND_IO ) {
1303-                 // pclog("PCI write=%02x, base=%04x, io?=%x.\n", addr, s->PCIBase, s->pci_conf[0x4] & PCI_COMMAND_IO);
1303+                 pclog ("PCI write=%02x, base=%04x, io?=%x.\n" , addr , s -> PCIBase , s -> pci_conf [0x4 ] &  PCI_COMMAND_IO );
13041304                if  (s -> PCIBase  !=  0 )
13051305                    io_sethandler (s -> PCIBase , 128 ,
13061306                             tulip_readb_io , tulip_readw_io , tulip_readl_io ,
@@ -1317,7 +1317,7 @@ tulip_pci_write(UNUSED(int func), int addr, uint8_t val, void *priv)
13171317            tulip_pci_bar [1 ].addr  &= 0xffffff80 ;
13181318            s -> MMIOBase  =  tulip_pci_bar [1 ].addr ;
13191319            if  (s -> pci_conf [0x4 ] &  PCI_COMMAND_MEM ) {
1320-                 // pclog("PCI write=%02x, mmiobase=%08x, mmio?=%x.\n", addr, s->PCIBase, s->pci_conf[0x4] & PCI_COMMAND_MEM);
1320+                 pclog ("PCI write=%02x, mmiobase=%08x, mmio?=%x.\n" , addr , s -> PCIBase , s -> pci_conf [0x4 ] &  PCI_COMMAND_MEM );
13211321                if  (s -> MMIOBase  !=  0 )
13221322                    mem_mapping_set_addr (& s -> memory , s -> MMIOBase , 128 );
13231323            }
@@ -1510,6 +1510,9 @@ nic_init(const device_t *info)
15101510    } else  {
15111511        /* 21040 is supposed to only have MAC address in its serial ROM if Linux is correct. */ 
15121512        memset (s -> eeprom_data , 0 , sizeof (s -> eeprom_data ));
1513+         /* See if we have a local MAC address configured. */ 
1514+         mac  =  device_get_config_mac ("mac" , -1 );
1515+         /*DEC OID*/ 
15131516        s -> eeprom_data [0 ] =  0x00 ;
15141517        s -> eeprom_data [1 ] =  0x00 ;
15151518        s -> eeprom_data [2 ] =  0xF8 ;
@@ -1529,14 +1532,16 @@ nic_init(const device_t *info)
15291532        }
15301533    }
15311534
1532-     params .nwords           =  64 ;
1533-     params .default_content  =  (uint16_t  * ) s -> eeprom_data ;
1534-     params .filename         =  filename ;
1535-     snprintf (filename , sizeof (filename ), "nmc93cxx_eeprom_%s_%d.nvr" , info -> internal_name , device_get_instance ());
1536-     s -> eeprom  =  device_add_parameters (& nmc93cxx_device , & params );
1537-     if  (!s -> eeprom ) {
1538-         free (s );
1539-         return  NULL ;
1535+     if  (info -> local  !=  3 ) {
1536+         params .nwords           =  64 ;
1537+         params .default_content  =  (uint16_t  * ) s -> eeprom_data ;
1538+         params .filename         =  filename ;
1539+         snprintf (filename , sizeof (filename ), "nmc93cxx_eeprom_%s_%d.nvr" , info -> internal_name , device_get_instance ());
1540+         s -> eeprom  =  device_add_parameters (& nmc93cxx_device , & params );
1541+         if  (!s -> eeprom ) {
1542+             free (s );
1543+             return  NULL ;
1544+         }
15401545    }
15411546
15421547    tulip_pci_bar [0 ].addr_regs [0 ] =  1 ;
@@ -1551,11 +1556,11 @@ nic_init(const device_t *info)
15511556        tulip_pci_bar [2 ].addr          =  0 ;
15521557
15531558    mem_mapping_disable (& s -> bios_rom .mapping );
1554-     eeprom_data  =  (uint8_t  * ) & nmc93cxx_eeprom_data (s -> eeprom )[0 ];
1559+     eeprom_data  =  (info -> local   ==   3 ) ?  s -> eeprom_data  : ( uint8_t  * ) & nmc93cxx_eeprom_data (s -> eeprom )[0 ];
15551560
15561561    //pclog("EEPROM Data Format=%02x, Count=%02x, MAC=%02x:%02x:%02x:%02x:%02x:%02x.\n", eeprom_data[0x12], eeprom_data[0x13], eeprom_data[0x14], eeprom_data[0x15], eeprom_data[0x16], eeprom_data[0x17], eeprom_data[0x18], eeprom_data[0x19]); 
15571562    memcpy (s -> mii_regs , tulip_mdi_default , sizeof (tulip_mdi_default ));
1558-     s -> nic  =  network_attach (s , & eeprom_data [20 ], tulip_receive , NULL );
1563+     s -> nic  =  network_attach (s , & eeprom_data [( info -> local   ==   3 ) ?  0  :  20 ], tulip_receive , NULL );
15591564    pci_add_card (PCI_ADD_NORMAL , tulip_pci_read , tulip_pci_write , s , & s -> pci_slot );
15601565    tulip_reset (s );
15611566    return  s ;
0 commit comments