/** @file

  Copyright (c) 2020 - 2021, Ampere Computing LLC. All rights reserved.<BR>

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

**/

#ifndef CPU_CONFIG_H_
#define CPU_CONFIG_H_

#include "CpuConfigNVDataStruc.h"

//
// This is the generated IFR binary data for each formset defined in VFR.
//
extern UINT8 CpuConfigVfrBin[];

//
// This is the generated String package data for all .UNI files.
//
extern UINT8 CpuConfigDxeStrings[];

#define CPU_CONFIG_PRIVATE_SIGNATURE SIGNATURE_32 ('C', 'P', 'U', '_')

typedef struct {
  UINTN Signature;

  EFI_HANDLE        DriverHandle;
  EFI_HII_HANDLE    HiiHandle;
  CPU_VARSTORE_DATA Configuration;

  EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;

  EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;
} CPU_CONFIG_PRIVATE_DATA;

#define CPU_CONFIG_PRIVATE_FROM_THIS(a)  CR (a, CPU_CONFIG_PRIVATE_DATA, ConfigAccess, CPU_CONFIG_PRIVATE_SIGNATURE)

#pragma pack(1)

///
/// HII specific Vendor Device Path definition.
///
typedef struct {
  VENDOR_DEVICE_PATH       VendorDevicePath;
  EFI_DEVICE_PATH_PROTOCOL End;
} HII_VENDOR_DEVICE_PATH;

#pragma pack()

#endif /* CPU_CONFIG_H_ */
