brintos

brintos / linux-shallow public Read only

0
0
Text · 13.2 KiB · f6ed4df Raw
252 lines · c
1/* SPDX-License-Identifier: MIT */2/*3 * Copyright © 2014-2021 Intel Corporation4 */5 6#ifndef _ABI_GUC_MESSAGES_ABI_H7#define _ABI_GUC_MESSAGES_ABI_H8 9/**10 * DOC: HXG Message11 *12 * All messages exchanged with GuC are defined using 32 bit dwords.13 * First dword is treated as a message header. Remaining dwords are optional.14 *15 *  +---+-------+--------------------------------------------------------------+16 *  |   | Bits  | Description                                                  |17 *  +===+=======+==============================================================+18 *  |   |       |                                                              |19 *  | 0 |    31 | **ORIGIN** - originator of the message                       |20 *  |   |       |   - _`GUC_HXG_ORIGIN_HOST` = 0                               |21 *  |   |       |   - _`GUC_HXG_ORIGIN_GUC` = 1                                |22 *  |   |       |                                                              |23 *  |   +-------+--------------------------------------------------------------+24 *  |   | 30:28 | **TYPE** - message type                                      |25 *  |   |       |   - _`GUC_HXG_TYPE_REQUEST` = 0                              |26 *  |   |       |   - _`GUC_HXG_TYPE_EVENT` = 1                                |27 *  |   |       |   - _`GUC_HXG_TYPE_FAST_REQUEST` = 2                         |28 *  |   |       |   - _`GUC_HXG_TYPE_NO_RESPONSE_BUSY` = 3                     |29 *  |   |       |   - _`GUC_HXG_TYPE_NO_RESPONSE_RETRY` = 5                    |30 *  |   |       |   - _`GUC_HXG_TYPE_RESPONSE_FAILURE` = 6                     |31 *  |   |       |   - _`GUC_HXG_TYPE_RESPONSE_SUCCESS` = 7                     |32 *  |   +-------+--------------------------------------------------------------+33 *  |   |  27:0 | **AUX** - auxiliary data (depends on TYPE)                   |34 *  +---+-------+--------------------------------------------------------------+35 *  | 1 |  31:0 |                                                              |36 *  +---+-------+                                                              |37 *  |...|       | **PAYLOAD** - optional payload (depends on TYPE)             |38 *  +---+-------+                                                              |39 *  | n |  31:0 |                                                              |40 *  +---+-------+--------------------------------------------------------------+41 */42 43#define GUC_HXG_MSG_MIN_LEN			1u44#define GUC_HXG_MSG_0_ORIGIN			(0x1u << 31)45#define   GUC_HXG_ORIGIN_HOST			0u46#define   GUC_HXG_ORIGIN_GUC			1u47#define GUC_HXG_MSG_0_TYPE			(0x7u << 28)48#define   GUC_HXG_TYPE_REQUEST			0u49#define   GUC_HXG_TYPE_EVENT			1u50#define   GUC_HXG_TYPE_FAST_REQUEST		2u51#define   GUC_HXG_TYPE_NO_RESPONSE_BUSY		3u52#define   GUC_HXG_TYPE_NO_RESPONSE_RETRY	5u53#define   GUC_HXG_TYPE_RESPONSE_FAILURE		6u54#define   GUC_HXG_TYPE_RESPONSE_SUCCESS		7u55#define GUC_HXG_MSG_0_AUX			(0xfffffffu << 0)56#define GUC_HXG_MSG_n_PAYLOAD			(0xffffffffu << 0)57 58/**59 * DOC: HXG Request60 *61 * The `HXG Request`_ message should be used to initiate synchronous activity62 * for which confirmation or return data is expected.63 *64 * The recipient of this message shall use `HXG Response`_, `HXG Failure`_65 * or `HXG Retry`_ message as a definite reply, and may use `HXG Busy`_66 * message as a intermediate reply.67 *68 * Format of @DATA0 and all @DATAn fields depends on the @ACTION code.69 *70 *  +---+-------+--------------------------------------------------------------+71 *  |   | Bits  | Description                                                  |72 *  +===+=======+==============================================================+73 *  | 0 |    31 | ORIGIN                                                       |74 *  |   +-------+--------------------------------------------------------------+75 *  |   | 30:28 | TYPE = GUC_HXG_TYPE_REQUEST_                                 |76 *  |   +-------+--------------------------------------------------------------+77 *  |   | 27:16 | **DATA0** - request data (depends on ACTION)                 |78 *  |   +-------+--------------------------------------------------------------+79 *  |   |  15:0 | **ACTION** - requested action code                           |80 *  +---+-------+--------------------------------------------------------------+81 *  | 1 |  31:0 |                                                              |82 *  +---+-------+                                                              |83 *  |...|       | **DATAn** - optional data (depends on ACTION)                |84 *  +---+-------+                                                              |85 *  | n |  31:0 |                                                              |86 *  +---+-------+--------------------------------------------------------------+87 */88 89#define GUC_HXG_REQUEST_MSG_MIN_LEN		GUC_HXG_MSG_MIN_LEN90#define GUC_HXG_REQUEST_MSG_0_DATA0		(0xfffu << 16)91#define GUC_HXG_REQUEST_MSG_0_ACTION		(0xffffu << 0)92#define GUC_HXG_REQUEST_MSG_n_DATAn		GUC_HXG_MSG_n_PAYLOAD93 94/**95 * DOC: HXG Fast Request96 *97 * The `HXG Request`_ message should be used to initiate asynchronous activity98 * for which confirmation or return data is not expected.99 *100 * If confirmation is required then `HXG Request`_ shall be used instead.101 *102 * The recipient of this message may only use `HXG Failure`_ message if it was103 * unable to accept this request (like invalid data).104 *105 * Format of `HXG Fast Request`_ message is same as `HXG Request`_ except @TYPE.106 *107 *  +---+-------+--------------------------------------------------------------+108 *  |   | Bits  | Description                                                  |109 *  +===+=======+==============================================================+110 *  | 0 |    31 | ORIGIN - see `HXG Message`_                                  |111 *  |   +-------+--------------------------------------------------------------+112 *  |   | 30:28 | TYPE = `GUC_HXG_TYPE_FAST_REQUEST`_                          |113 *  |   +-------+--------------------------------------------------------------+114 *  |   | 27:16 | DATA0 - see `HXG Request`_                                   |115 *  |   +-------+--------------------------------------------------------------+116 *  |   |  15:0 | ACTION - see `HXG Request`_                                  |117 *  +---+-------+--------------------------------------------------------------+118 *  |...|       | DATAn - see `HXG Request`_                                   |119 *  +---+-------+--------------------------------------------------------------+120 */121 122/**123 * DOC: HXG Event124 *125 * The `HXG Event`_ message should be used to initiate asynchronous activity126 * that does not involves immediate confirmation nor data.127 *128 * Format of @DATA0 and all @DATAn fields depends on the @ACTION code.129 *130 *  +---+-------+--------------------------------------------------------------+131 *  |   | Bits  | Description                                                  |132 *  +===+=======+==============================================================+133 *  | 0 |    31 | ORIGIN                                                       |134 *  |   +-------+--------------------------------------------------------------+135 *  |   | 30:28 | TYPE = GUC_HXG_TYPE_EVENT_                                   |136 *  |   +-------+--------------------------------------------------------------+137 *  |   | 27:16 | **DATA0** - event data (depends on ACTION)                   |138 *  |   +-------+--------------------------------------------------------------+139 *  |   |  15:0 | **ACTION** - event action code                               |140 *  +---+-------+--------------------------------------------------------------+141 *  | 1 |  31:0 |                                                              |142 *  +---+-------+                                                              |143 *  |...|       | **DATAn** - optional event  data (depends on ACTION)         |144 *  +---+-------+                                                              |145 *  | n |  31:0 |                                                              |146 *  +---+-------+--------------------------------------------------------------+147 */148 149#define GUC_HXG_EVENT_MSG_MIN_LEN		GUC_HXG_MSG_MIN_LEN150#define GUC_HXG_EVENT_MSG_0_DATA0		(0xfffu << 16)151#define GUC_HXG_EVENT_MSG_0_ACTION		(0xffffu << 0)152#define GUC_HXG_EVENT_MSG_n_DATAn		GUC_HXG_MSG_n_PAYLOAD153 154/**155 * DOC: HXG Busy156 *157 * The `HXG Busy`_ message may be used to acknowledge reception of the `HXG Request`_158 * message if the recipient expects that it processing will be longer than default159 * timeout.160 *161 * The @COUNTER field may be used as a progress indicator.162 *163 *  +---+-------+--------------------------------------------------------------+164 *  |   | Bits  | Description                                                  |165 *  +===+=======+==============================================================+166 *  | 0 |    31 | ORIGIN                                                       |167 *  |   +-------+--------------------------------------------------------------+168 *  |   | 30:28 | TYPE = GUC_HXG_TYPE_NO_RESPONSE_BUSY_                        |169 *  |   +-------+--------------------------------------------------------------+170 *  |   |  27:0 | **COUNTER** - progress indicator                             |171 *  +---+-------+--------------------------------------------------------------+172 */173 174#define GUC_HXG_BUSY_MSG_LEN			GUC_HXG_MSG_MIN_LEN175#define GUC_HXG_BUSY_MSG_0_COUNTER		GUC_HXG_MSG_0_AUX176 177/**178 * DOC: HXG Retry179 *180 * The `HXG Retry`_ message should be used by recipient to indicate that the181 * `HXG Request`_ message was dropped and it should be resent again.182 *183 * The @REASON field may be used to provide additional information.184 *185 *  +---+-------+--------------------------------------------------------------+186 *  |   | Bits  | Description                                                  |187 *  +===+=======+==============================================================+188 *  | 0 |    31 | ORIGIN                                                       |189 *  |   +-------+--------------------------------------------------------------+190 *  |   | 30:28 | TYPE = GUC_HXG_TYPE_NO_RESPONSE_RETRY_                       |191 *  |   +-------+--------------------------------------------------------------+192 *  |   |  27:0 | **REASON** - reason for retry                                |193 *  |   |       |  - _`GUC_HXG_RETRY_REASON_UNSPECIFIED` = 0                   |194 *  +---+-------+--------------------------------------------------------------+195 */196 197#define GUC_HXG_RETRY_MSG_LEN			GUC_HXG_MSG_MIN_LEN198#define GUC_HXG_RETRY_MSG_0_REASON		GUC_HXG_MSG_0_AUX199#define   GUC_HXG_RETRY_REASON_UNSPECIFIED	0u200 201/**202 * DOC: HXG Failure203 *204 * The `HXG Failure`_ message shall be used as a reply to the `HXG Request`_205 * message that could not be processed due to an error.206 *207 *  +---+-------+--------------------------------------------------------------+208 *  |   | Bits  | Description                                                  |209 *  +===+=======+==============================================================+210 *  | 0 |    31 | ORIGIN                                                       |211 *  |   +-------+--------------------------------------------------------------+212 *  |   | 30:28 | TYPE = GUC_HXG_TYPE_RESPONSE_FAILURE_                        |213 *  |   +-------+--------------------------------------------------------------+214 *  |   | 27:16 | **HINT** - additional error hint                             |215 *  |   +-------+--------------------------------------------------------------+216 *  |   |  15:0 | **ERROR** - error/result code                                |217 *  +---+-------+--------------------------------------------------------------+218 */219 220#define GUC_HXG_FAILURE_MSG_LEN			GUC_HXG_MSG_MIN_LEN221#define GUC_HXG_FAILURE_MSG_0_HINT		(0xfffu << 16)222#define GUC_HXG_FAILURE_MSG_0_ERROR		(0xffffu << 0)223 224/**225 * DOC: HXG Response226 *227 * The `HXG Response`_ message shall be used as a reply to the `HXG Request`_228 * message that was successfully processed without an error.229 *230 *  +---+-------+--------------------------------------------------------------+231 *  |   | Bits  | Description                                                  |232 *  +===+=======+==============================================================+233 *  | 0 |    31 | ORIGIN                                                       |234 *  |   +-------+--------------------------------------------------------------+235 *  |   | 30:28 | TYPE = GUC_HXG_TYPE_RESPONSE_SUCCESS_                        |236 *  |   +-------+--------------------------------------------------------------+237 *  |   |  27:0 | **DATA0** - data (depends on ACTION from `HXG Request`_)     |238 *  +---+-------+--------------------------------------------------------------+239 *  | 1 |  31:0 |                                                              |240 *  +---+-------+                                                              |241 *  |...|       | **DATAn** - data (depends on ACTION from `HXG Request`_)     |242 *  +---+-------+                                                              |243 *  | n |  31:0 |                                                              |244 *  +---+-------+--------------------------------------------------------------+245 */246 247#define GUC_HXG_RESPONSE_MSG_MIN_LEN		GUC_HXG_MSG_MIN_LEN248#define GUC_HXG_RESPONSE_MSG_0_DATA0		GUC_HXG_MSG_0_AUX249#define GUC_HXG_RESPONSE_MSG_n_DATAn		GUC_HXG_MSG_n_PAYLOAD250 251#endif252