3 #ifndef _BROADWELL_ME_H_
4 #define _BROADWELL_ME_H_
8 #define ME_RETRY 100000
15 #define PCI_CPU_MEBASE_L 0x70
16 #define PCI_CPU_MEBASE_H 0x74
18 #define PCI_ME_HFS 0x40
19 #define ME_HFS_CWS_RESET 0
20 #define ME_HFS_CWS_INIT 1
21 #define ME_HFS_CWS_REC 2
22 #define ME_HFS_CWS_NORMAL 5
23 #define ME_HFS_CWS_WAIT 6
24 #define ME_HFS_CWS_TRANS 7
25 #define ME_HFS_CWS_INVALID 8
26 #define ME_HFS_STATE_PREBOOT 0
27 #define ME_HFS_STATE_M0_UMA 1
28 #define ME_HFS_STATE_M3 4
29 #define ME_HFS_STATE_M0 5
30 #define ME_HFS_STATE_BRINGUP 6
31 #define ME_HFS_STATE_ERROR 7
32 #define ME_HFS_ERROR_NONE 0
33 #define ME_HFS_ERROR_UNCAT 1
34 #define ME_HFS_ERROR_IMAGE 3
35 #define ME_HFS_ERROR_DEBUG 4
36 #define ME_HFS_MODE_NORMAL 0
37 #define ME_HFS_MODE_DEBUG 2
38 #define ME_HFS_MODE_DIS 3
39 #define ME_HFS_MODE_OVER_JMPR 4
40 #define ME_HFS_MODE_OVER_MEI 5
41 #define ME_HFS_BIOS_DRAM_ACK 1
42 #define ME_HFS_ACK_NO_DID 0
43 #define ME_HFS_ACK_RESET 1
44 #define ME_HFS_ACK_PWR_CYCLE 2
45 #define ME_HFS_ACK_S3 3
46 #define ME_HFS_ACK_S4 4
47 #define ME_HFS_ACK_S5 5
48 #define ME_HFS_ACK_GBL_RESET 6
49 #define ME_HFS_ACK_CONTINUE 7
67 #define PCI_ME_UMA 0x44
77 #define PCI_ME_H_GS 0x4c
78 #define ME_INIT_DONE 1
79 #define ME_INIT_STATUS_SUCCESS 0
80 #define ME_INIT_STATUS_NOMEM 1
81 #define ME_INIT_STATUS_ERROR 2
82 #define ME_INIT_STATUS_SUCCESS_OTHER 3
84 #define ME_HSIO_MESSAGE (7 << 28)
85 #define ME_HSIO_CMD_GETHSIOVER 1
86 #define ME_HSIO_CMD_CLOSE 0
100 #define PCI_ME_HFS2 0x48
102 #define ME_HFS2_PHASE_ROM 0
103 #define ME_HFS2_PHASE_BUP 1
104 #define ME_HFS2_PHASE_UKERNEL 2
105 #define ME_HFS2_PHASE_POLICY 3
106 #define ME_HFS2_PHASE_MODULE_LOAD 4
107 #define ME_HFS2_PHASE_UNKNOWN 5
108 #define ME_HFS2_PHASE_HOST_COMM 6
111 #define ME_HFS2_STATE_ROM_BEGIN 0
112 #define ME_HFS2_STATE_ROM_DISABLE 6
114 #define ME_HFS2_STATE_BUP_INIT 0
115 #define ME_HFS2_STATE_BUP_DIS_HOST_WAKE 1
116 #define ME_HFS2_STATE_BUP_FLOW_DET 4
117 #define ME_HFS2_STATE_BUP_VSCC_ERR 8
118 #define ME_HFS2_STATE_BUP_CHECK_STRAP 0xa
119 #define ME_HFS2_STATE_BUP_PWR_OK_TIMEOUT 0xb
120 #define ME_HFS2_STATE_BUP_MANUF_OVRD_STRAP 0xd
121 #define ME_HFS2_STATE_BUP_M3 0x11
122 #define ME_HFS2_STATE_BUP_M0 0x12
123 #define ME_HFS2_STATE_BUP_FLOW_DET_ERR 0x13
124 #define ME_HFS2_STATE_BUP_M3_CLK_ERR 0x15
125 #define ME_HFS2_STATE_BUP_CPU_RESET_DID_TIMEOUT_MEM_MISSING 0x17
126 #define ME_HFS2_STATE_BUP_M3_KERN_LOAD 0x18
127 #define ME_HFS2_STATE_BUP_T32_MISSING 0x1c
128 #define ME_HFS2_STATE_BUP_WAIT_DID 0x1f
129 #define ME_HFS2_STATE_BUP_WAIT_DID_FAIL 0x20
130 #define ME_HFS2_STATE_BUP_DID_NO_FAIL 0x21
131 #define ME_HFS2_STATE_BUP_ENABLE_UMA 0x22
132 #define ME_HFS2_STATE_BUP_ENABLE_UMA_ERR 0x23
133 #define ME_HFS2_STATE_BUP_SEND_DID_ACK 0x24
134 #define ME_HFS2_STATE_BUP_SEND_DID_ACK_ERR 0x25
135 #define ME_HFS2_STATE_BUP_M0_CLK 0x26
136 #define ME_HFS2_STATE_BUP_M0_CLK_ERR 0x27
137 #define ME_HFS2_STATE_BUP_TEMP_DIS 0x28
138 #define ME_HFS2_STATE_BUP_M0_KERN_LOAD 0x32
140 #define ME_HFS2_STATE_POLICY_ENTRY 0
141 #define ME_HFS2_STATE_POLICY_RCVD_S3 3
142 #define ME_HFS2_STATE_POLICY_RCVD_S4 4
143 #define ME_HFS2_STATE_POLICY_RCVD_S5 5
144 #define ME_HFS2_STATE_POLICY_RCVD_UPD 6
145 #define ME_HFS2_STATE_POLICY_RCVD_PCR 7
146 #define ME_HFS2_STATE_POLICY_RCVD_NPCR 8
147 #define ME_HFS2_STATE_POLICY_RCVD_HOST_WAKE 9
148 #define ME_HFS2_STATE_POLICY_RCVD_AC_DC 0xa
149 #define ME_HFS2_STATE_POLICY_RCVD_DID 0xb
150 #define ME_HFS2_STATE_POLICY_VSCC_NOT_FOUND 0xc
151 #define ME_HFS2_STATE_POLICY_VSCC_INVALID 0xd
152 #define ME_HFS2_STATE_POLICY_FPB_ERR 0xe
153 #define ME_HFS2_STATE_POLICY_DESCRIPTOR_ERR 0xf
154 #define ME_HFS2_STATE_POLICY_VSCC_NO_MATCH 0x10
156 #define ME_HFS2_PMEVENT_CLEAN_MOFF_MX_WAKE 0
157 #define ME_HFS2_PMEVENT_MOFF_MX_WAKE_ERROR 1
158 #define ME_HFS2_PMEVENT_CLEAN_GLOBAL_RESET 2
159 #define ME_HFS2_PMEVENT_CLEAN_GLOBAL_RESET_ERROR 3
160 #define ME_HFS2_PMEVENT_CLEAN_ME_RESET 4
161 #define ME_HFS2_PMEVENT_ME_RESET_EXCEPTION 5
162 #define ME_HFS2_PMEVENT_PSEUDO_ME_RESET 6
163 #define ME_HFS2_PMEVENT_S0MO_SXM3 7
164 #define ME_HFS2_PMEVENT_SXM3_S0M0 8
165 #define ME_HFS2_PMEVENT_NON_PWR_CYCLE_RESET 9
166 #define ME_HFS2_PMEVENT_PWR_CYCLE_RESET_M3 0xa
167 #define ME_HFS2_PMEVENT_PWR_CYCLE_RESET_MOFF 0xb
168 #define ME_HFS2_PMEVENT_SXMX_SXMOFF 0xc
187 #define PCI_ME_HFS5 0x68
189 #define PCI_ME_H_GS2 0x70
190 #define PCI_ME_MBP_GIVE_UP 0x01
192 #define PCI_ME_HERES 0xbc
193 #define PCI_ME_EXT_SHA1 0x00
194 #define PCI_ME_EXT_SHA256 0x02
195 #define PCI_ME_HER(x) (0xc0+(4*(x)))
208 #define MEI_H_CB_WW 0x00
209 #define MEI_H_CSR 0x04
210 #define MEI_ME_CB_RW 0x08
211 #define MEI_ME_CSR_HA 0x0c
225 #define MEI_ADDRESS_CORE 0x01
226 #define MEI_ADDRESS_AMT 0x02
227 #define MEI_ADDRESS_RESERVED 0x03
228 #define MEI_ADDRESS_WDT 0x04
229 #define MEI_ADDRESS_MKHI 0x07
230 #define MEI_ADDRESS_ICC 0x08
231 #define MEI_ADDRESS_THERMAL 0x09
233 #define MEI_HOST_ADDRESS 0
243 #define MKHI_GROUP_ID_CBM 0x00
244 #define MKHI_GLOBAL_RESET 0x0b
245 #define MKHI_GROUP_ID_FWCAPS 0x03
246 #define MKHI_FWCAPS_GET_RULE 0x02
247 #define MKHI_GROUP_ID_HMRFPO 0x05
248 #define MKHI_HMRFPO_LOCK 0x02
249 #define MKHI_HMRFPO_LOCK_NOACK 0x05
250 #define MKHI_GROUP_ID_MDES 0x08
251 #define MKHI_MDES_ENABLE 0x09
252 #define MKHI_GROUP_ID_GEN 0xff
253 #define MKHI_GET_FW_VERSION 0x02
254 #define MKHI_END_OF_POST 0x0c
255 #define MKHI_FEATURE_OVERRIDE 0x14
256 #define MKHI_END_OF_POST_NOACK 0x1a
278 #define ICC_SET_CLOCK_ENABLES 0x3
279 #define ICC_API_VERSION_LYNXPOINT 0x00030000
296 #define HECI_EOP_STATUS_SUCCESS 0x0
297 #define HECI_EOP_PERFORM_GLOBAL_RESET 0x1
299 #define CBM_RR_GLOBAL_RESET 0x01
301 #define GLOBAL_RESET_BIOS_MRC 0x01
302 #define GLOBAL_RESET_BIOS_POST 0x02
303 #define GLOBAL_RESET_MEBX 0x03
324 #define MBP_APPID_KERNEL 1
325 #define MBP_APPID_INTEL_AT 3
326 #define MBP_APPID_HWA 4
327 #define MBP_APPID_ICC 5
328 #define MBP_APPID_NFC 6
330 #define MBP_KERNEL_FW_VER_ITEM 1
331 #define MBP_KERNEL_FW_CAP_ITEM 2
332 #define MBP_KERNEL_ROM_BIST_ITEM 3
333 #define MBP_KERNEL_PLAT_KEY_ITEM 4
334 #define MBP_KERNEL_FW_TYPE_ITEM 5
335 #define MBP_KERNEL_MFS_FAILURE_ITEM 6
336 #define MBP_KERNEL_PLAT_TIME_ITEM 7
338 #define MBP_INTEL_AT_STATE_ITEM 1
340 #define MBP_ICC_PROFILE_ITEM 1
342 #define MBP_HWA_REQUEST_ITEM 1
344 #define MBP_NFC_SUPPORT_DATA_ITEM 1
346 #define MBP_MAKE_IDENT(appid, item) ((appid << 8) | item)
347 #define MBP_IDENT(appid, item) \
348 MBP_MAKE_IDENT(MBP_APPID_##appid, MBP_##appid##_##item##_ITEM)
static uint8_t checksum(uint8_t *data, int offset)
void intel_me_status(void)
void intel_me_hsio_version(uint16_t *version, uint16_t *checksum)
@ ME_FIRMWARE_UPDATE_BIOS_PATH
u8 icc_profile_soft_strap
u16 flash_variable_security
u32 pltrst_cpurst_time_ms
u32 wake_event_mrst_time_ms
mbp_me_firmware_type rule_data
mbp_platform_key * platform_key
mbp_mefwcaps * fw_capabilities
mbp_rom_bist_data * rom_bist_data
mbp_plat_time * plat_time
mbp_plat_type * fw_plat_type
mbp_icc_profile * icc_profile
mbp_fw_version_name * fw_version_name
u16 recovery_build_number
u32 extend_feature_present