The Intel 82599 series of 10G Ethernet controllers has a bit-banged SPI interface that's register-compatible with the one in the 1G controllers, except the register addresses are shifted up by 0x10000. See http://www.intel.com/content/www/us/en/ethernet-controllers/82599-10-gbe-con....
I tested this with a board that has the 0x10fc device and a Micron M25P40 SPI flash chip. I filled in device IDs for other 82599 devices per https://www-ssl.intel.com/content/www/us/en/ethernet-controllers/82599-10-gb... and lifted the name strings from the PCI SIG device ID registry.
Signed-off-by: Ed Swierk eswierk@skyportsystems.com
=================================================================== diff --git a/trunk/nicintel_spi.c b/trunk/nicintel_spi.c --- a/trunk/nicintel_spi.c (revision 1855) +++ b/trunk/nicintel_spi.c (working copy) @@ -80,6 +80,13 @@ {PCI_VENDOR_ID_INTEL, 0x10b9, OK, "Intel", "82572EI Gigabit Ethernet Controller"}, {PCI_VENDOR_ID_INTEL, 0x10d3, OK, "Intel", "82574L Gigabit Ethernet Controller"},
+ {PCI_VENDOR_ID_INTEL, 0x10f7, NT, "Intel", "10 Gigabit BR KX4 Dual Port Network Connection"}, + {PCI_VENDOR_ID_INTEL, 0x10f8, NT, "Intel", "82599 10 Gigabit Dual Port Backplane Connection"}, + {PCI_VENDOR_ID_INTEL, 0x10f9, NT, "Intel", "82599 10 Gigabit Dual Port Network Connection"}, + {PCI_VENDOR_ID_INTEL, 0x10fb, NT, "Intel", "82599ES 10-Gigabit SFI/SFP+ Network Connection"}, + {PCI_VENDOR_ID_INTEL, 0x10fc, OK, "Intel", "82599 10 Gigabit Dual Port Network Connection"}, + {PCI_VENDOR_ID_INTEL, 0x1557, NT, "Intel", "82599 10 Gigabit Network Connection"}, + {0}, };
@@ -183,7 +190,13 @@ if (!io_base_addr) return 1;
- nicintel_spibar = rphysmap("Intel Gigabit NIC w/ SPI flash", io_base_addr, MEMMAP_SIZE); + if (dev->device_id < 0x10f0) { + nicintel_spibar = rphysmap("Intel Gigabit NIC w/ SPI flash", io_base_addr, + MEMMAP_SIZE); + } else { + nicintel_spibar = rphysmap("Intel 10 Gigabit NIC w/ SPI flash", io_base_addr + 0x10000, + MEMMAP_SIZE); + } if (nicintel_spibar == ERROR_PTR) return 1;