The LAN9118 driver in EDK2 has been updated to include a PCD for
over-riding the default auto-negotiation timeout.
The default setting of 4000us is not long enough for TC2, so set it to
400000.
NOTE: LAN9118 on TC2 is only working in RELEASE builds at the moment.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ryan Harkin <ryan.harkin(a)linaro.org>
---
Platforms/ARM/VExpress/ArmVExpress-CTA15-A7.dsc | 1 +
1 file changed, 1 insertion(+)
diff --git a/Platforms/ARM/VExpress/ArmVExpress-CTA15-A7.dsc b/Platforms/ARM/VExpress/ArmVExpress-CTA15-A7.dsc
index 3cd6bcc..6fee399 100644
--- a/Platforms/ARM/VExpress/ArmVExpress-CTA15-A7.dsc
+++ b/Platforms/ARM/VExpress/ArmVExpress-CTA15-A7.dsc
@@ -167,6 +167,7 @@ [PcdsFixedAtBuild.common]
# Ethernet (SMSC LAN9118)
gEmbeddedTokenSpaceGuid.PcdLan9118DxeBaseAddress|0x1A000000
+ gEmbeddedTokenSpaceGuid.PcdLan9118DefaultNegotiationTimeout|400000
#
# Define the device path to the FDT for the platform
--
2.1.4
Hello all,
I'm having a problem that is platform specific, but perhaps more of a
generic problem.
When ARM's Juno board boots, not all devices are connected. The first
boot creates the boot variables and sets their order, meaning that we
get the following list on the first attempt:
EFI Misc Device
EFI Misc Device 1
EFI Internal Shell
Intel BDS then attempts to boot from one of the devices and ends up in
Shell. After exiting Shell, the Intel BDS console GUI comes up.
Selecting the Boot Manager option shows more devices being connected
and the list becomes longer:
EFI Misc Device
EFI Misc Device 1
EFI Internal Shell
EFI Hard Drive
EFI Network
Subsequent boots will never attempt to boot from Hard Drive or Network
because Shell will always succeed. That is not good.
Leif has a patch in his working tree that solves this problem [1] by
making the platform call BdsLibConnectAll() at init time. So now, the
first time boot order looks sane:
EFI Misc Device
EFI Misc Device 1
EFI Hard Drive
EFI Network
EFI Internal Shell
However, then the board is booting, the "EFI Network" fails to boot
the first time and so the board drops back to Shell again:
Warning: LAN9118 Driver in stopped state
Link timeout in auto-negotiation.
Lan9118: Auto Negociation not supported.
EhcExecTransfer: transfer failed with 2
EhcControlTransfer: error - Device Error, transfer - 2
Buffer: EFI Hard Drive
Booting EFI Misc Device
Booting EFI Misc Device 1
Booting EFI Hard Drive
Booting EFI Network
Warning: LAN9118 Driver not initialized
Link timeout in auto-negotiation.
Lan9118: Auto Negociation not supported.
Booting EFI Internal Shell
Exiting Shell drops the user back to the Intel BDS UI. Selecting
"Continue" then succeeds in booting from the EFI Network:
Booting EFI Misc Device
Booting EFI Misc Device 1
Booting EFI Hard Drive
Booting EFI Network
..MnpFreeTxBuf: Duplicated recycle report from SNP.
MnpFreeTxBuf: Duplicated recycle report from SNP.
[snip repeated SNP errors]
If I duplicate the call to BdsLibConnectAll() [2], then boot works as
expected. On first boot, the boot order is created correctly and EFI
Network pulls down a file and boots it.
I'm assuming that the 2nd call is connecting things that didn't
connect the first time. And from that, I suspect/guess that perhaps
they didn't connect due to either ordering or timing.
Is there a recommended way to set the order things are connected? Is
it even possible to specify dependencies or order? And if so, how do
we work out what the order should be?
Regards,
Ryan.
[1] https://git.linaro.org/uefi/linaro-edk2.git/commitdiff/bfbd0ef1a182e1baa120…
[2] https://git.linaro.org/landing-teams/working/arm/edk2.git/commitdiff/25320b…
This small series removes a fair amount of broken code used to create
default boot entries and install DT blobs depending upon that variant of
the board this the code is running on.
Changes since v1:
- fixed rebase conflict in the 2nd patch where I accidentally left
in a hunk from a different commit not due to be upstreamed.
[PATCH v2 1/2] ArmPlatformPkg/ArmJunoPkg: don't create default boot entries
[PATCH v2 2/2] ArmPlatformPkg/ArmJunoPkg: only have 1 PCD for the FDT
This series can be found here:
https://git.linaro.org/landing-teams/working/arm/edk2.git/shortlog/refs/tag…
Since we've pushed a load of patches to move ARM Ltd platform support
from EDK2 to OpenPlatformPkg, it's time for a cleanup of the configs we
hold.
[PATCH 1/5] platforms.config: build from OpenPlatformPkg
[PATCH 2/5] platforms.config: remove ARM_FOUNDATION_FVP
[PATCH 3/5] platforms.config: add fvp_gicv2_legacy
[PATCH 4/5] platforms.config: fvp_full: enable PL111
[PATCH 5/5] platforms.config: remove obsolete ARM Ltd configs
This small series removes a fair amount of broken code used to create
default boot entries that don't work and install DT blobs depending upon
that variant of the board this the code is running on, without
supporting all the board variants now available.
[PATCH 1/2] ArmPlatformPkg/ArmJunoPkg: don't create default boot entries
[PATCH 2/2] ArmPlatformPkg/ArmJunoPkg: only have 1 PCD for the FDT
The LAN9118 driver in EDK2 has been updated to include a PCD for
over-riding the default auto-negotiation timeout.
The default setting of 4000us is not long enough for Juno, so set it to
40000.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ryan Harkin <ryan.harkin(a)linaro.org>
---
Platforms/ARM/Juno/ArmJuno.dsc | 1 +
1 file changed, 1 insertion(+)
diff --git a/Platforms/ARM/Juno/ArmJuno.dsc b/Platforms/ARM/Juno/ArmJuno.dsc
index cac05f0..d9d69d3 100644
--- a/Platforms/ARM/Juno/ArmJuno.dsc
+++ b/Platforms/ARM/Juno/ArmJuno.dsc
@@ -130,6 +130,7 @@ [PcdsFixedAtBuild.common]
# LAN9118 Ethernet Driver
gEmbeddedTokenSpaceGuid.PcdLan9118DxeBaseAddress|0x18000000
gEmbeddedTokenSpaceGuid.PcdLan9118DefaultMacAddress|0x1215161822242628
+ gEmbeddedTokenSpaceGuid.PcdLan9118DefaultNegotiationTimeout|40000
#
# ARM General Interrupt Controller
--
2.1.4
We are able to compile CPP files for X64 using UDK2014 by using Visual
Studio.
How do we compile the same source for AARCH64?
Appreciate the help!
Thanks,
Daniel
These patches have been in my personal queue for about two years, and have
already been incorporated into the Ubuntu packaged version of sbsigntool.
Patch #1 and #2 fixes some generic issues, and patch #3 introduces the
ARM and AArch64 magic values in the PE/COFF header check, which is all
that is needed to get sbsign to sign ARM images.
Ard Biesheuvel (3):
sbsigntool: remove doubly defined IMAGE_FILE_MACHINE_AMD64
sbsigntool: fix handling of zero sized sections
sbsigntool: add support for ARM and Aarch64 PE/COFF images
src/coff/pe.h | 2 +-
src/image.c | 48 +++++++++++---------
2 files changed, 27 insertions(+), 23 deletions(-)
--
2.5.0
This is a follow up from my previous patch [1] to add a PCD for the
auto-negotiation timeout and the v2 series that followed it.
Review comments on the edk2-devel mailing list and on the
#linaro-enterprise IRC channel evolved the solution into two different
patches:
[PATCH 1/4] EmbeddedPkg/Lan9118Dxe: use MemoryFence
[PATCH 2/4] EmbeddedPkg/Lan9118Dxe: add PCD for negotiation timeout
Whilst I was editing the code, I also noticed a few non-functional
quirks that were easy to fix:
[PATCH 3/4] EmbeddedPkg/Lan9118Dxe: minor DEBUG tidyup
[PATCH 4/4] EmbeddedPkg/Lan9118Dxe: rename TimeOut to Retries
Changes since v2:
- The number of stalls replaced in the first patch has been reduced.
Any loop that is time bound now contains a MemoryFence and a Stall
- The PCD was previously setting the Stall time for the auto-negotiation
timeout. It now sets the total time to wait for auto-negotiation.
- I dropped the Reviewed-by tags off patches 1 & 2 because the code has
changed enough that I didn't think it was fair to keep them.
[1] http://article.gmane.org/gmane.comp.bios.edk2.devel/7341
Changelog:
v4:
* Use 64-bit value on PL061 register base address.
* Use fallback to be compatible with current PcdPL061GpioBase value
when platform gpio driver isn't present.
* Remove the dependancy on PL061. Move the dependancy to platform
gpio driver instead.
v3:
* Remove GPIO_PIN_MASK_HIGH_8BIT() and GPIO_PIN_MASK_LOW_8BIT().
* Avoid to use MmioAnd8() on updating GPIO DATA register, since PL061
could access each bit by specified register offset.
* Add PLATFORM_GPIO_CONTROLLER structure in embedded gpio.
* Support multiple PL061 gpio controllers in one platform.
v2:
* Append the patch to fix gpio pin mask macro.
Haojian Zhuang (3):
ArmPlatformPkg: PL061: fix accessing GPIO DATA
EmbeddedPkg: enhance for multiple gpio controllers
ArmPlatformPkg: PL061: support multiple controller
ArmPlatformPkg/Drivers/PL061GpioDxe/PL061Gpio.c | 137 +++++++++++++++------
.../Drivers/PL061GpioDxe/PL061GpioDxe.inf | 1 +
ArmPlatformPkg/Include/Drivers/PL061Gpio.h | 51 ++++----
EmbeddedPkg/EmbeddedPkg.dec | 1 +
EmbeddedPkg/Include/Protocol/EmbeddedGpio.h | 17 +++
5 files changed, 143 insertions(+), 64 deletions(-)
--
2.1.4