--- etherboot-5.4.3.orig/src/bin/NIC 2007-02-24 16:44:59 +0200 +++ etherboot-5.4.3.orig/src/bin/NIC 2007-07-26 19:48:03 +0300 @@ -309,6 +309,14 @@ nforce13 0x10de,0x0269 nForce NVENET_13 Ethernet Controller nforce14 0x10de,0x0372 nForce NVENET_14 Ethernet Controller nforce15 0x10de,0x0373 nForce NVENET_15 Ethernet Controller +nforce16 0x10de,0x03e5 nForce NVENET_16 Ethernet Controller +nforce17 0x10de,0x03e6 nForce NVENET_17 Ethernet Controller +nforce18 0x10de,0x03ee nForce NVENET_18 Ethernet Controller +nforce19 0x10de,0x03ef nForce NVENET_19 Ethernet Controller +nforce20 0x10de,0x0450 nForce NVENET_20 Ethernet Controller +nforce21 0x10de,0x0451 nForce NVENET_21 Ethernet Controller +nforce22 0x10de,0x0452 nForce NVENET_22 Ethernet Controller +nforce23 0x10de,0x0453 nForce NVENET_23 Ethernet Controller family drivers/net/sk_g16 sk_g16 - Schneider and Koch G16 --- etherboot-5.4.3.orig/src/bin/Roms 2007-02-24 16:44:59 +0200 +++ etherboot-5.4.3.orig/src/bin/Roms 2007-07-26 19:48:03 +0300 @@ -2847,6 +2847,14 @@ ROMS += $(BIN)/nforce13.rom $(BIN)/nforce13.zrom ROMS += $(BIN)/nforce14.rom $(BIN)/nforce14.zrom ROMS += $(BIN)/nforce15.rom $(BIN)/nforce15.zrom +ROMS += $(BIN)/nforce16.rom $(BIN)/nforce16.zrom +ROMS += $(BIN)/nforce17.rom $(BIN)/nforce17.zrom +ROMS += $(BIN)/nforce18.rom $(BIN)/nforce18.zrom +ROMS += $(BIN)/nforce19.rom $(BIN)/nforce19.zrom +ROMS += $(BIN)/nforce20.rom $(BIN)/nforce20.zrom +ROMS += $(BIN)/nforce21.rom $(BIN)/nforce21.zrom +ROMS += $(BIN)/nforce22.rom $(BIN)/nforce22.zrom +ROMS += $(BIN)/nforce23.rom $(BIN)/nforce23.zrom ROMS += $(BIN)/MT23108.rom $(BIN)/MT23108.zrom ROMS += $(BIN)/MT25208.rom $(BIN)/MT25208.zrom ROMS += $(BIN)/MT25218.rom $(BIN)/MT25218.zrom @@ -4224,6 +4232,62 @@ cat $< > $@ $(MAKEROM) $(MAKEROM_FLAGS) $(MAKEROM_$(ROMCARD)) $(MAKEROM_ID_$(ROMCARD)) -i$(IDENT) $@ +ROMTYPE_nforce16 = PCI +MAKEROM_ID_nforce16 = -p 0x10de,0x03e5 + +$(BIN)/nforce16%rom: $(BIN)/forcedeth%rom + cat $< > $@ + $(MAKEROM) $(MAKEROM_FLAGS) $(MAKEROM_$(ROMCARD)) $(MAKEROM_ID_$(ROMCARD)) -i$(IDENT) $@ + +ROMTYPE_nforce17 = PCI +MAKEROM_ID_nforce17 = -p 0x10de,0x03e6 + +$(BIN)/nforce17%rom: $(BIN)/forcedeth%rom + cat $< > $@ + $(MAKEROM) $(MAKEROM_FLAGS) $(MAKEROM_$(ROMCARD)) $(MAKEROM_ID_$(ROMCARD)) -i$(IDENT) $@ + +ROMTYPE_nforce18 = PCI +MAKEROM_ID_nforce18 = -p 0x10de,0x03ee + +$(BIN)/nforce18%rom: $(BIN)/forcedeth%rom + cat $< > $@ + $(MAKEROM) $(MAKEROM_FLAGS) $(MAKEROM_$(ROMCARD)) $(MAKEROM_ID_$(ROMCARD)) -i$(IDENT) $@ + +ROMTYPE_nforce19 = PCI +MAKEROM_ID_nforce19 = -p 0x10de,0x03ef + +$(BIN)/nforce19%rom: $(BIN)/forcedeth%rom + cat $< > $@ + $(MAKEROM) $(MAKEROM_FLAGS) $(MAKEROM_$(ROMCARD)) $(MAKEROM_ID_$(ROMCARD)) -i$(IDENT) $@ + +ROMTYPE_nforce20 = PCI +MAKEROM_ID_nforce20 = -p 0x10de,0x0450 + +$(BIN)/nforce20%rom: $(BIN)/forcedeth%rom + cat $< > $@ + $(MAKEROM) $(MAKEROM_FLAGS) $(MAKEROM_$(ROMCARD)) $(MAKEROM_ID_$(ROMCARD)) -i$(IDENT) $@ + +ROMTYPE_nforce21 = PCI +MAKEROM_ID_nforce21 = -p 0x10de,0x0451 + +$(BIN)/nforce21%rom: $(BIN)/forcedeth%rom + cat $< > $@ + $(MAKEROM) $(MAKEROM_FLAGS) $(MAKEROM_$(ROMCARD)) $(MAKEROM_ID_$(ROMCARD)) -i$(IDENT) $@ + +ROMTYPE_nforce22 = PCI +MAKEROM_ID_nforce22 = -p 0x10de,0x0452 + +$(BIN)/nforce22%rom: $(BIN)/forcedeth%rom + cat $< > $@ + $(MAKEROM) $(MAKEROM_FLAGS) $(MAKEROM_$(ROMCARD)) $(MAKEROM_ID_$(ROMCARD)) -i$(IDENT) $@ + +ROMTYPE_nforce23 = PCI +MAKEROM_ID_nforce23 = -p 0x10de,0x0453 + +$(BIN)/nforce23%rom: $(BIN)/forcedeth%rom + cat $< > $@ + $(MAKEROM) $(MAKEROM_FLAGS) $(MAKEROM_$(ROMCARD)) $(MAKEROM_ID_$(ROMCARD)) -i$(IDENT) $@ + ROMTYPE_mt23108 = PCI ROMTYPE_MT23108 = PCI MAKEROM_ID_MT23108 = -p 0x15b3,0x5a44 --- etherboot-5.4.3.orig/src/drivers/net/forcedeth.c 2007-02-24 16:44:59 +0200 +++ etherboot-5.4.3.orig/src/drivers/net/forcedeth.c 2007-07-26 20:34:11 +0300 @@ -86,6 +86,14 @@ #define PCI_DEVICE_ID_NVIDIA_NVENET_13 0x0269 #define PCI_DEVICE_ID_NVIDIA_NVENET_14 0x0372 #define PCI_DEVICE_ID_NVIDIA_NVENET_15 0x0373 +#define PCI_DEVICE_ID_NVIDIA_NVENET_16 0x03e5 +#define PCI_DEVICE_ID_NVIDIA_NVENET_17 0x03e6 +#define PCI_DEVICE_ID_NVIDIA_NVENET_18 0x03ee +#define PCI_DEVICE_ID_NVIDIA_NVENET_19 0x03ef +#define PCI_DEVICE_ID_NVIDIA_NVENET_20 0x0450 +#define PCI_DEVICE_ID_NVIDIA_NVENET_21 0x0451 +#define PCI_DEVICE_ID_NVIDIA_NVENET_22 0x0452 +#define PCI_DEVICE_ID_NVIDIA_NVENET_23 0x0453 /* @@ -173,7 +181,8 @@ NvRegRingSizes = 0x108, #define NVREG_RINGSZ_TXSHIFT 0 #define NVREG_RINGSZ_RXSHIFT 16 - NvRegUnknownTransmitterReg = 0x10c, + NvRegTransmitPoll = 0x10c, +#define NVREG_TRANSMITPOLL_MAC_ADDR_REV 0x00008000 NvRegLinkSpeed = 0x110, #define NVREG_LINKSPEED_FORCE 0x10000 #define NVREG_LINKSPEED_10 1000 @@ -729,7 +738,7 @@ "stop_tx: TransmitterStatus remained busy"); nv_udelay(NV_TXSTOP_DELAY2); - writel(0, base + NvRegUnknownTransmitterReg); + writel(readl(base + NvRegTransmitPoll) & NVREG_TRANSMITPOLL_MAC_ADDR_REV, base + NvRegTransmitPoll); } static void mac_reset(struct nic *dev) @@ -1035,7 +1044,7 @@ init_ring(nic); writel(0, base + NvRegLinkSpeed); - writel(0, base + NvRegUnknownTransmitterReg); + writel(readl(base + NvRegTransmitPoll) & NVREG_TRANSMITPOLL_MAC_ADDR_REV, base + NvRegTransmitPoll); txrx_reset(nic); writel(0, base + NvRegUnknownSetupReg6); @@ -1359,12 +1368,24 @@ np->orig_mac[0] = readl(base + NvRegMacAddrA); np->orig_mac[1] = readl(base + NvRegMacAddrB); - nic->node_addr[0] = (np->orig_mac[1] >> 8) & 0xff; - nic->node_addr[1] = (np->orig_mac[1] >> 0) & 0xff; - nic->node_addr[2] = (np->orig_mac[0] >> 24) & 0xff; - nic->node_addr[3] = (np->orig_mac[0] >> 16) & 0xff; - nic->node_addr[4] = (np->orig_mac[0] >> 8) & 0xff; - nic->node_addr[5] = (np->orig_mac[0] >> 0) & 0xff; + /* check the workaround bit for correct mac address order */ + if (readl(base + NvRegTransmitPoll) & NVREG_TRANSMITPOLL_MAC_ADDR_REV) { + /* mac address is already in correct order */ + nic->node_addr[0] = (np->orig_mac[0] >> 0) & 0xff; + nic->node_addr[1] = (np->orig_mac[0] >> 8) & 0xff; + nic->node_addr[2] = (np->orig_mac[0] >> 16) & 0xff; + nic->node_addr[3] = (np->orig_mac[0] >> 24) & 0xff; + nic->node_addr[4] = (np->orig_mac[1] >> 0) & 0xff; + nic->node_addr[5] = (np->orig_mac[1] >> 8) & 0xff; + } else { + /* need to reverse mac address to correct order */ + nic->node_addr[0] = (np->orig_mac[1] >> 8) & 0xff; + nic->node_addr[1] = (np->orig_mac[1] >> 0) & 0xff; + nic->node_addr[2] = (np->orig_mac[0] >> 24) & 0xff; + nic->node_addr[3] = (np->orig_mac[0] >> 16) & 0xff; + nic->node_addr[4] = (np->orig_mac[0] >> 8) & 0xff; + nic->node_addr[5] = (np->orig_mac[0] >> 0) & 0xff; + } #ifdef LINUX if (!is_valid_ether_addr(dev->dev_addr)) { /* @@ -1448,6 +1469,22 @@ case 0x0372: /* Fall Through */ case 0x0373: + /* Fall Through */ + case 0x03e5: + /* Fall Through */ + case 0x03e6: + /* Fall Through */ + case 0x03ee: + /* Fall Through */ + case 0x03ef: + /* Fall Through */ + case 0x0450: + /* Fall Through */ + case 0x0451: + /* Fall Through */ + case 0x0452: + /* Fall Through */ + case 0x0453: //np->register_size = NV_PCI_REGSZ_VER2; pci_read_config_byte(pci, PCI_REVISION_ID, &revision_id); @@ -1543,6 +1580,14 @@ PCI_ROM(0x10de, 0x0269, "nforce13", "nForce NVENET_13 Ethernet Controller"), PCI_ROM(0x10de, 0x0372, "nforce14", "nForce NVENET_14 Ethernet Controller"), PCI_ROM(0x10de, 0x0373, "nforce15", "nForce NVENET_15 Ethernet Controller"), + PCI_ROM(0x10de, 0x03e5, "nforce16", "nForce NVENET_16 Ethernet Controller"), + PCI_ROM(0x10de, 0x03e6, "nforce17", "nForce NVENET_17 Ethernet Controller"), + PCI_ROM(0x10de, 0x03ee, "nforce18", "nForce NVENET_18 Ethernet Controller"), + PCI_ROM(0x10de, 0x03ef, "nforce19", "nForce NVENET_19 Ethernet Controller"), + PCI_ROM(0x10de, 0x0450, "nforce20", "nForce NVENET_20 Ethernet Controller"), + PCI_ROM(0x10de, 0x0451, "nforce21", "nForce NVENET_21 Ethernet Controller"), + PCI_ROM(0x10de, 0x0452, "nforce22", "nForce NVENET_22 Ethernet Controller"), + PCI_ROM(0x10de, 0x0453, "nforce23", "nForce NVENET_23 Ethernet Controller"), }; static struct pci_driver forcedeth_driver __pci_driver = { .type = NIC_DRIVER,.name = "forcedeth",.probe =