177b6f79dSJohn Harrison /* SPDX-License-Identifier: MIT */
277b6f79dSJohn Harrison /*
377b6f79dSJohn Harrison  * Copyright © 2021 Intel Corporation
477b6f79dSJohn Harrison  */
577b6f79dSJohn Harrison 
677b6f79dSJohn Harrison #ifndef _ABI_GUC_KLVS_ABI_H
777b6f79dSJohn Harrison #define _ABI_GUC_KLVS_ABI_H
877b6f79dSJohn Harrison 
92584b354SJohn Harrison #include <linux/types.h>
102584b354SJohn Harrison 
1177b6f79dSJohn Harrison /**
1277b6f79dSJohn Harrison  * DOC: GuC KLV
1377b6f79dSJohn Harrison  *
1477b6f79dSJohn Harrison  *  +---+-------+--------------------------------------------------------------+
1577b6f79dSJohn Harrison  *  |   | Bits  | Description                                                  |
1677b6f79dSJohn Harrison  *  +===+=======+==============================================================+
1777b6f79dSJohn Harrison  *  | 0 | 31:16 | **KEY** - KLV key identifier                                 |
1877b6f79dSJohn Harrison  *  |   |       |   - `GuC Self Config KLVs`_                                  |
1977b6f79dSJohn Harrison  *  |   |       |                                                              |
2077b6f79dSJohn Harrison  *  |   +-------+--------------------------------------------------------------+
2177b6f79dSJohn Harrison  *  |   |  15:0 | **LEN** - length of VALUE (in 32bit dwords)                  |
2277b6f79dSJohn Harrison  *  +---+-------+--------------------------------------------------------------+
2377b6f79dSJohn Harrison  *  | 1 |  31:0 | **VALUE** - actual value of the KLV (format depends on KEY)  |
2477b6f79dSJohn Harrison  *  +---+-------+                                                              |
2577b6f79dSJohn Harrison  *  |...|       |                                                              |
2677b6f79dSJohn Harrison  *  +---+-------+                                                              |
2777b6f79dSJohn Harrison  *  | n |  31:0 |                                                              |
2877b6f79dSJohn Harrison  *  +---+-------+--------------------------------------------------------------+
2977b6f79dSJohn Harrison  */
3077b6f79dSJohn Harrison 
3177b6f79dSJohn Harrison #define GUC_KLV_LEN_MIN				1u
32d154613dSArnd Bergmann #define GUC_KLV_0_KEY				(0xffffu << 16)
33d154613dSArnd Bergmann #define GUC_KLV_0_LEN				(0xffffu << 0)
34d154613dSArnd Bergmann #define GUC_KLV_n_VALUE				(0xffffffffu << 0)
3577b6f79dSJohn Harrison 
3677b6f79dSJohn Harrison /**
3777b6f79dSJohn Harrison  * DOC: GuC Self Config KLVs
3877b6f79dSJohn Harrison  *
3977b6f79dSJohn Harrison  * `GuC KLV`_ keys available for use with HOST2GUC_SELF_CFG_.
4077b6f79dSJohn Harrison  *
4177b6f79dSJohn Harrison  * _`GUC_KLV_SELF_CFG_H2G_CTB_ADDR` : 0x0902
4277b6f79dSJohn Harrison  *      Refers to 64 bit Global Gfx address of H2G `CT Buffer`_.
4377b6f79dSJohn Harrison  *      Should be above WOPCM address but below APIC base address for native mode.
4477b6f79dSJohn Harrison  *
4577b6f79dSJohn Harrison  * _`GUC_KLV_SELF_CFG_H2G_CTB_DESCRIPTOR_ADDR` : 0x0903
4677b6f79dSJohn Harrison  *      Refers to 64 bit Global Gfx address of H2G `CTB Descriptor`_.
4777b6f79dSJohn Harrison  *      Should be above WOPCM address but below APIC base address for native mode.
4877b6f79dSJohn Harrison  *
4977b6f79dSJohn Harrison  * _`GUC_KLV_SELF_CFG_H2G_CTB_SIZE` : 0x0904
5077b6f79dSJohn Harrison  *      Refers to size of H2G `CT Buffer`_ in bytes.
5177b6f79dSJohn Harrison  *      Should be a multiple of 4K.
5277b6f79dSJohn Harrison  *
5377b6f79dSJohn Harrison  * _`GUC_KLV_SELF_CFG_G2H_CTB_ADDR` : 0x0905
5477b6f79dSJohn Harrison  *      Refers to 64 bit Global Gfx address of G2H `CT Buffer`_.
5577b6f79dSJohn Harrison  *      Should be above WOPCM address but below APIC base address for native mode.
5677b6f79dSJohn Harrison  *
5777b6f79dSJohn Harrison  * _`GUC_KLV_SELF_CFG_G2H_CTB_DESCRIPTOR_ADDR` : 0x0906
5877b6f79dSJohn Harrison  *      Refers to 64 bit Global Gfx address of G2H `CTB Descriptor`_.
5977b6f79dSJohn Harrison  *      Should be above WOPCM address but below APIC base address for native mode.
6077b6f79dSJohn Harrison  *
6177b6f79dSJohn Harrison  * _`GUC_KLV_SELF_CFG_G2H_CTB_SIZE` : 0x0907
6277b6f79dSJohn Harrison  *      Refers to size of G2H `CT Buffer`_ in bytes.
6377b6f79dSJohn Harrison  *      Should be a multiple of 4K.
6477b6f79dSJohn Harrison  */
6577b6f79dSJohn Harrison 
6677b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_H2G_CTB_ADDR_KEY		0x0902
6777b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_H2G_CTB_ADDR_LEN		2u
6877b6f79dSJohn Harrison 
6977b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_H2G_CTB_DESCRIPTOR_ADDR_KEY	0x0903
7077b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_H2G_CTB_DESCRIPTOR_ADDR_LEN	2u
7177b6f79dSJohn Harrison 
7277b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_H2G_CTB_SIZE_KEY		0x0904
7377b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_H2G_CTB_SIZE_LEN		1u
7477b6f79dSJohn Harrison 
7577b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_G2H_CTB_ADDR_KEY		0x0905
7677b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_G2H_CTB_ADDR_LEN		2u
7777b6f79dSJohn Harrison 
7877b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_G2H_CTB_DESCRIPTOR_ADDR_KEY	0x0906
7977b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_G2H_CTB_DESCRIPTOR_ADDR_LEN	2u
8077b6f79dSJohn Harrison 
8177b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_G2H_CTB_SIZE_KEY		0x0907
8277b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_G2H_CTB_SIZE_LEN		1u
8377b6f79dSJohn Harrison 
842584b354SJohn Harrison /*
851e88da4fSJohn Harrison  * Global scheduling policy update keys.
861e88da4fSJohn Harrison  */
871e88da4fSJohn Harrison enum {
881e88da4fSJohn Harrison 	GUC_SCHEDULING_POLICIES_KLV_ID_RENDER_COMPUTE_YIELD	= 0x1001,
891e88da4fSJohn Harrison };
901e88da4fSJohn Harrison 
911e88da4fSJohn Harrison /*
922584b354SJohn Harrison  * Per context scheduling policy update keys.
932584b354SJohn Harrison  */
942584b354SJohn Harrison enum {
952584b354SJohn Harrison 	GUC_CONTEXT_POLICIES_KLV_ID_EXECUTION_QUANTUM			= 0x2001,
962584b354SJohn Harrison 	GUC_CONTEXT_POLICIES_KLV_ID_PREEMPTION_TIMEOUT			= 0x2002,
972584b354SJohn Harrison 	GUC_CONTEXT_POLICIES_KLV_ID_SCHEDULING_PRIORITY			= 0x2003,
982584b354SJohn Harrison 	GUC_CONTEXT_POLICIES_KLV_ID_PREEMPT_TO_IDLE_ON_QUANTUM_EXPIRY	= 0x2004,
992584b354SJohn Harrison 	GUC_CONTEXT_POLICIES_KLV_ID_SLPM_GT_FREQUENCY			= 0x2005,
1002584b354SJohn Harrison 
1012584b354SJohn Harrison 	GUC_CONTEXT_POLICIES_KLV_NUM_IDS = 5,
1022584b354SJohn Harrison };
1032584b354SJohn Harrison 
10477b6f79dSJohn Harrison #endif /* _ABI_GUC_KLVS_ABI_H */
105