blob: 59582b3bf90a6afc4ef34daf0907342933a88ecb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
/** @file
Header file for the ChaosKey hardware random number generator.
Copyright (c) 2016 - 2017, Linaro Ltd. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _CHAOSKEY_USB_HWRNG_DRIVER_H_
#define _CHAOSKEY_USB_HWRNG_DRIVER_H_
#include <Uefi.h>
#include <Library/DebugLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiLib.h>
#include <Protocol/Rng.h>
#include <Protocol/UsbIo.h>
#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;
extern EFI_DRIVER_BINDING_PROTOCOL gUsbDriverBinding;
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_
|