ChaosKeyDriver.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /** @file
  2. Header file for the ChaosKey hardware random number generator.
  3. Copyright (c) 2016 - 2017, Linaro Ltd. All rights reserved.<BR>
  4. SPDX-License-Identifier: BSD-2-Clause-Patent
  5. **/
  6. #ifndef _CHAOSKEY_USB_HWRNG_DRIVER_H_
  7. #define _CHAOSKEY_USB_HWRNG_DRIVER_H_
  8. #include <Uefi.h>
  9. #include <Library/DebugLib.h>
  10. #include <Library/UefiBootServicesTableLib.h>
  11. #include <Library/UefiLib.h>
  12. #include <Protocol/Rng.h>
  13. #include <Protocol/UsbIo.h>
  14. #define CHAOSKEY_VENDOR_ID 0x1d50 /* OpenMoko */
  15. #define CHAOSKEY_PRODUCT_ID 0x60c6 /* ChaosKey */
  16. #define CHAOSKEY_TIMEOUT 10 // ms
  17. #define CHAOSKEY_MAX_EP_SIZE 64 // max EP size for full-speed devices
  18. #define CHAOSKEY_DEV_SIGNATURE SIGNATURE_32('c','h','k','e')
  19. typedef struct {
  20. UINT32 Signature;
  21. UINT16 EndpointAddress;
  22. UINT16 EndpointSize;
  23. EFI_USB_IO_PROTOCOL *UsbIo;
  24. EFI_RNG_PROTOCOL Rng;
  25. } CHAOSKEY_DEV;
  26. #define CHAOSKEY_DEV_FROM_THIS(a) \
  27. CR(a, CHAOSKEY_DEV, Rng, CHAOSKEY_DEV_SIGNATURE)
  28. extern EFI_COMPONENT_NAME2_PROTOCOL gChaosKeyDriverComponentName2;
  29. extern EFI_DRIVER_BINDING_PROTOCOL gUsbDriverBinding;
  30. EFI_STATUS
  31. ChaosKeyInit (
  32. IN EFI_HANDLE DriverBindingHandle,
  33. IN EFI_HANDLE ControllerHandle
  34. );
  35. EFI_STATUS
  36. ChaosKeyRelease (
  37. IN EFI_HANDLE DriverBindingHandle,
  38. IN EFI_HANDLE ControllerHandle
  39. );
  40. #endif // _CHAOSKEY_USB_HWRNG_DRIVER_H_