/** @file
  HddPassword HII data structure used by the driver.

  Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>

  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#pragma once

#include <Guid/HiiPlatformSetupFormset.h>

#define HDD_PASSWORD_CONFIG_GUID \
  { \
    0x737cded7, 0x448b, 0x4801, { 0xb5, 0x7d, 0xb1, 0x94, 0x83, 0xec, 0x60, 0x6f } \
  }

#define FORMID_HDD_MAIN_FORM    1
#define FORMID_HDD_DEVICE_FORM  2

#define HDD_DEVICE_ENTRY_LABEL  0x1234
#define HDD_DEVICE_LABEL_END    0xffff

#define KEY_HDD_DEVICE_ENTRY_BASE  0x1000

#define KEY_HDD_USER_PASSWORD    0x101
#define KEY_HDD_MASTER_PASSWORD  0x102

#pragma pack(1)

typedef struct {
  UINT8    Supported            : 1;
  UINT8    Enabled              : 1;
  UINT8    Locked               : 1;
  UINT8    Frozen               : 1;
  UINT8    UserPasswordStatus   : 1;
  UINT8    MasterPasswordStatus : 1;
  UINT8    Reserved             : 2;
} HDD_PASSWORD_SECURITY_STATUS;

typedef struct {
  UINT8    UserPassword   : 1;
  UINT8    MasterPassword : 1;
  UINT8    Reserved       : 6;
} HDD_PASSWORD_REQUEST;

typedef struct _HDD_PASSWORD_CONFIG {
  HDD_PASSWORD_SECURITY_STATUS    SecurityStatus;
  HDD_PASSWORD_REQUEST            Request;
} HDD_PASSWORD_CONFIG;

#pragma pack()
