|
17 | 17 | #include <stdint.h> |
18 | 18 | #include <errno.h> |
19 | 19 |
|
| 20 | +/* The composition and offset of scmi messages */ |
| 21 | +#define SCMI_MSGID_SHIFT 0 |
| 22 | +#define SCMI_MSGID_MASK GENMASK(7, 0) |
| 23 | + |
| 24 | +#define SCMI_TYPE_SHIFT 8 |
| 25 | +#define SCMI_TYPE_MASK GENMASK(1, 0) |
| 26 | + |
| 27 | +#define SCMI_PROTOCOL_SHIFT 10 |
| 28 | +#define SCMI_PROTOCOL_MASK GENMASK(7, 0) |
| 29 | + |
| 30 | +#define SCMI_TOKEN_SHIFT 18 |
| 31 | +#define SCMI_TOKEN_MASK GENMASK(9, 0) |
| 32 | + |
20 | 33 | /** |
21 | 34 | * @brief Build an SCMI message header |
22 | 35 | * |
|
28 | 41 | * @param proto protocol ID |
29 | 42 | * @param token message token |
30 | 43 | */ |
31 | | -#define SCMI_MESSAGE_HDR_MAKE(id, type, proto, token) \ |
32 | | - (SCMI_FIELD_MAKE(id, GENMASK(7, 0), 0) | \ |
33 | | - SCMI_FIELD_MAKE(type, GENMASK(1, 0), 8) | \ |
34 | | - SCMI_FIELD_MAKE(proto, GENMASK(7, 0), 10) | \ |
35 | | - SCMI_FIELD_MAKE(token, GENMASK(9, 0), 18)) |
| 44 | +#define SCMI_MESSAGE_HDR_MAKE(id, type, proto, token) \ |
| 45 | + (SCMI_FIELD_MAKE((id), SCMI_MSGID_MASK, SCMI_MSGID_SHIFT) | \ |
| 46 | + SCMI_FIELD_MAKE((type), SCMI_TYPE_MASK, SCMI_TYPE_SHIFT) | \ |
| 47 | + SCMI_FIELD_MAKE((proto), SCMI_PROTOCOL_MASK, SCMI_PROTOCOL_SHIFT) | \ |
| 48 | + SCMI_FIELD_MAKE((token), SCMI_TOKEN_MASK, SCMI_TOKEN_SHIFT)) |
| 49 | + |
| 50 | +/** |
| 51 | + * @brief Extract a field from SCMI message header |
| 52 | + * @param hdr the 32-bit SCMI message header |
| 53 | + * @param FIELD one of: MSGID, TYPE, PROTOCOL, TOKEN |
| 54 | + */ |
| 55 | +#define SCMI_MESSAGE_HDR_TAKE(hdr, FIELD) \ |
| 56 | + SCMI_FIELD_TAKE((hdr), SCMI_##FIELD##_MASK, SCMI_##FIELD##_SHIFT) |
| 57 | + |
| 58 | +#define SCMI_MESSAGE_HDR_TAKE_MSGID(hdr) SCMI_MESSAGE_HDR_TAKE(hdr, MSGID) |
| 59 | +#define SCMI_MESSAGE_HDR_TAKE_TYPE(hdr) SCMI_MESSAGE_HDR_TAKE(hdr, TYPE) |
| 60 | +#define SCMI_MESSAGE_HDR_TAKE_PROTOCOL(hdr) SCMI_MESSAGE_HDR_TAKE(hdr, PROTOCOL) |
| 61 | +#define SCMI_MESSAGE_HDR_TAKE_TOKEN(hdr) SCMI_MESSAGE_HDR_TAKE(hdr, TOKEN) |
36 | 62 |
|
37 | 63 | struct scmi_channel; |
38 | 64 |
|
|
0 commit comments