28 Oct, 2011

4 commits

  • 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
    Cc: Ben Warren

    Kyle Moffett
     
  • A followup patch will be adding a configurable feature to enable
    programming of E1000 EEPROMs from the command line or via the generic
    U-Boot SPI interface.

    In order for it to work it needs access to certain E1000-internal
    functions, so export those in the e1000.h header file.

    Signed-off-by: Kyle Moffett
    Cc: Ben Warren

    Kyle Moffett
     
  • By allocating the e1000 device structures much earlier, we can easily
    generate better error messages and siginficantly clean things up.

    The only user-visable change (aside from reworded error messages) is
    that a detected e1000 device which fails to initialize due to software
    or hardware error will still be allocated a device number.

    As one example, consider a system with 2 e1000 PCI devices where the
    first controller has a corrupted EEPROM. Using the old code the
    second controller would be "e1000#0", while with this change it would be
    "e1000#1".

    This change should hopefully make such EEPROM errors much more
    straightforward to handle correctly in boot scripts and the like.

    It is also necessary for a followup patch which allows SPI programming
    of an e1000 controller's EEPROM even if the checksum is invalid.

    Signed-off-by: Kyle Moffett
    Cc: Ben Warren

    Kyle Moffett
     
  • Consolidate the test for a dual-port NIC to one location for easy
    modification, then fix support for the dual-port 82571.

    Signed-off-by: Kyle Moffett

    Kyle Moffett
     

12 Apr, 2011

1 commit


08 Aug, 2009

1 commit

  • Based on Intel PRO/1000 Network Driver 7.3.20-k2
    Add Intel E1000 PCIE card support. The following cards are added:
    INTEL_82571EB_COPPER
    INTEL_82571EB_FIBER,
    INTEL_82571EB_SERDES
    INTEL_82571EB_QUAD_COPPER
    INTEL_82571PT_QUAD_COPPER
    INTEL_82571EB_QUAD_FIBER
    INTEL_82571EB_QUAD_COPPER_LOWPROFILE
    INTEL_82571EB_SERDES_DUAL
    INTEL_82571EB_SERDES_QUAD
    INTEL_82572EI_COPPER
    INTEL_82572EI_FIBER
    INTEL_82572EI_SERDES
    INTEL_82572EI
    INTEL_82573E
    INTEL_82573E_IAMT
    INTEL_82573L
    INTEL_82546GB_QUAD_COPPER_KSP3
    INTEL_80003ES2LAN_COPPER_DPT
    INTEL_80003ES2LAN_SERDES_DPT
    INTEL_80003ES2LAN_COPPER_SPT
    INTEL_80003ES2LAN_SERDES_SPT

    82571EB_COPPER dual ports,
    82572EI single port,
    82572EI_COPPER single port PCIE cards
    and
    82545EM_COPPER,
    82541GI_LF
    pci cards are tested on both P2020 board
    and MPC8544DS board.

    Signed-off-by: Roy Zang

    Signed-off-by: Ben Warren

    Roy Zang
     

03 Sep, 2008

1 commit


10 Jul, 2008

1 commit


03 Jun, 2008

1 commit


21 May, 2008

1 commit

  • This commit gets rid of a huge amount of silly white-space issues.
    Especially, all sequences of SPACEs followed by TAB characters get
    removed (unless they appear in print statements).

    Also remove all embedded "vim:" and "vi:" statements which hide
    indentation problems.

    Signed-off-by: Wolfgang Denk

    Wolfgang Denk
     

30 Mar, 2008

1 commit


26 Nov, 2007

1 commit