EmbeddedPkg/Lan9118Dxe: add mask PCD to disable auto-negotiation features

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>
This commit is contained in:
Ryan Harkin 2016-05-11 09:23:59 +01:00 committed by Ard Biesheuvel
parent 321151fedb
commit 6336850c91
3 changed files with 5 additions and 0 deletions

View File

@ -52,6 +52,7 @@
gEmbeddedTokenSpaceGuid.PcdLan9118DxeBaseAddress
gEmbeddedTokenSpaceGuid.PcdLan9118DefaultMacAddress
gEmbeddedTokenSpaceGuid.PcdLan9118DefaultNegotiationTimeout
gEmbeddedTokenSpaceGuid.PcdLan9118NegotiationFeatureMask
[Depex]
TRUE

View File

@ -648,6 +648,7 @@ AutoNegotiate (
Features &= ~(PHYANA_PAUSE_OP_MASK);
Features |= 3 << 10;
}
Features &= FixedPcdGet32 (PcdLan9118NegotiationFeatureMask);
// Write the features
IndirectPHYWrite32 (PHY_INDEX_AUTO_NEG_ADVERT, Features);

View File

@ -147,6 +147,9 @@
gEmbeddedTokenSpaceGuid.PcdLan9118DxeBaseAddress|0x0|UINT32|0x00000025
gEmbeddedTokenSpaceGuid.PcdLan9118DefaultMacAddress|0x0|UINT64|0x00000026
gEmbeddedTokenSpaceGuid.PcdLan9118DefaultNegotiationTimeout|4000|UINT32|0x00000027
# The default feature mask below disables full duplex negotiation, since full
# duplex operation is suspected to be broken in the driver.
gEmbeddedTokenSpaceGuid.PcdLan9118NegotiationFeatureMask|0xFFFFFEBF|UINT32|0x00000028
#
# Android FastBoot