[U-Boot] [PATCH] e1000: fix sw fw sync on igb i210/i211

Tim Harvey tharvey at gateworks.com
Mon Oct 27 21:55:17 CET 2014


On Sun, Oct 26, 2014 at 2:57 PM, Marcel Ziswiler <marcel at ziswiler.com> wrote:
> On Thu, 2014-10-23 at 01:12 -0700, Tim Harvey wrote:
>> I've never been able to get e1000_swfw_sync_acquire() to not timeout
>> on the boards with i210 devices that I have (IMX6 with 2x i210
>> programmed as 8086:1533 using int phys).
>
> Ah, OK. I see. We do use them in flash less aka iNVM only mode as
> 8086:157b.
>
>>  In my case with your patch
>> below as well as York's patch
>> (https://patchwork.ozlabs.org/patch/400628/) I still see failures. The
>> I210_SW_FW_SYNC reg returns swfw_sync=0x03, fwmask=0x20000, and
>> swmask=0x2 which results in:
>>
>> 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
>
> As follows my results:
>
> unprogrammed i210
>    01:00.0    - 8086:1531 - Network controller
> swfw_sync=0x0, fwmask=0x20000, swmask=0x2
> e1000: e1000#0: ERROR: Hardware Initialization Failed
>
> programmed i210
>    01:00.0    - 8086:157b - Network controller
> swfw_sync=0x0, fwmask=0x20000, swmask=0x2
> working
>
> unprogrammed i211
>    01:00.0    - 8086:1532 - Network controller
> swfw_sync=0x0, fwmask=0x20000, swmask=0x2
> working
>
> programmed i211
>    01:00.0    - 8086:1539 - Network controller
> swfw_sync=0x0, fwmask=0x20000, swmask=0x2
> working
>

Marcel,

What is the configuration of your i210 - is it using an external PHY
or internal?

I noticed in e1000.c SWSM is 0x5B50 which is the same reg your adding
in your patch here. I think at least you should fix that (use the
register definition already created).

It looks like bit0 of SWSM which is set in my case and clear in yours
is used as a flag in the driver in a few places and perhaps has
nothing to do with hardware state. I'll have to add some debugging to
see whats going on.

Tim

>> I've always had to ignore the return value from e1000_reset() to avoid
>> this issue and use the devices.
>
> As mentioned before for me only the unprogrammed i210 gives me grief as
> it does not assert the CFG_DONE bit in the EEMNGCTL register upon PHY
> reset. However the e1000_swfw_sync_acquire() always works just fine.
>
>> Any ideas?
>
> Maybe the flash less aka iNVM only i210 behaves differently.
>
> Let me enquire Intel about this as well, I anyway need to ask our rep
> about the latest eepromARM programming tool as we have an upcoming
> production lot of a few thousand units arrive any minute now.
>
>> I don't have any i211's but I'll see if I can get hold of an
>> unprogrammed i210 to test with.
>
> Sure, would be interesting to see whether yours behave equally.
>


More information about the U-Boot mailing list