[Etherboot-developers] 5.1.4/5: patch for sis900.c
Brought to you by:
marty_connor,
stefanhajnoczi
|
From: <ke...@us...> - 2003-01-09 16:35:41
|
And hopefully this makes the sis900 driver work with relocation.
Index: sis900.c
===================================================================
RCS file: /cvsroot/etherboot/etherboot/etherboot-5.1/src/drivers/net/sis900.c,v
retrieving revision 1.2
diff -u -r1.2 sis900.c
--- sis900.c 27 Dec 2002 12:44:36 -0000 1.2
+++ sis900.c 9 Jan 2003 16:34:27 -0000
@@ -651,10 +651,10 @@
{
txd.link = (u32) 0;
txd.cmdsts = (u32) 0;
- txd.bufptr = (u32) &txb[0];
+ txd.bufptr = virt_to_bus(&txb[0]);
/* load Transmit Descriptor Register */
- outl((u32) &txd, ioaddr + txdp);
+ outl(virt_to_bus(&txd), ioaddr + txdp);
if (sis900_debug > 0)
printf("sis900_init_txd: TX descriptor register loaded with: %X\n",
inl(ioaddr + txdp));
@@ -679,16 +679,16 @@
/* init RX descriptor */
for (i = 0; i < NUM_RX_DESC; i++) {
- rxd[i].link = (i+1 < NUM_RX_DESC) ? (u32) &rxd[i+1] : (u32) &rxd[0];
+ rxd[i].link = virt_to_bus((i+1 < NUM_RX_DESC) ? &rxd[i+1] : &rxd[0]);
rxd[i].cmdsts = (u32) RX_BUF_SIZE;
- rxd[i].bufptr = (u32) &rxb[i*RX_BUF_SIZE];
+ rxd[i].bufptr = virt_to_bus(&rxb[i*RX_BUF_SIZE]);
if (sis900_debug > 0)
printf("sis900_init_rxd: rxd[%d]=%X link=%X cmdsts=%X bufptr=%X\n",
i, &rxd[i], rxd[i].link, rxd[i].cmdsts, rxd[i].bufptr);
}
/* load Receive Descriptor Register */
- outl((u32) &rxd[0], ioaddr + rxdp);
+ outl(virt_to_bus(&rxd[0]), ioaddr + rxdp);
if (sis900_debug > 0)
printf("sis900_init_rxd: RX descriptor register loaded with: %X\n",
@@ -1030,7 +1030,7 @@
outl(TxDIS | inl(ioaddr + cr), ioaddr + cr);
/* load Transmit Descriptor Register */
- outl((u32) &txd, ioaddr + txdp);
+ outl(virt_to_bus(&txd), ioaddr + txdp);
if (sis900_debug > 1)
printf("sis900_transmit: TX descriptor register loaded with: %X\n",
inl(ioaddr + txdp));
|