1 /******************************************************************************* 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 28 typedef 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 36 typedef 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 44 typedef 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 52 typedef 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 61 typedef enum { 62 XAF_MEM_ID_DEV = 0, 63 XAF_MEM_ID_COMP = 1, 64 } XAF_MEM_ID; 65 66 /* structure for component memory sizes */ 67 typedef 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 */ 75 typedef 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 80 typedef 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 89 typedef struct xaf_info_s { 90 void * buf; 91 u32 length; 92 } xaf_info_t; 93 #endif 94 95 XAF_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); 96 XAF_ERR_CODE xaf_adev_close(void *adev_ptr, xaf_comp_flag flag); 97 98 XAF_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); 99 XAF_ERR_CODE xaf_comp_delete(void* p_comp); 100 XAF_ERR_CODE xaf_comp_set_config(void *p_comp, s32 num_param, s32 *p_param); 101 XAF_ERR_CODE xaf_comp_get_config(void *p_comp, s32 num_param, s32 *p_param); 102 XAF_ERR_CODE xaf_comp_process(void *p_adev, void *p_comp, void *p_buf, u32 length, xaf_comp_flag flag); 103 XAF_ERR_CODE xaf_connect(void *p_src, void *p_dest, s32 num_buf); 104 105 /* Not available in this version yet. 106 XAF_ERR_CODE xaf_disconnect(xaf_comp_t *p_comp); 107 */ 108 109 XAF_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 140