/** @file
|
* FDT client protocol driver for qemu,mach-virt-ahci DT node
|
*
|
* Copyright (c) 2019, Linaro Ltd. All rights reserved.
|
*
|
* SPDX-License-Identifier: BSD-2-Clause-Patent
|
*
|
**/
|
|
#include <Library/BaseLib.h>
|
#include <Library/DebugLib.h>
|
#include <Library/NonDiscoverableDeviceRegistrationLib.h>
|
#include <Library/PcdLib.h>
|
#include <Library/UefiBootServicesTableLib.h>
|
#include <Library/UefiDriverEntryPoint.h>
|
|
#include <Protocol/FdtClient.h>
|
|
EFI_STATUS
|
EFIAPI
|
InitializeSbsaQemuPlatformDxe (
|
IN EFI_HANDLE ImageHandle,
|
IN EFI_SYSTEM_TABLE *SystemTable
|
)
|
{
|
EFI_STATUS Status;
|
UINTN Size;
|
VOID* Base;
|
|
DEBUG ((DEBUG_INFO, "%a: InitializeSbsaQemuPlatformDxe called\n", __FUNCTION__));
|
|
Base = (VOID*)(UINTN)PcdGet64 (PcdPlatformAhciBase);
|
ASSERT (Base != NULL);
|
Size = (UINTN)PcdGet32 (PcdPlatformAhciSize);
|
ASSERT (Size != 0);
|
|
DEBUG ((DEBUG_INFO, "%a: Got platform AHCI %llx %u\n",
|
__FUNCTION__, Base, Size));
|
|
Status = RegisterNonDiscoverableMmioDevice (
|
NonDiscoverableDeviceTypeAhci,
|
NonDiscoverableDeviceDmaTypeCoherent,
|
NULL,
|
NULL,
|
1,
|
Base, Size);
|
|
if (EFI_ERROR(Status)) {
|
DEBUG ((DEBUG_ERROR, "%a: NonDiscoverable: Cannot install AHCI device @%p (Staus == %r)\n",
|
__FUNCTION__, Base, Status));
|
return Status;
|
}
|
|
return EFI_SUCCESS;
|
}
|