1 /**
2  * @file
3  * Driver ID definition.
4  *
5  * <!-- Copyright Giesecke & Devrient GmbH 2011-2012 -->
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  * 3. The name of the author may not be used to endorse or promote
16  *    products derived from this software without specific prior
17  *    written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
20  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
23  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
25  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 #ifndef RTMDRVID_H_
33 #define RTMDRVID_H_
34 
35 #define MC_DRV_VENDOR_ID_SHIFT     (16)
36 #define MC_DRV_VENDOR_ID_MASK      (0xFFFF << MC_DRV_VENDOR_ID_SHIFT)
37 #define MC_DRV_NUMBER_MASK         (0x0000FFFF)
38 
39 /** MobiCore vendor IDs. */
40 typedef enum {
41     MC_DRV_VENDOR_ID_GD   = 0 << MC_DRV_VENDOR_ID_SHIFT,
42 } mcDrvVendorId_t;
43 
44 /** MobiCore GD driver numbers. */
45 typedef enum {
46 	MC_DRV_NUMBER_INVALID = 0,
47 	MC_DRV_NUMBER_CRYPTO  = 1,
48     MC_DRV_NUMBER_KEYPAD  = 2,
49     /** Last GD driver number reserved for pre-installed drivers.
50      * GD driver numbers up to this constant may not be used for loadable drivers. */
51     MC_DRV_NUMBER_LAST_PRE_INSTALLED = 100,
52 } mcDrvNumber_t;
53 
54 /** MobiCore driver IDs for Trustlets. */
55 typedef enum {
56 	MC_DRV_ID_INVALID = MC_DRV_VENDOR_ID_GD | MC_DRV_NUMBER_INVALID,
57 	MC_DRV_ID_CRYPTO  = MC_DRV_VENDOR_ID_GD | MC_DRV_NUMBER_CRYPTO,
58     MC_DRV_ID_KEYPAD  = MC_DRV_VENDOR_ID_GD | MC_DRV_NUMBER_KEYPAD,
59     /** Last GD driver ID reserved for pre-installed drivers.
60      * GD driver IDs up to this constant may not be used for loadable drivers. */
61     MC_DRV_ID_LAST_PRE_INSTALLED = MC_DRV_VENDOR_ID_GD | MC_DRV_NUMBER_LAST_PRE_INSTALLED,
62 } mcDriverId_t;
63 
64 #endif /* RTMDRVID_H_ */
65