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