xref: /rk3399_ARM-atf/drivers/arm/rse/rse_comms_protocol_common.h (revision 955116982f5bfb6803b1961eda5fa24ab7886419)
1*95511698STamas Ban /*
2*95511698STamas Ban  * Copyright (c) 2024, Arm Limited. All rights reserved.
3*95511698STamas Ban  *
4*95511698STamas Ban  * SPDX-License-Identifier: BSD-3-Clause
5*95511698STamas Ban  *
6*95511698STamas Ban  */
7*95511698STamas Ban 
8*95511698STamas Ban /*
9*95511698STamas Ban  * Packing scheme of the control parameter
10*95511698STamas Ban  *
11*95511698STamas Ban  *  31           30-28   27    26-24  23-20   19     18-16   15-0
12*95511698STamas Ban  * +------------+-----+------+-------+-----+-------+-------+------+
13*95511698STamas Ban  * |            |     |      | invec |     |       | outvec| type |
14*95511698STamas Ban  * | Res        | Res | Res  | number| Res | Res   | number|      |
15*95511698STamas Ban  * +------------+-----+------+-------+-----+-------+-------+------+
16*95511698STamas Ban  *
17*95511698STamas Ban  * Res: Reserved.
18*95511698STamas Ban  */
19*95511698STamas Ban 
20*95511698STamas Ban #ifndef RSS_COMMS_PROTOCOL_COMMON
21*95511698STamas Ban #define RSS_COMMS_PROTOCOL_COMMON
22*95511698STamas Ban 
23*95511698STamas Ban #define TYPE_OFFSET	(0U)
24*95511698STamas Ban #define TYPE_MASK	(0xFFFFUL << TYPE_OFFSET)
25*95511698STamas Ban #define IN_LEN_OFFSET	(24U)
26*95511698STamas Ban #define IN_LEN_MASK	(0x7UL << IN_LEN_OFFSET)
27*95511698STamas Ban #define OUT_LEN_OFFSET	(16U)
28*95511698STamas Ban #define OUT_LEN_MASK	(0x7UL << OUT_LEN_OFFSET)
29*95511698STamas Ban 
30*95511698STamas Ban #define PARAM_PACK(type, in_len, out_len)			   \
31*95511698STamas Ban 	(((((uint32_t)(type)) << TYPE_OFFSET) & TYPE_MASK)	 | \
32*95511698STamas Ban 	 ((((uint32_t)(in_len)) << IN_LEN_OFFSET) & IN_LEN_MASK) | \
33*95511698STamas Ban 	 ((((uint32_t)(out_len)) << OUT_LEN_OFFSET) & OUT_LEN_MASK))
34*95511698STamas Ban 
35*95511698STamas Ban #endif /* RSS_COMMS_PROTOCOL_COMMON */
36