We need platform version to be at least 0.3 to have XHCI in virtual hardware. On older platforms there is non-working EHCI which we ignore.
Signed-off-by: Marcin Juszkiewicz <marcin.juszkiew...@linaro.org> --- .../SbsaQemuPlatformDxe/SbsaQemuPlatformDxe.c | 47 +++++++++++--------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuPlatformDxe/SbsaQemuPlatformDxe.c b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuPlatformDxe/SbsaQemuPlatformDxe.c index 36ada4270bbf..76a9cd62d4a4 100644 --- a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuPlatformDxe/SbsaQemuPlatformDxe.c +++ b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuPlatformDxe/SbsaQemuPlatformDxe.c @@ -15,6 +15,7 @@ #include <Library/UefiBootServicesTableLib.h> #include <Library/UefiDriverEntryPoint.h> #include <IndustryStandard/SbsaQemuSmc.h> +#include <IndustryStandard/SbsaQemuPlatformVersion.h> #include <Protocol/FdtClient.h> @@ -57,28 +58,6 @@ InitializeSbsaQemuPlatformDxe ( return Status; } - Base = (VOID*)(UINTN)PcdGet64 (PcdPlatformXhciBase); - ASSERT (Base != NULL); - Size = (UINTN)PcdGet32 (PcdPlatformXhciSize); - ASSERT (Size != 0); - - DEBUG ((DEBUG_INFO, "%a: Got platform XHCI %llx %u\n", - __FUNCTION__, Base, Size)); - - Status = RegisterNonDiscoverableMmioDevice ( - NonDiscoverableDeviceTypeXhci, - NonDiscoverableDeviceDmaTypeCoherent, - NULL, - NULL, - 1, - Base, Size); - - if (EFI_ERROR(Status)) { - DEBUG ((DEBUG_ERROR, "%a: NonDiscoverable: Cannot install XHCI device @%p (Staus == %r)\n", - __FUNCTION__, Base, Status)); - return Status; - } - SmcResult = ArmCallSmc0 (SIP_SVC_VERSION, &Arg0, &Arg1, NULL); if (SmcResult == SMC_ARCH_CALL_SUCCESS) { Result = PcdSet32S (PcdPlatformVersionMajor, Arg0); @@ -118,5 +97,29 @@ InitializeSbsaQemuPlatformDxe ( DEBUG ((DEBUG_INFO, "GICI base: 0x%x\n", Arg0)); + if (! PLATFORM_VERSION_LESS_THAN(0, 3) ) { + Base = (VOID*)(UINTN)PcdGet64 (PcdPlatformXhciBase); + ASSERT (Base != NULL); + Size = (UINTN)PcdGet32 (PcdPlatformXhciSize); + ASSERT (Size != 0); + + DEBUG ((DEBUG_INFO, "%a: Got platform XHCI %llx %u\n", + __FUNCTION__, Base, Size)); + + Status = RegisterNonDiscoverableMmioDevice ( + NonDiscoverableDeviceTypeXhci, + NonDiscoverableDeviceDmaTypeCoherent, + NULL, + NULL, + 1, + Base, Size); + + if (EFI_ERROR(Status)) { + DEBUG ((DEBUG_ERROR, "%a: NonDiscoverable: Cannot install XHCI device @%p (Staus == %r)\n", + __FUNCTION__, Base, Status)); + return Status; + } + } + return EFI_SUCCESS; } -- 2.41.0 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#109684): https://edk2.groups.io/g/devel/message/109684 Mute This Topic: https://groups.io/mt/102017315/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-