Add a PCD to allow the platform to mask in/out specific features of
the LAN9118 device advertised during auto-negotiation.
For example, the Juno ARM Development Platform doesn't support full
duplex mode. This PCD will allow the platform developer to prevent the
full duplex modes from being advertised.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
[ardb: change default feature mask so that full duplex is disabled]
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Leif Lindholm <leif.lindholm@linaro.org>
gEmbeddedTokenSpaceGuid.PcdLan9118DxeBaseAddress\r
gEmbeddedTokenSpaceGuid.PcdLan9118DefaultMacAddress\r
gEmbeddedTokenSpaceGuid.PcdLan9118DefaultNegotiationTimeout\r
+ gEmbeddedTokenSpaceGuid.PcdLan9118NegotiationFeatureMask\r
\r
[Depex]\r
TRUE\r
Features &= ~(PHYANA_PAUSE_OP_MASK);\r
Features |= 3 << 10;\r
}\r
+ Features &= FixedPcdGet32 (PcdLan9118NegotiationFeatureMask);\r
\r
// Write the features\r
IndirectPHYWrite32 (PHY_INDEX_AUTO_NEG_ADVERT, Features);\r
gEmbeddedTokenSpaceGuid.PcdLan9118DxeBaseAddress|0x0|UINT32|0x00000025\r
gEmbeddedTokenSpaceGuid.PcdLan9118DefaultMacAddress|0x0|UINT64|0x00000026\r
gEmbeddedTokenSpaceGuid.PcdLan9118DefaultNegotiationTimeout|4000|UINT32|0x00000027\r
+ # The default feature mask below disables full duplex negotiation, since full\r
+ # duplex operation is suspected to be broken in the driver.\r
+ gEmbeddedTokenSpaceGuid.PcdLan9118NegotiationFeatureMask|0xFFFFFEBF|UINT32|0x00000028\r
\r
#\r
# Android FastBoot\r