[U-Boot] [PATCH] Add CONFIG_GMAC_TX_DELAY=4 for OlinuXino Lime2

Hans de Goede hdegoede at redhat.com
Mon Mar 21 22:01:46 CET 2016


Hi,

On 21-03-16 21:59, Hans de Goede wrote:
> Hi,
>
> On 21-03-16 19:57, Michael Haas wrote:
>> On 03/21/2016 04:47 PM, Karsten Merker wrote:
>>>>>> Are any other sunxi boards impacted by the same problem that you know ?
>>>>> No, I don't know of any other boards, but I have not looked very hard :)
>>> At least the Olimex A20-SOM-EVB (which uses the same RTL8211CL
>>> PHY) has the same issue and forcing master mode helps there as
>>> well.  With the above change added on top of v2016.01, I can
>>> successfully boot via tftp on a gigabit link on both the Lime2
>>> and the A20-SOM-EVB, which was impossible before.
>> Great news!
>>
>>>
>>> Some quick iperf measurements on the A20-SOM-EVB with the patch
>>> applied show network throughput comparable to what I get with
>>> other A20-based systems.
>>>
>>> All my other A20-based boards - which don't have problems on
>>> gigabit links - use an RTL8211E instead of the RTL8211CL.  I had
>>> been looking into the source of the gigabit problems on the
>>> A20-SOM-EVB for a while already and talked with Olimex about
>>> them.  Olimex has also been trying to debug the issue and told me
>>> that the problem doesn't seem to occur on all boards, and that
>>> during their tests different RTL8211CL chips (i.e. same chip
>>> model, but with different production date codes) behaved
>>> differently.  This would fit into the hypothesis that there might
>>> be some kind of erratum in at least some series of the RTL8211CL.
>>>
>>>
>>
>> So, Olimex knows about these issues? :/ Perhaps you can CC your contact
>> there once we have a final patch.
>>
>> By the way, I just searched the web for "rtl8211c master mode" and found
>> this [0]:
>>
>> ---%--
>>
>> // The EVK board with RTL8211C requires this sequence per information
>>     // Realtek.
>>     // 1. Register 0x1F, write 0005 -> Page 5
>>     // 2. Register 0x0C, write 0000
>>     // 3. Register 0x01, change bit [7]  to 1
>>     // 4. Register 0x1F, write 0000 -> Page 0
>>
>>     // However, please note that it is not recommended to use the RTL8211CL 125MHz clock output because
>>     // it is not stable when link at Slave mode. If you need the clock output,
>>     // please consider using RTL8211E instead.
>>     // 5. Force manual "master" mode in auto-negotiation.
>>
>>     #if defined(CONFIG_DIGICOLOR_MAINBOARD_THUNDERBOLT_REV1)
>>     if (!RTL8211C_hack) {
>>       // Enable 125 Mhz clock output
>>       gmac_mdio_write(ei, phy_id, 0x1f, 5);
>>       gmac_mdio_write(ei, phy_id, 0x0c, 0);
>>          gmac_mdio_read (ei, phy_id, 0x01, &data);
>>       data |= 0x80;
>>       gmac_mdio_write(ei, phy_id, 0x01, data);
>>       gmac_mdio_write(ei, phy_id, 0x1f, 0);
>>       // Set Manual MASTER Mode
>>          gmac_mdio_read (ei, phy_id, 0x09, &data);
>>       data |= 0x1800;
>>       gmac_mdio_write(ei, phy_id, 0x09, data);
>>       // Restart Autonegotiation
>>          gmac_mdio_read (ei, phy_id, 0x00, &data);
>>       data |= 0x0200;
>>       gmac_mdio_write(ei, phy_id, 0x00, data);
>>       // All done now.
>>       RTL8211C_hack = 1;
>>     }
>>     #endif
>>
>> %---
>>
>>
>> I guess we are not the first to find this out the hard way. If the issue
>> is related to an internal clock of the RTL8211C, is there perhaps an
>> external clock we can use?
>
> Oh good catch, so I believe that we should submit a patch to the u-boot
> realtek phy driver which:
>
> 1) Adds a seperate init function for the RTL8211C
> 2) In that function set the force master mode bit and then
>     call the init function currently used for RTL8211C and others,
>     this assumes that the more generic init function will not reset
>     the force master mode bit.
>
> Good work! I believe we're quite close to a fix now :)

Hmm, I just realized / read that RTL8211B and RTL8211C have the same
phyid, maybe there is some other reg which we can use to differentiate
between them ?

Otherwise we are back to having a #ifdef for the fix ...

Regards,

Hans


More information about the U-Boot mailing list