Quoting Corey Osgood corey.osgood@gmail.com:
I apologize if this seems disorganized, I'm trying to work it out:
1: set up csr memory/io base in the nic. ami bios uses 0xff7ff000 for mem base, and 0xdc01 as io base, these values should work to test with. Datasheet contradicts itself, says bits 3:0 of the mem base registers are all hardwired to 0, then gives a default value of 0x8.
2: write 0x3 to register 0xe (in IO space?) to enable the rom and clock. if this is io space, the write is just outb(val, (NIC_IO_BASE + reg)). There are reserved registers, so be sure to do a read-modify-write.
3: reset the lan controller? write 1 to bit 3 of 0x1c. Wait 1ms afterwards.
Good luck, hope this helps
I think your right Corey, we need to setup space for for the CSR register first:
Control/Status Register (CSR) Accesses The integrated LAN controller supports zero wait-state single cycle memory or I/O mapped accesses to its CSR space. Separate BARs request 4 KB of memory space and 64 bytes of I/O space to accomplish this. Based on its needs, the software driver will use either memory or I/O mapping to access these registers. The LAN controller provides four valid Kbytes of CSR space, which include the following elements: ? System Control Block (SCB) registers ***(I know for a fact this is part of the pci rom)*** ? PORT register ? EEPROM control register ? MDI control register ? Flow control registers In the case of accessing the Control/Status Registers, the processor is the initiator and the LAN controller is the target. Read Accesses: The processor, as the initiator, drives address lines AD[31:0], the command and byte enable lines C/BE[3:0]# and the control lines IRDY# and FRAME#. As a slave, the LAN controller controls the TRDY# signal and provides valid data on each data access. The LAN controller allows the processor to issue only one read cycle when it accesses the Control/Status Registers, generating a disconnect by asserting the STOP# signal. The processor can insert waitstates by deasserting IRDY# when it is not ready. Write Accesses: The processor, as the initiator, drives the address lines AD[31:0], the command and byte enable lines C/BE[3:0]# and the control lines IRDY# and FRAME#. It also provides the LAN controller with valid data on each data access immediately after asserting IRDY#. The LAN controller controls the TRDY# signal and asserts it from the data access. The LAN controller allows the processor to issue only one I/O write cycle to the Control/Status Registers, generating a disconnect by asserting the STOP# signal. This is true for both memory mapped and I/O mapped accesses.
How to do this???
Thanks - Joe