[flashrom] [PATCH] Add support for 82574L to nicintel_spi.c

Bill Paul wpaul at windriver.com
Thu Mar 13 22:59:41 CET 2014

I recently found a need to re-flash the option ROM on an Intel 82574L gigabit 
ethernet card. These are a bit more common these days than the 82571 and 82572 
and relatively cheap. It turns out this works with flashrom, but it doesn't 
detect the PCI ID for the device out of the box. Below is a patch add it to 
nicintel_spi.c. Note that there are probably other devices in the PRO/1000 
family that would work too.

Here's an example run with the latest code from svn:

flashrom v0.9.7-unknown on FreeBSD 10.0-RELEASE (amd64)
flashrom is free software, get the source code at http://www.flashrom.org

Calibrating delay loop... OK.
Found Winbond flash chip "W25X40" (512 kB, SPI) on nicintel_spi.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.

FreeBSD detects the device as follows:

em1 at pci0:2:0:0: class=0x020000 card=0xa01f8086 chip=0x10d38086 rev=0x00 
    vendor     = 'Intel Corporation'
    device     = '82574L Gigabit Network Connection'
    class      = network
    subclass   = ethernet

I also added links to the Intel PCIe ethernet controllers programming manual 
and the 82574 datasheet.

Incidentally, thanks to everyone involved for their work in this project. It 
helped me out of a bit of a jam.


Signed-off-by: Bill Paul <wpaul at windriver.com>

Index: nicintel_spi.c
--- nicintel_spi.c	(revision 1765)
+++ nicintel_spi.c	(working copy)
@@ -17,14 +17,20 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
- * Datasheet:
+ * Datasheets:
  * PCI/PCI-X Family of Gigabit Ethernet Controllers Software Developer's 
  * 82540EP/EM, 82541xx, 82544GC/EI, 82545GM/EM, 82546GB/EB, and 82547xx
  * http://download.intel.com/design/network/manuals/8254x_GBe_SDM.pdf
+ *
+ * PCIe GbE Controllers Open Source Software Developer's Manual
+ * http://www.intel.com/content/www/us/en/ethernet-controllers/pcie-gbe-
+ *
+ * Intel 82574 Gigabit Ethernet Controller Family Datasheet
+ * http://www.intel.com/content/www/us/en/ethernet-controllers/82574l-gbe-
 #include <stdlib.h>
 #include <unistd.h>
 #include "flash.h"
@@ -70,10 +76,11 @@
 const struct dev_entry nics_intel_spi[] = {
 	{PCI_VENDOR_ID_INTEL, 0x105e, OK, "Intel", "82571EB Gigabit Ethernet 
 	{PCI_VENDOR_ID_INTEL, 0x1076, OK, "Intel", "82541GI Gigabit Ethernet 
 	{PCI_VENDOR_ID_INTEL, 0x107c, OK, "Intel", "82541PI Gigabit Ethernet 
 	{PCI_VENDOR_ID_INTEL, 0x10b9, OK, "Intel", "82572EI Gigabit Ethernet 
+	{PCI_VENDOR_ID_INTEL, 0x10d3, OK, "Intel", "82574L Gigabit Ethernet 
 static void nicintel_request_spibus(void)

-Bill Paul            (510) 749-2329 | Senior Member of Technical Staff,
                 wpaul at windriver.com | Master of Unix-Fu - Wind River Systems
   "I put a dollar in a change machine. Nothing changed." - George Carlin

More information about the flashrom mailing list