hikey960: HiFi3 host side XAF framework

Xtensa Audio Framework in user space to offload audio tasks to HiFi3 DSP.
It provides few API's to invoke DSP and to perform ogg audio decoding,
post processing (PCM Gain) as well it provides adb shell-based
"xaf-dec-test" and "xaf-dec-mix-test" binaries to perform pcm and ogg
file playback

Change-Id: I77ac3b56d4141f41e06f0d0eac4ac3a8ee567e8d
Signed-off-by: Niranjan Yadla <nyadla@cadence.com>
diff --git a/hifi/xaf/host-apf/include/xaf-structs.h b/hifi/xaf/host-apf/include/xaf-structs.h
new file mode 100644
index 0000000..f632600
--- /dev/null
+++ b/hifi/xaf/host-apf/include/xaf-structs.h
@@ -0,0 +1,82 @@
+/*******************************************************************************
+* Copyright (C) 2018 Cadence Design Systems, Inc.
+* 
+* Permission is hereby granted, free of charge, to any person obtaining
+* a copy of this software and associated documentation files (the
+* "Software"), to use this Software with Cadence processor cores only and 
+* not with any other processors and platforms, subject to
+* the following conditions:
+* 
+* The above copyright notice and this permission notice shall be included
+* in all copies or substantial portions of the Software.
+* 
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************************/
+
+/* ...size of auxiliary pool for communication with HiFi */
+#define XAF_AUX_POOL_SIZE                   32
+
+/* ...length of auxiliary pool messages */
+#define XAF_AUX_POOL_MSG_LENGTH             128
+#define XAF_MAX_CONFIG_PARAMS               (XAF_AUX_POOL_MSG_LENGTH >> 3)
+
+typedef struct xaf_comp xaf_comp_t;
+
+struct xaf_comp {
+    xf_handle_t     handle;     
+
+    u32             inp_routed;
+    u32             out_routed;
+    u32             inp_ports;
+    u32             out_ports;
+    u32             init_done;
+    u32             pending_resp;
+    u32             expect_out_cmd;
+    u32             input_over;
+
+    xaf_comp_type   comp_type;
+    xaf_comp_status comp_status;
+    u32             start_cmd_issued;
+    u32             exec_cmd_issued;
+    void            *start_buf;
+
+    xaf_format_t    inp_format;
+    xaf_format_t    out_format;
+
+    xf_pool_t       *inpool;
+    xf_pool_t       *outpool;
+    u32             noutbuf;
+
+    xaf_comp_t      *next;
+
+    u32             ninbuf;
+    void            *p_adev;
+    //xaf_comp_state  comp_state;
+    void           *comp_ptr; 
+};
+
+typedef struct xaf_adev_s {
+    xf_proxy_t      proxy;
+    xaf_comp_t      *comp_chain;  
+
+    u32   n_comp;
+    void *adev_ptr;
+    void *p_dspMem;
+    void *p_apMem;
+    void *p_dspLocalBuff;
+    void *p_apSharedMem;
+
+    xaf_ap_utils_t  *p_ap_utils; //host-side utility structure handle
+    void  *(*pxf_mem_malloc_fxn)(s32, s32);
+    void  (*pxf_mem_free_fxn)(void *,s32);
+    //xaf_adev_state  adev_state;
+
+} xaf_adev_t;
+