hw/pcnet.c: Fix EPROM contents to suit AMD netware drivers
authorGerhard Wiesinger <lists@wiesinger.com>
Sat, 5 Mar 2011 12:44:39 +0000 (13:44 +0100)
committerBlue Swirl <blauwirbel@gmail.com>
Sat, 5 Mar 2011 13:07:25 +0000 (13:07 +0000)
bugfix under DOS for AMD netware driver:
AMD PCNTNW Ethernet MLID v3.10 (960115), network card not found

bugfix works well under DOS with:
1.) AMD NDIS driver v2.0.1
2.) AMD PCNTNW Ethernet MLID v3.10 (960115)
3.) Knoppix 6.2

Signed-off-by: Gerhard Wiesinger <lists@wiesinger.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
hw/pcnet.c

index db52dc59e18ade68945faaaef8efd5566edbe03f..6dfdcc420fc6a382aa621b511508e82838435ac0 100644 (file)
@@ -1562,8 +1562,24 @@ void pcnet_h_reset(void *opaque)
 
     /* Initialize the PROM */
 
+    /*
+      Datasheet: http://pdfdata.datasheetsite.com/web/24528/AM79C970A.pdf
+      page 95
+    */
     memcpy(s->prom, s->conf.macaddr.a, 6);
+    /* Reserved Location: must be 00h */
+    s->prom[6] = s->prom[7] = 0x00;
+    /* Reserved Location: must be 00h */
+    s->prom[8] = 0x00;
+    /* Hardware ID: must be 11h if compatibility to AMD drivers is desired */
+    s->prom[9] = 0x11;
+    /* User programmable space, init with 0 */
+    s->prom[10] = s->prom[11] = 0x00;
+    /* LSByte of two-byte checksum, which is the sum of bytes 00h-0Bh
+       and bytes 0Eh and 0Fh, must therefore be initialized with 0! */
     s->prom[12] = s->prom[13] = 0x00;
+    /* Must be ASCII W (57h) if compatibility to AMD
+       driver software is desired */
     s->prom[14] = s->prom[15] = 0x57;
 
     for (i = 0,checksum = 0; i < 16; i++)