| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * Copyright(c) 2018 Intel Corporation. All rights reserved. |
| * Intel specific definitions for NVDIMM Firmware Interface Table - NFIT |
| */ |
| #ifndef _NFIT_INTEL_H_ |
| #define _NFIT_INTEL_H_ |
| |
| #define ND_INTEL_SMART 1 |
| |
| #define ND_INTEL_SMART_SHUTDOWN_COUNT_VALID (1 << 5) |
| #define ND_INTEL_SMART_SHUTDOWN_VALID (1 << 10) |
| |
| struct nd_intel_smart { |
| u32 status; |
| union { |
| struct { |
| u32 flags; |
| u8 reserved0[4]; |
| u8 health; |
| u8 spares; |
| u8 life_used; |
| u8 alarm_flags; |
| u16 media_temperature; |
| u16 ctrl_temperature; |
| u32 shutdown_count; |
| u8 ait_status; |
| u16 pmic_temperature; |
| u8 reserved1[8]; |
| u8 shutdown_state; |
| u32 vendor_size; |
| u8 vendor_data[92]; |
| } __packed; |
| u8 data[128]; |
| }; |
| } __packed; |
| |
| extern const struct nvdimm_security_ops *intel_security_ops; |
| |
| #define ND_INTEL_STATUS_SIZE 4 |
| #define ND_INTEL_PASSPHRASE_SIZE 32 |
| |
| #define ND_INTEL_STATUS_NOT_SUPPORTED 1 |
| #define ND_INTEL_STATUS_RETRY 5 |
| #define ND_INTEL_STATUS_NOT_READY 9 |
| #define ND_INTEL_STATUS_INVALID_STATE 10 |
| #define ND_INTEL_STATUS_INVALID_PASS 11 |
| #define ND_INTEL_STATUS_OVERWRITE_UNSUPPORTED 0x10007 |
| #define ND_INTEL_STATUS_OQUERY_INPROGRESS 0x10007 |
| #define ND_INTEL_STATUS_OQUERY_SEQUENCE_ERR 0x20007 |
| |
| #define ND_INTEL_SEC_STATE_ENABLED 0x02 |
| #define ND_INTEL_SEC_STATE_LOCKED 0x04 |
| #define ND_INTEL_SEC_STATE_FROZEN 0x08 |
| #define ND_INTEL_SEC_STATE_PLIMIT 0x10 |
| #define ND_INTEL_SEC_STATE_UNSUPPORTED 0x20 |
| #define ND_INTEL_SEC_STATE_OVERWRITE 0x40 |
| |
| #define ND_INTEL_SEC_ESTATE_ENABLED 0x01 |
| #define ND_INTEL_SEC_ESTATE_PLIMIT 0x02 |
| |
| struct nd_intel_get_security_state { |
| u32 status; |
| u8 extended_state; |
| u8 reserved[3]; |
| u8 state; |
| u8 reserved1[3]; |
| } __packed; |
| |
| struct nd_intel_set_passphrase { |
| u8 old_pass[ND_INTEL_PASSPHRASE_SIZE]; |
| u8 new_pass[ND_INTEL_PASSPHRASE_SIZE]; |
| u32 status; |
| } __packed; |
| |
| struct nd_intel_unlock_unit { |
| u8 passphrase[ND_INTEL_PASSPHRASE_SIZE]; |
| u32 status; |
| } __packed; |
| |
| struct nd_intel_disable_passphrase { |
| u8 passphrase[ND_INTEL_PASSPHRASE_SIZE]; |
| u32 status; |
| } __packed; |
| |
| struct nd_intel_freeze_lock { |
| u32 status; |
| } __packed; |
| |
| struct nd_intel_secure_erase { |
| u8 passphrase[ND_INTEL_PASSPHRASE_SIZE]; |
| u32 status; |
| } __packed; |
| |
| struct nd_intel_overwrite { |
| u8 passphrase[ND_INTEL_PASSPHRASE_SIZE]; |
| u32 status; |
| } __packed; |
| |
| struct nd_intel_query_overwrite { |
| u32 status; |
| } __packed; |
| |
| struct nd_intel_set_master_passphrase { |
| u8 old_pass[ND_INTEL_PASSPHRASE_SIZE]; |
| u8 new_pass[ND_INTEL_PASSPHRASE_SIZE]; |
| u32 status; |
| } __packed; |
| |
| struct nd_intel_master_secure_erase { |
| u8 passphrase[ND_INTEL_PASSPHRASE_SIZE]; |
| u32 status; |
| } __packed; |
| #endif |