diff --git a/src/soc/intel/cannonlake/me.c b/src/soc/intel/cannonlake/me.c index 5141617c55..f793c19e5f 100644 --- a/src/soc/intel/cannonlake/me.c +++ b/src/soc/intel/cannonlake/me.c @@ -163,16 +163,24 @@ void dump_me_status(void *unused) #define DISABLE_ME 1 #if DISABLE_ME -void disable_me(void* unused); - -void disable_me(void* unused) +static void disable_me(void* unused) { - u32 msg[] = {0x00000105, 0x00000000, 0x00000000}; - printk(BIOS_DEBUG, "ME: send disable message\n"); - if (!heci_send(&msg, sizeof(msg), BIOS_HOST_ADDR, - HECI_MKHI_ADDR)) - printk(BIOS_ERR, "ME: Error sending HMRFPO msg\n"); - dump_me_status(unused); + printk(BIOS_DEBUG, "ME: send disable message\n"); + + struct disable_command { + uint32_t hdr; + uint32_t rule_id; + uint8_t rule_len; + uint32_t rule_data; + } __packed msg; + msg.hdr = 0x303; + msg.rule_id = 6; + msg.rule_len = 4; + msg.rule_data = 0; + + if (!heci_send(&msg, sizeof(msg), BIOS_HOST_ADDR, HECI_MKHI_ADDR)) + printk(BIOS_ERR, "ME: Error sending DISABLE msg\n"); + dump_me_status(unused); } BOOT_STATE_INIT_ENTRY(BS_OS_RESUME_CHECK, BS_ON_EXIT, disable_me, NULL);