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

2014-09-11 Thread Marek Vasut
On Wednesday, September 10, 2014 at 11:18:20 PM, Marcel Ziswiler wrote:
 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.

That's interesting. I never got it working with unprogrammed iNVM, I always had 
to program it first.

 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):

[...]

 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?

No, but this looks like the card cannot acquire a semaphore. You might want to 
check if there are maybe some pecularities in semaphore handling on this i210 
hardware. I remember intel did change the semaphore handling between various 
intel ethernet cards.

 Wondering whether this is a Tegra PCIe related issue.

I doubt so.

 May I ask about your specific platform you tried this on?

The MX6 SabreLite and the MX6 SabreSDP . Both MX6Quad.

 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.

I don't have the setup assembled now and the i210 is not available to me now, 
but you should be getting the same result with the N6X. Right now, I only have 
the MX6 SabreLite and an another intel NIC available, sorry.

Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


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

2014-09-10 Thread Marcel Ziswiler
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: 0x200-0x201
tegra-pcie:   non-prefetchable memory: 0x2000-0x3000
tegra-pcie:   prefetchable memory: 0x3000-0x4000
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 0x2000
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.

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


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

2014-09-07 Thread Marcel Ziswiler
This patch adds support for i211 as well as unprogrammed aka tools only
i210/i211 chip support.

Signed-off-by: Marcel Ziswiler mar...@ziswiler.com
---
 drivers/net/e1000.c | 6 ++
 include/pci_ids.h   | 2 ++
 2 files changed, 8 insertions(+)

diff --git a/drivers/net/e1000.c b/drivers/net/e1000.c
index 6e8765c..ce19173 100644
--- a/drivers/net/e1000.c
+++ b/drivers/net/e1000.c
@@ -92,7 +92,10 @@ static struct pci_device_id e1000_supported[] = {
{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_80003ES2LAN_SERDES_DPT},
{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_80003ES2LAN_COPPER_SPT},
{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_80003ES2LAN_SERDES_SPT},
+   {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I210_UNPROGRAMMED},
+   {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I211_UNPROGRAMMED},
{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I210_COPPER},
+   {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I211_COPPER},
{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I210_COPPER_FLASHLESS},
{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I210_SERDES},
{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I210_SERDES_FLASHLESS},
@@ -1374,7 +1377,10 @@ e1000_set_mac_type(struct e1000_hw *hw)
case E1000_DEV_ID_ICH8_IGP_M:
hw-mac_type = e1000_ich8lan;
break;
+   case PCI_DEVICE_ID_INTEL_I210_UNPROGRAMMED:
+   case PCI_DEVICE_ID_INTEL_I211_UNPROGRAMMED:
case PCI_DEVICE_ID_INTEL_I210_COPPER:
+   case PCI_DEVICE_ID_INTEL_I211_COPPER:
case PCI_DEVICE_ID_INTEL_I210_COPPER_FLASHLESS:
case PCI_DEVICE_ID_INTEL_I210_SERDES:
case PCI_DEVICE_ID_INTEL_I210_SERDES_FLASHLESS:
diff --git a/include/pci_ids.h b/include/pci_ids.h
index f220c3a..f84c13a 100644
--- a/include/pci_ids.h
+++ b/include/pci_ids.h
@@ -2547,10 +2547,12 @@
 #define PCI_DEVICE_ID_INTEL_82380FB0x124b
 #define PCI_DEVICE_ID_INTEL_82439  0x1250
 #define PCI_DEVICE_ID_INTEL_I210_UNPROGRAMMED  0x1531
+#define PCI_DEVICE_ID_INTEL_I211_UNPROGRAMMED  0x1532
 #define PCI_DEVICE_ID_INTEL_I210_COPPER0x1533
 #define PCI_DEVICE_ID_INTEL_I210_SERDES0x1536
 #define PCI_DEVICE_ID_INTEL_I210_1000BASEKX0x1537
 #define PCI_DEVICE_ID_INTEL_I210_EXTPHY0x1538
+#define PCI_DEVICE_ID_INTEL_I211_COPPER0x1539
 #define PCI_DEVICE_ID_INTEL_I210_COPPER_FLASHLESS  0x157b
 #define PCI_DEVICE_ID_INTEL_I210_SERDES_FLASHLESS  0x157c
 #define PCI_DEVICE_ID_INTEL_80960_RP   0x1960
-- 
1.9.3

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


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

2014-09-07 Thread Marek Vasut
On Monday, September 08, 2014 at 12:03:50 AM, Marcel Ziswiler wrote:
 This patch adds support for i211 as well as unprogrammed aka tools only
 i210/i211 chip support.
 
 Signed-off-by: Marcel Ziswiler mar...@ziswiler.com

Does the network really work with an i21x with unprogrammed iNVM ?

Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot