summaryrefslogtreecommitdiff
path: root/Silicon/Openmoko/ChaosKeyDxe/ChaosKeyDriver.h
blob: 37cdbe0c30473a392119fa8c2bf1b0e54fec5342 (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
56
57
58
59
60
/** @file
  Header file for the ChaosKey hardware random number generator.

  Copyright (c) 2016 - 2017, Linaro Ltd. All rights reserved.<BR>

  This program and the accompanying materials
  are licensed and made available under the terms and conditions of the BSD
  License which accompanies this distribution. The full text of the license may
  be found at  http://opensource.org/licenses/bsd-license.php.

  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

**/

#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;

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_