Uint16 base;
tCard *card;
- giRTL8139_CardCount = PCI_CountDevices(VENDOR_ID, DEVICE_ID, 0);
+ giRTL8139_CardCount = PCI_CountDevices(VENDOR_ID, DEVICE_ID);
Log_Debug("RTL8139", "%i cards", giRTL8139_CardCount);
if( giRTL8139_CardCount == 0 ) return MODULE_ERR_NOTNEEDED;
gaRTL8139_Cards = calloc( giRTL8139_CardCount, sizeof(tCard) );
//while( (id = PCI_GetDevice(0x10EC, 0x8139, 0, id)) != -1 )
- while( (id = PCI_GetDevice(VENDOR_ID, DEVICE_ID, 0, i)) != -1 )
+ while( (id = PCI_GetDevice(VENDOR_ID, DEVICE_ID, i)) != -1 )
{
card = &gaRTL8139_Cards[i];
- base = PCI_AssignPort( id, 0, 0x100 );
+ base = PCI_GetBAR( id, 0 );
+ if( !(base & 1) ) {
+ Log_Warning("RTL8139", "Driver does not support MMIO, skipping card");
+ card->IOBase = 0;
+ card->IRQ = 0;
+ continue ;
+ }
+ base &= ~1;
card->IOBase = base;
card->IRQ = PCI_GetIRQ( id );
LOG("td = %i", td);
// Transmit using descriptor `td`
+ LOG("card->PhysTransmitBuffers[td] = %P", card->PhysTransmitBuffers[td]);
card->TransmitInUse |= (1 << td);
outd(card->IOBase + TSAD0 + td*4, card->PhysTransmitBuffers[td]);
- LOG("card->PhysTransmitBuffers[td] = 0x%llx", card->PhysTransmitBuffers[td]);
+ LOG("card->TransmitBuffers[td] = %p", card->TransmitBuffers[td]);
// Copy to buffer
memcpy(card->TransmitBuffers[td], Buffer, Length);
// Start
int i, j;
tCard *card;
Uint16 status;
+
+ LOG("Num = %i", Num);
for( i = 0; i < giRTL8139_CardCount; i ++ )
{