[U-Boot] [PATCH] e1000: add i211 and unprogrammed i210/i211 support

Marcel Ziswiler marcel at ziswiler.com
Wed Sep 10 23:18:20 CEST 2014


On Mon, 2014-09-08 at 04:07 +0200, Marek Vasut wrote:
> Does the network really work with an i21x with unprogrammed iNVM ?
Yes, it actually does work quite nicely. However I currently still have
to patch it additionally as follows:

diff --git a/drivers/net/e1000.c b/drivers/net/e1000.c
index ce19173..5f9c606 100644
--- a/drivers/net/e1000.c
+++ b/drivers/net/e1000.c
@@ -1128,7 +1128,7 @@ e1000_swfw_sync_acquire(struct e1000_hw *hw,
uint16_t mask)
 
        if (!timeout) {
                DEBUGOUT("Driver can't access resource, SW_FW_SYNC
timeout.\n");
-               return -E1000_ERR_SWFW_SYNC;
+//             return -E1000_ERR_SWFW_SYNC;
        }
 
        swfw_sync |= swmask;
@@ -4378,7 +4378,7 @@ e1000_get_phy_cfg_done(struct e1000_hw *hw)
                if (!timeout) {
                        DEBUGOUT("MNG configuration cycle has not "
                                        "completed.\n");
-                       return -E1000_ERR_RESET;
+//                     return -E1000_ERR_RESET;
                }
                break;
        }

Without doing the above it fails as follows (enabled E1000_DEBUG):

U-Boot SPL 2014.10-rc2-00043-g80a3caa-dirty (Sep 08 2014 - 12:26:27)

U-Boot 2014.10-rc2-00043-g80a3caa-dirty (Sep 08 2014 - 12:26:27)

TEGRA30
Board: Toradex Apalis T30
I2C:   ready 
DRAM:  1 GiB 
MMC:   Tegra SD/MMC: 0, Tegra SD/MMC: 1, Tegra SD/MMC: 2
tegra-pcie: PCI regions:
tegra-pcie:   I/O: 0x2000000-0x2010000
tegra-pcie:   non-prefetchable memory: 0x20000000-0x30000000
tegra-pcie:   prefetchable memory: 0x30000000-0x40000000
tegra-pcie: 4x1, 1x2 configuration
tegra-pcie: probing port 2, using 1 lanes
In:    serial
Out:   serial
Err:   serial
Net:   e1000_initialize
e1000: e1000#0: DEBUG: iobase 0x20000000
e1000_set_mac_type
e1000_set_media_type
copper interface
e1000_reset_hw
Masking off all interrupts
Issuing a global reset to MAC
PF OK
EEC OK
Masking off all interrupts
e1000: no NVM
e1000#0
Error: e1000#0 address not set.

Hit any key to stop autoboot:  0
Apalis T30 # setenv ethaddr 00:14:2d:27:35:8f
Apalis T30 # dhcp
e1000_reset_hw
Masking off all interrupts
Issuing a global reset to MAC
PF OK
EEC OK
Masking off all interrupts
e1000_init_hw
e1000_set_media_type
Initializing the IEEE VLAN
e1000_init_rx_addrs
Programming MAC Address into RAR[0]
Clearing RAR[1-15]
Zeroing the MTA
e1000_setup_link
After fix-ups FlowControl is now = 3
e1000_setup_copper_link
e1000_copper_link_preconfig
e1000_detect_gig_phy
e1000_set_phy_type
PHY ID 0x1410C00 detected
Phy ID = 1410c00
e1000_copper_link_mgp_setup
e1000_phy_reset
e1000_phy_hw_reset
Resetting Phy...
e1000_swfw_sync_acquire
Driver can't access resource, SW_FW_SYNC timeout.
Unable to acquire swfw sync
Error Resetting the PHY
e1000: e1000#0: ERROR: Hardware Initialization Failed

This is both with programmed (iNVM only, haven't tried external serial
PROM possible on i210) as well as unprogrammed i210 as well as i211
chips on our Apalis T30 modules.

Have you ever seen any such issue? Wondering whether this is a Tegra
PCIe related issue. May I ask about your specific platform you tried
this on? Could you send some output of a working session with
E1000_DEBUG enabled? I plan to try it on a Boundary Devices Nitrogen6X
as well as our Apalis iMX6 module as well.



More information about the U-Boot mailing list