
Dear Kyle Moffett,
In message 1318971929-1160-6-git-send-email-Kyle.D.Moffett@boeing.com you wrote:
As a part of the manufacturing process for some of our custom hardware, we are programming the EEPROMs attached to our Intel 82571EB controllers from software using U-Boot and Linux.
This code provides several conditionally-compiled features to assist in our manufacturing process:
CONFIG_CMD_E1000: This is a basic "e1000" command which allows querying the controller and (if other config options are set) performing EEPROM programming. In particular, with CONFIG_E1000_SPI this allows you to display a hex-dump of the EEPROM, copy to/from main memory, and verify/update the software checksum.
CONFIG_E1000_SPI_GENERIC: Build a generic SPI driver providing the standard U-Boot SPI driver interface. This allows commands such as "sspi" to access the bus attached to the E1000 controller. Additionally, some E1000 chipsets can support user data in a reserved space in the E1000 EEPROM which could be used for U-Boot environment storage.
CONFIG_E1000_SPI: The core SPI access code used by the above interfaces.
For example, the following commands allow you to program the EEPROM from a USB device (assumes CONFIG_E1000_SPI and CONFIG_CMD_E1000 are enabled): usb start fatload usb 0 $loadaddr 82571EB_No_Mgmt_Discrete-LOM.bin e1000 0 spi program $loadaddr 0 1024 e1000 0 spi checksum update
Please keep in mind that the Intel-provided .eep files are organized as 16-bit words. When converting them to binary form for programming you must byteswap each 16-bit word so that it is in little-endian form.
This means that when reading and writing words to the SPI EEPROM, the bit ordering for each word looks like this on the wire:
Time >>>
... [7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8], ...
(MSB is 15, LSB is 0).
Signed-off-by: Kyle Moffett Kyle.D.Moffett@boeing.com Cc: Ben Warren biggerbadderben@gmail.com
README | 15 ++- drivers/net/Makefile | 1 + drivers/net/e1000.c | 66 ++++++- drivers/net/e1000.h | 15 ++ drivers/net/e1000_spi.c | 576 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 671 insertions(+), 2 deletions(-) create mode 100644 drivers/net/e1000_spi.c
Applied, thanks.
Best regards,
Wolfgang Denk