xref: /linux/drivers/acpi/nfit/intel.h (revision b3ed2ce0)
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright(c) 2018 Intel Corporation. All rights reserved.
4  * Intel specific definitions for NVDIMM Firmware Interface Table - NFIT
5  */
6 #ifndef _NFIT_INTEL_H_
7 #define _NFIT_INTEL_H_
8 
9 #define ND_INTEL_SMART 1
10 
11 #define ND_INTEL_SMART_SHUTDOWN_COUNT_VALID     (1 << 5)
12 #define ND_INTEL_SMART_SHUTDOWN_VALID           (1 << 10)
13 
14 struct nd_intel_smart {
15 	u32 status;
16 	union {
17 		struct {
18 			u32 flags;
19 			u8 reserved0[4];
20 			u8 health;
21 			u8 spares;
22 			u8 life_used;
23 			u8 alarm_flags;
24 			u16 media_temperature;
25 			u16 ctrl_temperature;
26 			u32 shutdown_count;
27 			u8 ait_status;
28 			u16 pmic_temperature;
29 			u8 reserved1[8];
30 			u8 shutdown_state;
31 			u32 vendor_size;
32 			u8 vendor_data[92];
33 		} __packed;
34 		u8 data[128];
35 	};
36 } __packed;
37 
38 #define ND_INTEL_STATUS_SIZE		4
39 #define ND_INTEL_PASSPHRASE_SIZE	32
40 
41 #define ND_INTEL_STATUS_NOT_SUPPORTED	1
42 #define ND_INTEL_STATUS_RETRY		5
43 #define ND_INTEL_STATUS_NOT_READY	9
44 #define ND_INTEL_STATUS_INVALID_STATE	10
45 #define ND_INTEL_STATUS_INVALID_PASS	11
46 #define ND_INTEL_STATUS_OVERWRITE_UNSUPPORTED	0x10007
47 #define ND_INTEL_STATUS_OQUERY_INPROGRESS	0x10007
48 #define ND_INTEL_STATUS_OQUERY_SEQUENCE_ERR	0x20007
49 
50 #define ND_INTEL_SEC_STATE_ENABLED	0x02
51 #define ND_INTEL_SEC_STATE_LOCKED	0x04
52 #define ND_INTEL_SEC_STATE_FROZEN	0x08
53 #define ND_INTEL_SEC_STATE_PLIMIT	0x10
54 #define ND_INTEL_SEC_STATE_UNSUPPORTED	0x20
55 #define ND_INTEL_SEC_STATE_OVERWRITE	0x40
56 
57 #define ND_INTEL_SEC_ESTATE_ENABLED	0x01
58 #define ND_INTEL_SEC_ESTATE_PLIMIT	0x02
59 
60 struct nd_intel_get_security_state {
61 	u32 status;
62 	u8 extended_state;
63 	u8 reserved[3];
64 	u8 state;
65 	u8 reserved1[3];
66 } __packed;
67 
68 struct nd_intel_set_passphrase {
69 	u8 old_pass[ND_INTEL_PASSPHRASE_SIZE];
70 	u8 new_pass[ND_INTEL_PASSPHRASE_SIZE];
71 	u32 status;
72 } __packed;
73 
74 struct nd_intel_unlock_unit {
75 	u8 passphrase[ND_INTEL_PASSPHRASE_SIZE];
76 	u32 status;
77 } __packed;
78 
79 struct nd_intel_disable_passphrase {
80 	u8 passphrase[ND_INTEL_PASSPHRASE_SIZE];
81 	u32 status;
82 } __packed;
83 
84 struct nd_intel_freeze_lock {
85 	u32 status;
86 } __packed;
87 
88 struct nd_intel_secure_erase {
89 	u8 passphrase[ND_INTEL_PASSPHRASE_SIZE];
90 	u32 status;
91 } __packed;
92 
93 struct nd_intel_overwrite {
94 	u8 passphrase[ND_INTEL_PASSPHRASE_SIZE];
95 	u32 status;
96 } __packed;
97 
98 struct nd_intel_query_overwrite {
99 	u32 status;
100 } __packed;
101 
102 struct nd_intel_set_master_passphrase {
103 	u8 old_pass[ND_INTEL_PASSPHRASE_SIZE];
104 	u8 new_pass[ND_INTEL_PASSPHRASE_SIZE];
105 	u32 status;
106 } __packed;
107 
108 struct nd_intel_master_secure_erase {
109 	u8 passphrase[ND_INTEL_PASSPHRASE_SIZE];
110 	u32 status;
111 } __packed;
112 #endif
113