/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (c) 2003-2022, Intel Corporation. All rights reserved.
 * Intel Management Engine Interface (Intel MEI) Linux driver
 */

#ifndef _MEI_MKHI_H_
#define _MEI_MKHI_H_

#include <linux/types.h>

#define MKHI_FEATURE_PTT 0x10

#define MKHI_FWCAPS_GROUP_ID 0x3
#define MKHI_FWCAPS_SET_OS_VER_APP_RULE_CMD 6
#define MKHI_GEN_GROUP_ID 0xFF
#define MKHI_GEN_GET_FW_VERSION_CMD 0x2

#define MCHI_GROUP_ID  0xA

#define MKHI_GROUP_ID_GFX              0x30
#define MKHI_GFX_RESET_WARN_CMD_REQ    0x0
#define MKHI_GFX_MEMORY_READY_CMD_REQ  0x1

/* Allow transition to PXP mode without approval */
#define MKHI_GFX_MEM_READY_PXP_ALLOWED  0x1

struct mkhi_rule_id {
	__le16 rule_type;
	u8 feature_id;
	u8 reserved;
} __packed;

struct mkhi_fwcaps {
	struct mkhi_rule_id id;
	u8 len;
	u8 data[];
} __packed;

struct mkhi_msg_hdr {
	u8  group_id;
	u8  command;
	u8  reserved;
	u8  result;
} __packed;

struct mkhi_msg {
	struct mkhi_msg_hdr hdr;
	u8 data[];
} __packed;

struct mkhi_gfx_mem_ready {
	struct mkhi_msg_hdr hdr;
	u32    flags;
} __packed;

#endif /* _MEI_MKHI_H_ */
