blob: 5cebb4304f395813d8736dee93ca390697c3dc6e [file] [log] [blame]
Niranjan Yadlacee816e2018-04-19 12:03:47 -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/* ...number of max input buffers */
25#define XAF_MAX_INBUFS 2
26#define XAF_INBUF_SIZE 8192
27
28typedef enum {
29 XAF_DECODER = 0,
30 XAF_ENCODER = 1,
31 XAF_MIXER = 2,
32 XAF_PRE_PROC = 3,
33 XAF_POST_PROC = 4,
34} xaf_comp_type;
35
36typedef enum {
37 XAF_STARTING = 0,
38 XAF_INIT_DONE = 1,
39 XAF_NEED_INPUT = 2,
40 XAF_OUTPUT_READY = 3,
41 XAF_EXEC_DONE = 4,
42} xaf_comp_status;
43
44typedef enum {
45 XAF_START_FLAG = 1,
46 XAF_EXEC_FLAG = 2,
47 XAF_INPUT_OVER_FLAG = 3,
48 XAF_INPUT_READY_FLAG = 4,
49 XAF_NEED_OUTPUT_FLAG = 5,
50} xaf_comp_flag;
51
52typedef enum {
53 XAF_NO_ERROR = 0,
54 XAF_PTR_ERROR = -1,
55 XAF_INVALID_VALUE = -2,
56 XAF_ROUTING_ERROR = -3,
57 /*XAF_XOS_ERROR = -4,*/
58 XAF_API_ERR = -5,
59} XAF_ERR_CODE;
60
61typedef enum {
62 XAF_MEM_ID_DEV = 0,
63 XAF_MEM_ID_COMP = 1,
64} XAF_MEM_ID;
65
66/* structure for component memory sizes */
67typedef struct xaf_mem_size_s{
68 u32 persist;
69 u32 scratch;
70 u32 input;
71 u32 output;
72}xaf_mem_size_t;
73
74/* structure for host-side utility handles */
75typedef struct xaf_ap_utils_s{
76 int xf_cfg_remote_ipc_pool_size;
77 xaf_mem_size_t mem_size;
78}xaf_ap_utils_t;
79
80typedef struct xaf_format_s {
81 u32 sample_rate;
82 u32 channels;
83 u32 pcm_width;
84 u32 input_length;
85 u32 output_length;
86} xaf_format_t;
87
88#ifndef XAF_HOSTLESS
89typedef struct xaf_info_s {
90 void * buf;
91 u32 length;
92} xaf_info_t;
93#endif
94
95XAF_ERR_CODE xaf_adev_open(void **pp_adev, s32 audio_frmwk_buf_size, s32 audio_comp_buf_size, xaf_mem_malloc_fxn_t mm_malloc, xaf_mem_free_fxn_t mm_free);
96XAF_ERR_CODE xaf_adev_close(void *adev_ptr, xaf_comp_flag flag);
97
98XAF_ERR_CODE xaf_comp_create(void* p_adev, void **p_comp, xf_id_t comp_id, u32 ninbuf, u32 noutbuf, void *pp_inbuf[], xaf_comp_type comp_type);
99XAF_ERR_CODE xaf_comp_delete(void* p_comp);
100XAF_ERR_CODE xaf_comp_set_config(void *p_comp, s32 num_param, s32 *p_param);
101XAF_ERR_CODE xaf_comp_get_config(void *p_comp, s32 num_param, s32 *p_param);
102XAF_ERR_CODE xaf_comp_process(void *p_adev, void *p_comp, void *p_buf, u32 length, xaf_comp_flag flag);
103XAF_ERR_CODE xaf_connect(void *p_src, void *p_dest, s32 num_buf);
104
105/* Not available in this version yet.
106XAF_ERR_CODE xaf_disconnect(xaf_comp_t *p_comp);
107*/
108
109XAF_ERR_CODE xaf_comp_get_status(void *p_adev, void *p_comp, xaf_comp_status *p_status, xaf_info_t *p_info);
110
111/* ...check null pointer */
112#define XAF_CHK_PTR(ptr) \
113({ \
114 int __ret; \
115 \
116 if ((__ret = (int)(ptr)) == 0) \
117 { \
118 TRACE(ERROR, _x("Null pointer error: %d"), __ret); \
119 return XAF_PTR_ERROR; \
120 } \
121 __ret; \
122})
123
124/* ...check range */
125#define XAF_CHK_RANGE(val, min, max) \
126({ \
127 int __ret = val; \
128 \
129 if ((__ret < (int)min) || (__ret > (int)max)) \
130 { \
131 TRACE(ERROR, _x("Invalid value: %d"), __ret); \
132 return XAF_INVALID_VALUE; \
133 } \
134 __ret; \
135})
136
137
138
139