summaryrefslogtreecommitdiff
path: root/Silicon/BroxtonSoC/BroxtonSiPkg/Txe/Include/MkhiMsgs.h
blob: 1f86fb8a089e8a68cd33907edab245a123ac4021 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
/** @file
  MKHI Messages.

  Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.<BR>

  This program and the accompanying materials
  are licensed and made available under the terms and conditions of the BSD License
  which accompanies this distribution.  The full text of the license may be found at
  http://opensource.org/licenses/bsd-license.php.

  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

**/

#ifndef _MKHI_MSGS_H
#define _MKHI_MSGS_H

#pragma pack(1)

#define BIOS_FIXED_HOST_ADDR          0
#define PREBOOT_FIXED_SEC_ADDR        7
#define BIOS_ASF_HOST_ADDR            1

#define HECI_CORE_MESSAGE_ADDR        0x07
#define HECI_ASF_MESSAGE_ADDR         0x02
#define HECI_FSC_MESSAGE_ADDR         0x03
#define HECI_POLICY_MANAGER_ADDR      0x05
#define HECI_TDT_MESSAGE_ADDR         0x05  // Added to support TDT
#define HECI_SEC_PASSWORD_SERVICE_ADDR 0x06
#define HECI_ICC_MESSAGE_ADDR         0x08
#define HECI_TR_MESSAGE_ADDR          0x09
#define HECI_SPI_MESSAGE_ADDR         0x0A
#define HECI_ISH_MESSAGE_ADDR         0X03

#define NON_BLOCKING                  0
#define BLOCKING                      1
#define LONG_BLOCKING                 2

//
// command handle by HCI
//
#define GEN_GET_MKHI_VERSION_CMD      0x01
#define GEN_GET_MKHI_VERSION_CMD_ACK  0x81
#define GEN_GET_FW_VERSION_CMD        0x02
#define GEN_GET_FW_VERSION_CMD_ACK    0x82
#define GEN_UNCFG_WO_PWD_CMD          0x0D
#define GEN_UNCFG_WO_PWD_CMD_ACK      0x8D

#define FWCAPS_GET_RULE_CMD           0x02
#define FWCAPS_SET_RULE_CMD           0x03

#define TDT_SEC_RULE_ID                0xd0000

#define SEC_SUCCESS                  0x00
#define SEC_ERROR_ALIAS_CHECK_FAILED 0x01
#define SEC_INVALID_MESSAGE          0x02
#define SEC_M1_DATA_OLDER_VER        0x03
#define SEC_M1_DATA_INVALID_VER      0x04
#define SEC_INVALID_M1_DATA          0x05

#define MDES_ENABLE_MKHI_CMD      0x09
#define MDES_ENABLE_MKHI_CMD_ACK  0x89

//
// Manageability State Control
//
#define FIRMWARE_CAPABILITY_OVERRIDE_CMD      0x14
#define FIRMWARE_CAPABILITY_OVERRIDE_CMD_ACK  0x94

//
// Unconfiguration
//
#define SEC_UNCONFIGURATION_CMD    0x0d
#define SEC_UNCONFIGURATION_CMD_ACK  0x8D
#define SEC_UNCONFIGURATION_STATUS  0x0e
#define SEC_UNCONFIGURATION_STATUS_ACK  0x8e

//
// IFWI Update
//
#define MKHI_IFWI_UPDATE_GROUP_ID     0x20
#define MKHI_SECURE_BOOT_GROUP_ID     0x0C

//
// Under MKHI_IFWI_UPDATE_GROUP_ID
//
#define IFWI_PREPARE_FOR_UPDATE_CMD_ID  0x01
#define DATA_CLEAR_CMD_ID               0x02
#define DATA_CLEAR_LOCK_CMD_ID          0x04
#define UPDATE_IMAGE_CHECK_CMD_ID       0x06

//
// Under MKHI_SECURE_BOOT_GROUP_ID
//
#define VERIFY_MANIFEST_CMD_ID          0x01
#define GET_ARB_STATUS_CMD_ID           0x02
#define COMMIT_ARB_SVN_UPDATES_CMD_ID   0x03

#define HECI_MCA_CORE_BIOS_DONE_CMD     0x05
#define HECI_MKHI_MCA_GROUP_ID          0x0A


//
// Typedef for GroupID
//
typedef enum {
  MKHI_CBM_GROUP_ID   = 0,
  MKHI_PM_GROUP_ID,
  MKHI_PWD_GROUP_ID,
  MKHI_FWCAPS_GROUP_ID,
  MKHI_APP_GROUP_ID,
  MKHI_SPI_GROUP_ID,
  MKHI_MDES_GROUP_ID  = 8,
  MKHI_MAX_GROUP_ID,
  MKHI_GEN_GROUP_ID   = 0xFF
} MKHI_GROUP_ID;

//
// Typedef for AT State
//
typedef enum _TDT_STATE {
  TDT_STATE_INACTIVE  = 0,
  TDT_STATE_ACTIVE,
  TDT_STATE_STOLEN,
  TDT_STATE_SUSPEND,
  TDT_STATE_MAX
} TDT_STATE;

typedef union _MKHI_MESSAGE_HEADER {
  UINT32  Data;
  struct {
    UINT32  GroupId : 8;
    UINT32  Command : 7;
    UINT32  IsResponse : 1;
    UINT32  Reserved : 8;
    UINT32  Result : 8;
  } Fields;
} MKHI_MESSAGE_HEADER;

typedef struct _CBM_EOP_ACK_DATA {
  UINT32  RequestedActions;
} CBM_EOP_ACK_DATA;

typedef struct _GEN_END_OF_POST_ACK {
  MKHI_MESSAGE_HEADER Header;
  CBM_EOP_ACK_DATA    Data;
} GEN_END_OF_POST_ACK;

typedef struct _DRAM_INIT_DONE_IMRS_REQ_DATA {
  UINT32  BiosImrDisable[2];
  UINT32  BiosMinImrsBa;
} DRAM_INIT_DONE_IMRS_REQ_DATA;

typedef struct _DRAM_INIT_DONE_REQ_FLAGS {
  UINT8  FfsEntryExit             :1;
  UINT8  NonDestructiveAliasCheck :1;
  UINT8  Rsvd                     :6;
} DRAM_INIT_DONE_REQ_FLAGS;

typedef struct _DRAM_INIT_DONE_CMD_REQ {
  MKHI_MESSAGE_HEADER           MKHIHeader;
  DRAM_INIT_DONE_IMRS_REQ_DATA  ImrData;
  DRAM_INIT_DONE_REQ_FLAGS      Flags;
  UINT8                         MemStatus;
  UINT8                         Reserved[2];
} DRAM_INIT_DONE_CMD_REQ;

typedef struct _DRAM_INIT_DONE_IMRS_RESP_DATA {
  UINT32     ImrsSortedRegionBa;
  UINT32     ImrsSortedRegionLen;
  UINT8      OemSettingsRejected;
  UINT8      Rsvd[3];
} DRAM_INIT_DONE_IMRS_RESP_DATA;

typedef struct _DRAM_INIT_DONE_CMD_RESP_DATA {
  MKHI_MESSAGE_HEADER            MKHIHeader;
  DRAM_INIT_DONE_IMRS_RESP_DATA  ImrsData;
  UINT8                          BiosAction;
  UINT8                          Reserved[3];
} DRAM_INIT_DONE_CMD_RESP_DATA;

#define COMMON_GROUP_ID    0xF0
#define DRAM_INIT_DONE_CMD       0x01

///
/// Memory Init Status codes
///
#define BIOS_MSG_DID_SUCCESS              0
#define BIOS_MSG_DID_NO_MEMORY            0x1
#define BIOS_MSG_DID_INIT_ERROR           0x2
#define BIOS_MSG_DID_MEM_NOT_PRESERVED    0x3

typedef struct _DRAM_INIT_DONE_CMD_RESP {
  MKHI_MESSAGE_HEADER   MkhiHeader;
  UINT32                Reset_Request;
  UINT32                IMRActualBase;
  UINT32                IMRTotalSize;
  UINT32                Flag;
} DRAM_INIT_DONE_CMD_RESP;

///
/// BIOS action codes
///
#define DID_ACK_NON_PCR       0x1
#define DID_ACK_PCR           0x2
#define DID_ACK_RSVD3         0x3
#define DID_ACK_RSVD4         0x4
#define DID_ACK_RSVD5         0x5
#define DID_ACK_GRST          0x6
#define DID_ACK_CONTINUE_POST 0x7

#define MBP_CMD               0x2
#define MAX_MBP_SIZE          0x1000

typedef union _MKHI_VERSION {
  UINT32  Data;
  struct {
    UINT32  Minor : 16;
    UINT32  Major : 16;
  } Fields;
} MKHI_VERSION;

typedef struct _FW_VERSION {
  UINT32  CodeMinor : 16;
  UINT32  CodeMajor : 16;
  UINT32  CodeBuildNo : 16;
  UINT32  CodeHotFix : 16;
  UINT32  RcvyMinor : 16;
  UINT32  RcvyMajor : 16;
  UINT32  RcvyBuildNo : 16;
  UINT32  RcvyHotFix : 16;
} FW_VERSION;

typedef struct _GEN_GET_MKHI_VERSION {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_GET_MKHI_VERSION;

typedef struct _GET_MKHI_VERSION_ACK_DATA {
  MKHI_VERSION  MKHIVersion;
} GET_MKHI_VERSION_ACK_DATA;

typedef struct _GEN_GET_MKHI_VERSION_ACK {
  MKHI_MESSAGE_HEADER       MKHIHeader;
  GET_MKHI_VERSION_ACK_DATA Data;
} GEN_GET_MKHI_VERSION_ACK;

//
// FW version messages
//
typedef struct _GEN_GET_FW_VER {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_GET_FW_VER;

typedef struct _GEN_GET_FW_VER_ACK_DATA {
  UINT32  CodeMinor   :16; // Same as firmware fields
  UINT32  CodeMajor   :16; // same as firmware fields
  UINT32  CodeBuildNo :16; // same as firmware fields
  UINT32  CodeHotFix  :16; // same as firmware fields
  UINT32  RcvyMinor   :16; // Same as firmware fields
  UINT32  RcvyMajor   :16; // same as firmware fields
  UINT32  RcvyBuildNo :16; // same as firmware fields
  UINT32  RcvyHotFix  :16; // same as firmware fields
  UINT32  FITCMinor   :16; // same as firmware fields
  UINT32  FITCMajor   :16; // same as firmware fields
  UINT32  FITCBuildNo :16; // same as firmware fields
  UINT32  FITCHotFix  :16; // same as firmware fields

} GEN_GET_FW_VER_ACK_DATA;

typedef struct _GEN_GET_FW_VER_ACK {
  MKHI_MESSAGE_HEADER     MKHIHeader;
  GEN_GET_FW_VER_ACK_DATA Data;
} GEN_GET_FW_VER_ACK;

typedef union _GEN_GET_FW_VER_ACK_BUFFER {
  GEN_GET_FW_VER       Request;
  GEN_GET_FW_VER_ACK   Response;
} GEN_GET_FW_VER_ACK_BUFFER;

//
// Unconfig without password messages
//
typedef struct _GEN_UNCFG_WO_PWD {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_UNCFG_WO_PWD;

typedef struct _GEN_UNCFG_WO_PWD_ACK {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_UNCFG_WO_PWD_ACK;

//
// Get Firmware Capability MKHI
//
typedef struct _GET_RULE_DATA {
  UINT32  RuleId;
} GET_RULE_DATA;

typedef struct _GEN_GET_FW_CAPSKU {
  MKHI_MESSAGE_HEADER MKHIHeader;
  GET_RULE_DATA       Data;
} GEN_GET_FW_CAPSKU;

typedef union _RULE_ID {
  UINT32  Data;
  struct {
    UINT32  RuleTypeId : 16;
    UINT32  FeatureId : 8;
    UINT32  Reserved : 8;
  } Fields;
} RULE_ID;

typedef struct _SET_RULE_DATA {
  RULE_ID  RuleId;
  UINT8    RuleDataLen;
  UINT32   RuleData;
} SET_RULE_DATA;

typedef struct _SET_RULE_ACK_DATA {
  UINT32  RuleId;
} SET_RULE_ACK_DATA;

typedef struct _GEN_SET_FW_CAPSKU {
  MKHI_MESSAGE_HEADER MKHIHeader;
  SET_RULE_DATA       Data;
} GEN_SET_FW_CAPSKU;

typedef struct _GEN_SET_FW_CAPSKU_ACK {
  MKHI_MESSAGE_HEADER MKHIHeader;
  SET_RULE_ACK_DATA   Data;
} GEN_SET_FW_CAPSKU_ACK;

typedef union _SECFWCAPS_SKU {
  UINT32  Data;
  struct {
    UINT32  Reserved : 5;        ///< [4:0] Reserved
    UINT32  IntelAT : 1;          ///< [5] IntelR Anti-Theft (AT)
    UINT32  Reserved1 : 4;         ///< [9:6] Reserved
    UINT32  IntelMPC : 1;         ///< [10] IntelR Power Sharing Technology (MPC)
    UINT32  IccOverClocking : 1;  ///< [11] ICC Over Clocking
    UINT32  PAVP : 1;             ///< [12] Protected Audio Video Path (PAVP)
    UINT32  Reserved2 : 4;        ///< [16:13] Reserved
    UINT32  IPV6 : 1;             ///< [17] IPV6
    UINT32  KVM : 1;              ///< [18] KVM Remote Control (KVM)
    UINT32  OCH : 1;              ///< [19] Outbreak Containment Heuristic (OCH)
    UINT32  VLAN : 1;             ///< [20] Virtual LAN (VLAN)
    UINT32  TLS : 1;              ///< [21] TLS
    UINT32  Reserved4 : 1;        ///< [22] Reserved
    UINT32  WLAN : 1;             ///< [23] Wireless LAN (WLAN)
    UINT32  Reserved5 : 8;        ///< [31:24] Reserved
  } Fields;
} SECFWCAPS_SKU;

typedef struct _TDT_STATE_FLAG {
  UINT16  LockState : 1;          ///< Indicate whether the platform is locked
  UINT16  AuthenticateModule : 1; ///< Preferred Authentication Module
  UINT16  Reserved : 14;
} TDT_STATE_FLAG;

typedef struct _TDT_STATE_INFO {
  UINT8           State;
  UINT8           LastTheftTrigger;
  TDT_STATE_FLAG  flags;
} TDT_STATE_INFO;

typedef struct {
  UINT8   AtState;                ///< State of AT FW
  UINT8   AtLastTheftTrigger;     ///< Reason for the last trigger
  UINT16  AtLockState;            ///< If AT Fw locked?
  UINT16  AtAmPref;               ///< TDTAM or PBA
} AT_STATE_STRUCT;

typedef struct _GEN_GET_FW_CAPS_SKU_ACK_DATA {
  UINT32         RuleID;
  UINT8          RuleDataLen;
  SECFWCAPS_SKU  FWCapSku;
} GEN_GET_FW_CAPS_SKU_ACK_DATA;

typedef struct _GEN_GET_FW_CAPSKU_ACK {
  MKHI_MESSAGE_HEADER           MKHIHeader;
  GEN_GET_FW_CAPS_SKU_ACK_DATA  Data;
} GEN_GET_FW_CAPS_SKU_ACK;

typedef union _GEN_GET_FW_CAPS_SKU_BUFFER {
  GEN_GET_FW_CAPSKU       Request;
  GEN_GET_FW_CAPS_SKU_ACK Response;
} GEN_GET_FW_CAPS_SKU_BUFFER;

typedef enum {
  UPDATE_DISABLED     = 0,
  UPDATE_ENABLED
} LOCAL_FW_UPDATE;

typedef enum {
  LOCAL_FW_ALWAYS     = 0,
  LOCAL_FW_NEVER,
  LOCAL_FW_RESTRICTED,
} LOCAL_FW_QUALIFIER;

typedef struct _GEN_LOCAL_FW_UPDATE_DATA {
  UINT32  RuleId;
  UINT8   RuleDataLen;
  UINT32   RuleData;
} GEN_LOCAL_FW_UPDATE_DATA;

typedef struct _GEN_GET_LOCAL_FW_UPDATE {
  MKHI_MESSAGE_HEADER MKHIHeader;
  GET_RULE_DATA       Data;
} GEN_GET_LOCAL_FW_UPDATE;

typedef struct _GEN_GET_LOCAL_FW_UPDATE_ACK {
  MKHI_MESSAGE_HEADER       MKHIHeader;
  GEN_LOCAL_FW_UPDATE_DATA  Data;
} GEN_GET_LOCAL_FW_UPDATE_ACK;

typedef struct _GEN_SET_LOCAL_FW_UPDATE {
  MKHI_MESSAGE_HEADER       MKHIHeader;
  GEN_LOCAL_FW_UPDATE_DATA  Data;
} GEN_SET_LOCAL_FW_UPDATE;

typedef struct _GEN_SET_LOCAL_FW_UPDATE_ACK {
  MKHI_MESSAGE_HEADER MKHIHeader;
  GET_RULE_DATA       Data;
} GEN_SET_LOCAL_FW_UPDATE_ACK;

typedef enum {
  NO_BRAND                        = 0,
  INTEL_AMT_BRAND,
  INTEL_STAND_MANAGEABILITY_BRAND,
  INTEL_LEVEL_III_MANAGEABILITY_UPGRADE_BRAND,
} PLATFORM_BRAND;

typedef enum {
  INTEL_SEC_IGN_FW                 = 1,
  RESERVED_FW,
  INTEL_SEC_1_5MB_FW,
  INTEL_SEC_5MB_FW,
} SEC_IMAGE_TYPE;

#define REGULAR_SKU               0
#define SUPER_SKU                 1

#define PLATFORM_MARKET_CORPORATE 1
#define PLATFORM_MARKET_CONSUMER  2

#define PLATFORM_MOBILE           1
#define PLATFORM_DESKTOP          2
#define PLATFORM_SERVER           4
#define PLATFORM_WORKSTATION      8

typedef union _PLATFORM_TYPE_RULE_DATA {
  UINT32  Data;
  struct {
    UINT32  PlatformTargetUsageType : 4;
    UINT32  PlatformTargetMarketType : 2;
    UINT32  SuperSku : 1;
    UINT32  Reserved : 1;
    UINT32  IntelSeCFwImageType : 4;
    UINT32  PlatformBrand : 4;
    UINT32  Reserved1 : 16;
  } Fields;
} PLATFORM_TYPE_RULE_DATA;

typedef struct _GEN_PLATFORM_TYPE_DATA {
  UINT32                  RuleId;
  UINT8                   RuleDataLen;
  PLATFORM_TYPE_RULE_DATA RuleData;
  UINT8                   Reserved[27];
} GEN_PLATFORM_TYPE_DATA;

typedef struct _GEN_GET_PLATFORM_TYPE {
  MKHI_MESSAGE_HEADER MKHIHeader;
  GET_RULE_DATA       Data;
} GEN_GET_PLATFORM_TYPE;

typedef struct _GEN_GET_PLATFORM_TYPE_ACK {
  MKHI_MESSAGE_HEADER     MKHIHeader;
  GEN_PLATFORM_TYPE_DATA  Data;
} GEN_GET_PLATFORM_TYPE_ACK;

typedef union _GEN_GET_PLATFORM_TYPE_BUFFER {
  GEN_GET_PLATFORM_TYPE     Request;
  GEN_GET_PLATFORM_TYPE_ACK Response;
} GEN_GET_PLATFORM_TYPE_BUFFER;

typedef struct _GET_TDT_SEC_RULE_CMD {
  MKHI_MESSAGE_HEADER MKHIHeader;
  UINT32              RuleId;
} GET_TDT_SEC_RULE_CMD;

typedef struct _GET_TDT_SEC_RULE_RSP {
  MKHI_MESSAGE_HEADER MKHIHeader;
  UINT32              RuleId;
  UINT8               RuleDataLength;
  TDT_STATE_INFO      TdtRuleData;
} GET_TDT_SEC_RULE_RSP;

typedef struct _GET_FW_FEATURE_STATUS {
  MKHI_MESSAGE_HEADER MKHIHeader;
  GET_RULE_DATA       Data;
} GEN_GET_FW_FEATURE_STATUS;

typedef struct _GET_FW_FEATURE_STATUS_ACK {
  MKHI_MESSAGE_HEADER MKHIHeader;
  UINT32              RuleId;
  UINT8               RuleDataLength;
  SECFWCAPS_SKU        RuleData;
} GEN_GET_FW_FEATURE_STATUS_ACK;

typedef struct _GEN_AMT_BIOS_SYNCH_INFO {
  MKHI_MESSAGE_HEADER MKHIHeader;
  GET_RULE_DATA       Data;
} GEN_AMT_BIOS_SYNCH_INFO;

typedef struct _GEN_AMT_BIOS_SYNCH_INFO_ACK {
  MKHI_MESSAGE_HEADER MKHIHeader;
  UINT32              RuleId;
  UINT8               RuleDataLength;
  UINT32              RuleData;
} GEN_AMT_BIOS_SYNCH_INFO_ACK;

typedef struct _GEN_GET_OEM_TAG_MSG {
  MKHI_MESSAGE_HEADER MKHIHeader;
  GET_RULE_DATA       Data;
} GEN_GET_OEM_TAG_MSG;

typedef struct _GEN_GET_OEM_TAG_MSG_ACK {
  MKHI_MESSAGE_HEADER MKHIHeader;
  UINT32              RuleId;
  UINT8               RuleDataLength;
  UINT32              RuleData;
} GEN_GET_OEM_TAG_MSG_ACK;

typedef struct _GEN_MDES_ENABLE_MKHI_CMD_MSG {
  MKHI_MESSAGE_HEADER MKHIHeader;
  UINT8               Data;
} GEN_MDES_ENABLE_MKHI_CMD_MSG;

typedef struct _FIRMWARE_CAPABILITY_OVERRIDE_DATA {
  UINT32  EnableFeature;
  UINT32  DisableFeature;
} FIRMWARE_CAPABILITY_OVERRIDE_DATA;

typedef struct _FIRMWARE_CAPABILITY_OVERRIDE {
  MKHI_MESSAGE_HEADER               MKHIHeader;
  FIRMWARE_CAPABILITY_OVERRIDE_DATA FeatureState;
} FIRMWARE_CAPABILITY_OVERRIDE;

typedef enum _FIRMWARE_CAPABILITY_RESPONSE {
  SET_FEATURE_STATE_ACCEPTED                  = 0,
  SET_FEATURE_STATE_REJECTED
} FIRMWARE_CAPABILITY_RESPONSE;

typedef struct _FIRMWARE_CAPABILITY_OVERRIDE_ACK_DATA {
  FIRMWARE_CAPABILITY_RESPONSE  Response;
} FIRMWARE_CAPABILITY_OVERRIDE_ACK_DATA;

typedef struct _FIRMWARE_CAPABILITY_OVERRIDE_ACK {
  MKHI_MESSAGE_HEADER                   Header;
  FIRMWARE_CAPABILITY_OVERRIDE_ACK_DATA Data;
} FIRMWARE_CAPABILITY_OVERRIDE_ACK;

typedef struct _GEN_GET_IFWI_VER {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_GET_IFWI_VER;

typedef struct _GEN_GET_IFWI_VER_ACK_DATA {
  UINT32  IFWIvendor  :32;
  UINT32  IFWIMajor   :16;
  UINT32  IFWIMinor   :16;
  UINT32  hotfix      :16;
  UINT32  build       :16;
} GEN_GET_IFWI_VER_ACK_DATA;

typedef struct _GEN_GET_IFWI_VER_ACK {
  MKHI_MESSAGE_HEADER     MKHIHeader;
  GEN_GET_IFWI_VER_ACK_DATA Data;
} GEN_GET_IFWI_VER_ACK;

typedef struct _GEN_GET_RPMB_CONFIG_FILE {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_GET_RPMB_CONFIG_FILE;

typedef struct _GEN_GET_RPMB_CONFIG_FILE_DATA {
  UINT32  DataSize;
  UINT32  Data1;
  UINT32  Data2;
  UINT32  Data3;
  UINT32  Data4;
  UINT32  Data5;
} GEN_GET_RPMB_CONFIG_FILE_DATA;

typedef struct _GEN_GET_RPMB_CONFIG_FILE_ACK {
  MKHI_MESSAGE_HEADER     MKHIHeader;
  GEN_GET_RPMB_CONFIG_FILE_DATA Data;
} GEN_GET_RPMB_CONFIG_FILE_ACK;

typedef struct _GEN_SET_RPMB_CONFIG_FILE {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_SET_RPMB_CONFIG_FILE;

typedef struct _GEN_SET_RPMB_CONFIG_FILE_DATA {
  UINT32  DataSize;
  UINT32  Data1;
  UINT32  Data2;
  UINT32  Data3;
  UINT32  Data4;
  UINT32  Data5;
} GEN_SET_RPMB_CONFIG_FILE_DATA;

typedef struct _GEN_SET_RPMB_CONFIG_FILE_ACK {
  MKHI_MESSAGE_HEADER     MKHIHeader;
  GEN_SET_RPMB_CONFIG_FILE_DATA Data;
} GEN_SET_RPMB_CONFIG_FILE_ACK;

typedef struct _GEN_BOOT_PARTITION_READ {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_BOOT_PARTITION_READ;

typedef struct _GEN_BOOT_PARTITION_READ_DATA {
  UINT32  BPID;
  UINT32  Offset;
  UINT32  Size;
  UINT32  DataSize;
  UINT32  Data1;
  UINT32  Data2;
  UINT32  Data3;
  UINT32  Data4;
  UINT32  Data5;
} GEN_BOOT_PARTITION_READ_DATA;

typedef struct _GEN_BOOT_PARTITION_READ_ACK {
  MKHI_MESSAGE_HEADER     MKHIHeader;
  GEN_BOOT_PARTITION_READ_DATA Data;
} GEN_BOOT_PARTITION_READ_ACK;

typedef struct _GEN_MASS_STORAGE_READ {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_MASS_STORAGE_READ;

typedef struct _GEN_MASS_STORAGE_READ_DATA {
  UINT32  DestAddrL;
  UINT32  DestAddrU;
  UINT32  PartType;
  UINT32  PartitionIndex;
  UINT32  Offset;
  UINT32  Size;
} GEN_MASS_STORAGE_READ_DATA;

typedef struct _GEN_MASS_STORAGE_READ_ACK {
  MKHI_MESSAGE_HEADER     MKHIHeader;
  GEN_MASS_STORAGE_READ_DATA Data;
} GEN_MASS_STORAGE_READ_ACK;

typedef struct _GEN_REQUEST_DEVICE_OWNERSHIP {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_REQUEST_DEVICE_OWNERSHIP;

typedef struct _GEN_REQUEST_DEVICE_OWNERSHIP_DATA {
  UINT32  FinalFlag;
} GEN_REQUEST_DEVICE_OWNERSHIP_DATA;

typedef struct _GEN_REQUEST_DEVICE_OWNERSHIP_ACK {
  MKHI_MESSAGE_HEADER     MKHIHeader;
  GEN_REQUEST_DEVICE_OWNERSHIP_DATA Data;
} GEN_REQUEST_DEVICE_OWNERSHIP_ACK;

typedef struct _GEN_GRANT_DEVICE_OWNERSHIP {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_GRANT_DEVICE_OWNERSHIP;

typedef struct _GEN_GRANT_DEVICE_OWNERSHIP_DATA {
  UINT32  FinalFlag;
} GEN_GRANT_DEVICE_OWNERSHIP_DATA;

typedef struct _GEN_GRANT_DEVICE_OWNERSHIP_ACK {
  MKHI_MESSAGE_HEADER     MKHIHeader;
  GEN_GRANT_DEVICE_OWNERSHIP_DATA Data;
} GEN_GRANT_DEVICE_OWNERSHIP_ACK;

typedef struct _GEN_SMIP_READ {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_SMIP_READ;

typedef struct _GEN_SMIP_READ_DATA {
  UINT32  SMIPRegion;
  UINT32  SMIPOffset;
  UINT32  NumBytes;
} GEN_SMIP_READ_DATA;

typedef struct _GEN_SMIP_READ_ACK {
  MKHI_MESSAGE_HEADER     MKHIHeader;
  GEN_SMIP_READ_DATA Data;
} GEN_SMIP_READ_ACK;

typedef struct _GEN_AUTH_POLICY_MANIFEST {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_AUTH_POLICY_MANIFEST;

typedef struct _GEN_AUTH_POLICY_MANIFEST_DATA {
  UINT32  status;
} GEN_AUTH_POLICY_MANIFEST_DATA;

typedef struct _GEN_AUTH_POLICY_MANIFEST_ACK {
  MKHI_MESSAGE_HEADER     MKHIHeader;
  GEN_AUTH_POLICY_MANIFEST_DATA Data;
} GEN_AUTH_POLICY_MANIFEST_ACK;

typedef struct _GEN_BOOT_TYPE {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_BOOT_TYPE;

typedef struct _GEN_BOOT_TYPE_DATA {
  UINT32  status;
} GEN_BOOT_TYPE_DATA;

typedef struct _GEN_BOOT_TYPE_ACK {
  MKHI_MESSAGE_HEADER     MKHIHeader;
  GEN_BOOT_TYPE_DATA Data;
} GEN_BOOT_TYPE_ACK;

typedef struct _GEN_AUTH_KERNEL {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_AUTH_KERNEL;

typedef struct _GEN_AUTH_KERNEL_DATA {
  UINT32  status;
} GEN_AUTH_KERNEL_DATA;

typedef struct _GEN_AUTH_KERNEL_ACK {
  MKHI_MESSAGE_HEADER     MKHIHeader;
  GEN_AUTH_KERNEL_DATA Data;
} GEN_AUTH_KERNEL_ACK;

typedef struct _GEN_RSA_OFFLOAD {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_RSA_OFFLOAD;

typedef struct _GEN_RSA_OFFLOAD_DATA {
  UINT32  status;
} GEN_RSA_OFFLOAD_DATA;

typedef struct _GEN_RSA_OFFLOAD_ACK {
  MKHI_MESSAGE_HEADER     MKHIHeader;
  GEN_RSA_OFFLOAD_DATA Data;
} GEN_RSA_OFFLOAD_ACK;

typedef struct _GEN_GET_MBP {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_GET_MBP;

typedef struct _GEN_GET_MBP_DATA {
  UINT32  status;
} GEN_GET_MBP_DATA;

typedef struct _GEN_GET_MBP_ACK {
  MKHI_MESSAGE_HEADER     MKHIHeader;
  GEN_GET_MBP_DATA Data;
} GEN_GET_MBP_ACK;

typedef struct _GEN_LOAD_OBB {
  MKHI_MESSAGE_HEADER MKHIHeader;
} GEN_LOAD_OBB;


typedef struct _GEN_LOAD_OBB_DATA {
  UINT32  status;
} GEN_LOAD_OBB_DATA;

typedef struct _GEN_LOAD_OBB_ACK {
  MKHI_MESSAGE_HEADER     MKHIHeader;
  GEN_LOAD_OBB_DATA Data;
} GEN_LOAD_OBB_ACK;

typedef struct _ISH_SRV_HECI_REQUEST_HEADER {
  UINT16      Command;
  UINT16      Length;
} ISH_SRV_HECI_REQUEST_HEADER;

typedef struct _ISH_SRV_HECI_SET_FILE_REQUEST {
  ISH_SRV_HECI_REQUEST_HEADER   Header;
  CHAR8                         FileName[12];
} ISH_SRV_HECI_SET_FILE_REQUEST;

typedef struct _ISH_SRV_HECI_STATUS_REPLY {
  ISH_SRV_HECI_REQUEST_HEADER   Header;
  UINT32                        Status;
} ISH_SRV_HECI_STATUS_REPLY;

#pragma pack()

#endif