blob: 0260749ce323dd36261be4e233e18aad6ecd1c61 [file] [log] [blame]
Niranjan Yadla19336af2018-04-19 12:19:27 -07001/*******************************************************************************
2* Copyright (C) 2018 Cadence Design Systems, Inc.
3*
4* Permission is hereby granted, free of charge, to any person obtaining
5* a copy of this software and associated documentation files (the
6* "Software"), to use this Software with Cadence processor cores only and
7* not with any other processors and platforms, subject to
8* the following conditions:
9*
10* The above copyright notice and this permission notice shall be included
11* in all copies or substantial portions of the Software.
12*
13* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
15* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
16* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
17* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
18* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
19* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
21******************************************************************************/
22
23/*******************************************************************************
24 * xf-proxy.h
25 *
26 * Proxy commmand/response messages
27 *
28 *******************************************************************************/
29
30#ifndef __XF_H
31#error "xf-proxy.h mustn't be included directly"
32#endif
33
34/*******************************************************************************
35 * Types definitions
36 ******************************************************************************/
37#ifdef XAF_ENABLE_NON_HIKEY
38/* ...command/response message */
39typedef struct xf_proxy_message
40{
41 /* ...session ID */
Niranjan Yadla817858b2018-05-08 11:21:23 -070042 uint32_t session_id;
Niranjan Yadla19336af2018-04-19 12:19:27 -070043
44 /* ...proxy API command/reponse code */
Niranjan Yadla817858b2018-05-08 11:21:23 -070045 uint32_t opcode;
Niranjan Yadla19336af2018-04-19 12:19:27 -070046
47 /* ...length of attached buffer */
Niranjan Yadla817858b2018-05-08 11:21:23 -070048 uint32_t length;
Niranjan Yadla19336af2018-04-19 12:19:27 -070049
50 /* ...physical address of message buffer */
Niranjan Yadla817858b2018-05-08 11:21:23 -070051 uint64_t address;
52 uint64_t v_address;
Niranjan Yadla19336af2018-04-19 12:19:27 -070053
54} __attribute__((__packed__)) xf_proxy_message_t;
55#else
56/* ...command/response message */
57typedef struct xf_proxy_message
58{
59 /* ...session ID */
60 uint32_t session_id;
61
62 /* ...proxy API command/reponse code */
63 uint32_t opcode;
64
65 /* ...length of attached buffer */
66 uint32_t length;
67
68 /* ...physical address of message buffer */
69 uint64_t address;
70 uint64_t v_address;
71
Niranjan Yadla817858b2018-05-08 11:21:23 -070072} __attribute__((__packed__)) xf_proxy_message_t;
Niranjan Yadla19336af2018-04-19 12:19:27 -070073#endif
74/*******************************************************************************
75 * Ring buffer support
76 ******************************************************************************/
77
78/* ...total length of shared memory queue (for commands and responses) */
79#define XF_PROXY_MESSAGE_QUEUE_LENGTH (1 << 8)
80
81/* ...index mask */
82#define XF_PROXY_MESSAGE_QUEUE_MASK 0xFF
83
84/* ...ring-buffer index */
85#define __XF_QUEUE_IDX(idx, counter) \
86 (((idx) & XF_PROXY_MESSAGE_QUEUE_MASK) | ((counter) << 16))
87
88/* ...retrieve ring-buffer index */
89#define XF_QUEUE_IDX(idx) \
90 ((idx) & XF_PROXY_MESSAGE_QUEUE_MASK)
91
92/* ...increment ring-buffer index */
93#define XF_QUEUE_ADVANCE_IDX(idx) \
94 (((idx) + 0x10001) & (0xFFFF0000 | XF_PROXY_MESSAGE_QUEUE_MASK))
95
96/* ...test if ring buffer is empty */
97#define XF_QUEUE_EMPTY(read, write) \
98 ((read) == (write))
99
100/* ...test if ring buffer is full */
101#define XF_QUEUE_FULL(read, write) \
102 ((write) == (read) + (XF_PROXY_MESSAGE_QUEUE_LENGTH << 16))