NonDiscoverableInitLib.c 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /**
  2. *
  3. * Copyright (c) 2017, Linaro Ltd. All rights reserved.
  4. * Copyright (c) 2018, Marvell International Ltd. All rights reserved.
  5. *
  6. * SPDX-License-Identifier: BSD-2-Clause-Patent
  7. *
  8. **/
  9. #include <Uefi.h>
  10. #include <Library/DebugLib.h>
  11. #include <Library/DevicePathLib.h>
  12. #include <Library/IoLib.h>
  13. #include <Library/MemoryAllocationLib.h>
  14. #include <Library/MvGpioLib.h>
  15. #include <Library/NonDiscoverableDeviceRegistrationLib.h>
  16. #include <Library/UefiBootServicesTableLib.h>
  17. #include <Protocol/NonDiscoverableDevice.h>
  18. #include "NonDiscoverableInitLib.h"
  19. STATIC CONST MV_GPIO_PIN mXhciVbusPin = {
  20. MV_GPIO_DRIVER_TYPE_SOC_CONTROLLER,
  21. MV_GPIO_CP0_CONTROLLER1,
  22. ARMADA_80x0_MCBIN_VBUS0_PIN,
  23. TRUE,
  24. };
  25. STATIC
  26. EFI_STATUS
  27. EFIAPI
  28. XhciInit (
  29. IN NON_DISCOVERABLE_DEVICE *This
  30. )
  31. {
  32. EMBEDDED_GPIO *GpioProtocol;
  33. EFI_STATUS Status;
  34. Status = MvGpioGetProtocol (MV_GPIO_DRIVER_TYPE_SOC_CONTROLLER, &GpioProtocol);
  35. if (EFI_ERROR (Status)) {
  36. DEBUG ((DEBUG_ERROR, "%a: Unable to find GPIO protocol\n", __FUNCTION__));
  37. return Status;
  38. }
  39. GpioProtocol->Set (GpioProtocol,
  40. GPIO (mXhciVbusPin.ControllerId, mXhciVbusPin.PinNumber),
  41. GPIO_MODE_OUTPUT_1);
  42. return Status;
  43. }
  44. NON_DISCOVERABLE_DEVICE_INIT
  45. EFIAPI
  46. NonDiscoverableDeviceInitializerGet (
  47. IN NON_DISCOVERABLE_DEVICE_TYPE Type,
  48. IN UINTN Index
  49. )
  50. {
  51. if (Type == NonDiscoverableDeviceTypeXhci) {
  52. return XhciInit;
  53. }
  54. return NULL;
  55. }