summaryrefslogtreecommitdiff
path: root/sound/soc/fsl/fsl_dsp_library_load.h
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/fsl/fsl_dsp_library_load.h')
-rw-r--r--sound/soc/fsl/fsl_dsp_library_load.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/sound/soc/fsl/fsl_dsp_library_load.h b/sound/soc/fsl/fsl_dsp_library_load.h
new file mode 100644
index 000000000000..8c14dda20b27
--- /dev/null
+++ b/sound/soc/fsl/fsl_dsp_library_load.h
@@ -0,0 +1,92 @@
+// SPDX-License-Identifier: GPL-2.0+
+// Copyright 2018 NXP
+// Copyright (c) 2012-2013 by Tensilica Inc.
+
+#ifndef FSL_DSP_LIBRARY_LOAD_H
+#define FSL_DSP_LIBRARY_LOAD_H
+
+#include "fsl_dsp_pool.h"
+
+#define Elf32_Byte unsigned char
+#define xt_ptr unsigned long
+#define xt_int int
+#define xt_uint unsigned int
+#define xt_ulong unsigned long
+
+struct xtlib_packaged_library;
+
+enum {
+ XTLIB_NO_ERR = 0,
+ XTLIB_NOT_ELF = 1,
+ XTLIB_NOT_DYNAMIC = 2,
+ XTLIB_NOT_STATIC = 3,
+ XTLIB_NO_DYNAMIC_SEGMENT = 4,
+ XTLIB_UNKNOWN_SYMBOL = 5,
+ XTLIB_NOT_ALIGNED = 6,
+ XTLIB_NOT_SPLITLOAD = 7,
+ XTLIB_RELOCATION_ERR = 8
+};
+
+enum lib_type {
+ DSP_CODEC_LIB = 1,
+ DSP_CODEC_WRAP_LIB
+};
+
+struct xtlib_loader_globals {
+ int err;
+ int byteswap;
+};
+
+struct xtlib_pil_info {
+ xt_uint dst_addr;
+ xt_uint src_offs;
+ xt_uint dst_data_addr;
+ xt_uint src_data_offs;
+ xt_uint start_sym;
+ xt_uint text_addr;
+ xt_uint init;
+ xt_uint fini;
+ xt_uint rel;
+ xt_int rela_count;
+ xt_uint hash;
+ xt_uint symtab;
+ xt_uint strtab;
+ xt_int align;
+};
+
+struct icm_xtlib_pil_info {
+ struct xtlib_pil_info pil_info;
+ unsigned int lib_type;
+};
+
+struct lib_dnld_info_t {
+ unsigned long pbuf_code;
+ unsigned long pbuf_data;
+ unsigned int size_code;
+ unsigned int size_data;
+ struct xtlib_pil_info *ppil_inf;
+ unsigned int lib_on_dpu; /* 0: not loaded, 1: loaded. */
+};
+
+struct lib_info {
+ struct xtlib_pil_info pil_info;
+ struct xtlib_loader_globals xtlib_globals;
+
+ struct xf_pool *code_section_pool;
+ struct xf_pool *data_section_pool;
+
+ void *code_buf_virt;
+ unsigned int code_buf_phys;
+ unsigned int code_buf_size;
+ void *data_buf_virt;
+ unsigned int data_buf_phys;
+ unsigned int data_buf_size;
+
+ const char *filename;
+ unsigned int lib_type;
+};
+
+long xf_load_lib(struct xf_client *client, struct xf_handle *handle, struct lib_info *lib_info);
+long xf_unload_lib(struct xf_client *client, struct xf_handle *handle, struct lib_info *lib_info);
+
+#endif