1/*++
2
3Basic defines for TSS error return codes
4
5--*/
6
7#ifndef __TSS_ERROR_BASICS_H__
8#define __TSS_ERROR_BASICS_H__
9
10
11//
12// definitions for the various TSS-SW layers
13//
14#ifndef TSS_LAYER_TPM
15#define TSS_LAYER_TPM   0x0000L     // definition for TPM layer
16#endif // TSS_LAYER_TPM
17
18#define TSS_LAYER_TDDL   0x1000L     // definition for TDDL layer
19#define TSS_LAYER_TCS   0x2000L     // definition for TCS layer
20
21#ifndef TSS_LAYER_TSP
22#define TSS_LAYER_TSP   0x3000L     // definition for TSP layer
23#endif // TSS_LAYER_TSP
24
25
26//
27// definitions for the start points of layer specific error codes
28//
29#ifndef TSS_COMMON_OFFSET
30#define TSS_COMMON_OFFSET   0x000L
31#endif // TSS_COMMON_OFFSET
32
33#define TSS_TDDL_OFFSET    0x080L
34#define TSS_TCSI_OFFSET    0x0C0L
35
36#ifndef TSS_TSPI_OFFSET
37#define TSS_TSPI_OFFSET    0x100L
38#endif // TSS_TSPI_OFFSET
39
40#ifndef TSS_VENDOR_OFFSET
41#define TSS_VENDOR_OFFSET   0x800L
42#endif // TSS_VENDOR_OFFSET
43
44// do not exceed TSS_MAX_ERROR for vendor specific code values:
45#ifndef TSS_MAX_ERROR
46#define TSS_MAX_ERROR    0xFFFL
47#endif // TSS_MAX_ERROR
48
49
50/* Macros for the construction and interpretation of error codes */
51#define TPM_ERROR(code)        (code)
52#define TDDL_ERROR(code)       ((code) ? (TSS_LAYER_TDDL | (code)) : (code))
53#define TCS_ERROR(code)        ((code) ? (TSS_LAYER_TCS | (code)) : (code))
54#define TSP_ERROR(code)        ((code) ? (TSS_LAYER_TSP | (code)) : (code))
55#define ERROR_LAYER(error)     ((error) & 0xf000)
56#define ERROR_CODE(error)      ((error) & 0x0fff)
57
58#endif // __TSS_ERROR_BASICS_H__
59
60