diff options
Diffstat (limited to 'hifi/xaf/hifi-dpf/include/sys/xt-shmem/xf-shmem.h')
-rw-r--r-- | hifi/xaf/hifi-dpf/include/sys/xt-shmem/xf-shmem.h | 173 |
1 files changed, 0 insertions, 173 deletions
diff --git a/hifi/xaf/hifi-dpf/include/sys/xt-shmem/xf-shmem.h b/hifi/xaf/hifi-dpf/include/sys/xt-shmem/xf-shmem.h deleted file mode 100644 index 813bfb48..00000000 --- a/hifi/xaf/hifi-dpf/include/sys/xt-shmem/xf-shmem.h +++ /dev/null @@ -1,173 +0,0 @@ -/******************************************************************************* -* 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. - -******************************************************************************/ - -/******************************************************************************* - * xf-shmem.h - * - * Definitions for Xtensa SHMEM configuration - * - *******************************************************************************/ - -#ifndef __XF_H -#error "xf-shmem.h mustn't be included directly" -#endif - -/******************************************************************************* - * Memory structures - ******************************************************************************/ - -/* ...data managed by host CPU (remote) - in case of shunt it is a IPC layer */ -struct xf_proxy_host_data -{ - /* ...command queue */ - xf_proxy_message_t command[XF_PROXY_MESSAGE_QUEUE_LENGTH]; - - /* ...writing index into command queue */ - u32 cmd_write_idx; - - /* ...reading index for response queue */ - u32 rsp_read_idx; -#ifdef XAF_ENABLE_NON_HIKEY -} __attribute__((__packed__, __aligned__(XF_PROXY_ALIGNMENT))); -#else -}/* __attribute__((__packed__, __aligned__(XF_PROXY_ALIGNMENT)))*/; -#endif - -/* ...data managed by DSP (local) */ -struct xf_proxy_dsp_data -{ - /* ...response queue */ - xf_proxy_message_t response[XF_PROXY_MESSAGE_QUEUE_LENGTH]; - - /* ...writing index into response queue */ - u32 rsp_write_idx; - - /* ...reading index for command queue */ - u32 cmd_read_idx; -#ifdef XAF_ENABLE_NON_HIKEY -} __attribute__((__packed__, __aligned__(XF_PROXY_ALIGNMENT))); -#else -}/* __attribute__((__packed__, __aligned__(XF_PROXY_ALIGNMENT)))*/; -#endif -/* ...shared memory data */ -typedef struct xf_shmem_data -{ - /* ...outgoing data (maintained by host CPU (remote side)) */ -#ifdef XAF_ENABLE_NON_HIKEY - struct xf_proxy_host_data remote __xf_shmem__; - - /* ...ingoing data (maintained by DSP (local side)) */ - struct xf_proxy_dsp_data local __xf_shmem__; - - /* ...shared memory pool (page-aligned; why? we map memory to user-space) */ - u8 buffer[XF_CFG_REMOTE_IPC_POOL_SIZE] __attribute__((__aligned__(4096))); -#else - /* ...outgoing data (maintained by host CPU (remote side)) */ - struct xf_proxy_host_data remote/* __xf_shmem__*/; - - /* ...ingoing data (maintained by DSP (local side)) */ - struct xf_proxy_dsp_data local/* __xf_shmem__*/; - - /* ...shared memory pool (page-aligned; why? we map memory to user-space) */ - uint8_t* buffer; -#endif - -} xf_shmem_data_t; - -/******************************************************************************* - * Shared memory accessors - ******************************************************************************/ - -/* ...shared memory pointer for a core */ -#define XF_SHMEM_DATA(core) \ - ((xf_shmem_data_t *)XF_CORE_DATA(core)->shmem) - -/* ...atomic reading */ -#define XF_PROXY_READ_ATOMIC(var) \ - ({ XF_PROXY_INVALIDATE(&(var), sizeof(var)); (var); }) - -/* ...atomic writing */ -#define XF_PROXY_WRITE_ATOMIC(var, value) \ - ({(var) = (value); XF_PROXY_FLUSH(&(var), sizeof(var)); (value); }) - -/* ...accessors */ -#define XF_PROXY_READ(core, field) \ - __XF_PROXY_READ_##field(XF_SHMEM_DATA(core)) - -#define XF_PROXY_WRITE(core, field, v) \ - __XF_PROXY_WRITE_##field(XF_SHMEM_DATA(core), (v)) - -/* ...individual fields accessors */ -#define __XF_PROXY_READ_cmd_write_idx(proxy) \ - XF_PROXY_READ_ATOMIC(proxy->remote.cmd_write_idx) - -#define __XF_PROXY_READ_cmd_read_idx(proxy) \ - proxy->local.cmd_read_idx - -#define __XF_PROXY_READ_rsp_write_idx(proxy) \ - proxy->local.rsp_write_idx - -#define __XF_PROXY_READ_rsp_read_idx(proxy) \ - XF_PROXY_READ_ATOMIC(proxy->remote.rsp_read_idx) - -/* ...individual fields accessors */ -#define __XF_PROXY_WRITE_cmd_write_idx(proxy, v) \ - XF_PROXY_WRITE_ATOMIC(proxy->remote.cmd_write_idx, v) - -#define __XF_PROXY_WRITE_cmd_read_idx(proxy, v) \ - XF_PROXY_WRITE_ATOMIC(proxy->local.cmd_read_idx, v) - -#define __XF_PROXY_WRITE_rsp_read_idx(proxy, v) \ - XF_PROXY_WRITE_ATOMIC(proxy->remote.rsp_read_idx, v) - -#define __XF_PROXY_WRITE_rsp_write_idx(proxy, v) \ - XF_PROXY_WRITE_ATOMIC(proxy->local.rsp_write_idx, v) - -/* ...command buffer accessor */ -#define XF_PROXY_COMMAND(core, idx) \ - (&XF_SHMEM_DATA((core))->remote.command[(idx)]) - -/* ...response buffer accessor */ -#define XF_PROXY_RESPONSE(core, idx) \ - (&XF_SHMEM_DATA((core))->local.response[(idx)]) - -/******************************************************************************* - * Platform-specific SHMEM enable status - ******************************************************************************/ - -static inline int xf_shmem_enabled(u32 core) -{ - return (core == 0); -} - -/******************************************************************************* - * API functions - ******************************************************************************/ - -/* ...process shared memory interface on given DSP core */ -extern void xf_shmem_process_queues(u32 core); - -/* ...completion callback for message originating from remote proxy */ -extern void xf_msg_proxy_complete(xf_message_t *m); - -/* ...initialize shared memory interface (DSP side) */ -extern int xf_shmem_init(u32 core); |