/** @file
Header file for the ChaosKey hardware random number generator.
Copyright (c) 2016 - 2017, Linaro Ltd. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _CHAOSKEY_USB_HWRNG_DRIVER_H_
#define _CHAOSKEY_USB_HWRNG_DRIVER_H_
#include
#include
#include
#include
#include
#include
#define CHAOSKEY_VENDOR_ID 0x1d50 /* OpenMoko */
#define CHAOSKEY_PRODUCT_ID 0x60c6 /* ChaosKey */
#define CHAOSKEY_TIMEOUT 10 // ms
#define CHAOSKEY_MAX_EP_SIZE 64 // max EP size for full-speed devices
#define CHAOSKEY_DEV_SIGNATURE SIGNATURE_32('c','h','k','e')
typedef struct {
UINT32 Signature;
UINT16 EndpointAddress;
UINT16 EndpointSize;
EFI_USB_IO_PROTOCOL *UsbIo;
EFI_RNG_PROTOCOL Rng;
} CHAOSKEY_DEV;
#define CHAOSKEY_DEV_FROM_THIS(a) \
CR(a, CHAOSKEY_DEV, Rng, CHAOSKEY_DEV_SIGNATURE)
extern EFI_COMPONENT_NAME2_PROTOCOL gChaosKeyDriverComponentName2;
EFI_STATUS
ChaosKeyInit (
IN EFI_HANDLE DriverBindingHandle,
IN EFI_HANDLE ControllerHandle
);
EFI_STATUS
ChaosKeyRelease (
IN EFI_HANDLE DriverBindingHandle,
IN EFI_HANDLE ControllerHandle
);
#endif // _CHAOSKEY_USB_HWRNG_DRIVER_H_