summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-12-21 21:18:19 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-12-21 21:18:19 -0800
commit8ed108c9770aa1fb055f8129121e60a708067f3f (patch)
tree609170e1c452df04c7be691757dfcf655ae6a9d7 /include
parent5529a30833c54e64e0775b90a592b100a81bf183 (diff)
parent067a92850f0359c41397b4d964f69b14b7ce65d0 (diff)
Merge "ASoC: msm: qdsp6v2: Add common items needed for Instance ID"
Diffstat (limited to 'include')
-rw-r--r--include/sound/apr_audio-v2.h102
-rw-r--r--include/sound/q6common.h23
2 files changed, 125 insertions, 0 deletions
diff --git a/include/sound/apr_audio-v2.h b/include/sound/apr_audio-v2.h
index 6078ef2e24de..6819af659768 100644
--- a/include/sound/apr_audio-v2.h
+++ b/include/sound/apr_audio-v2.h
@@ -29,6 +29,108 @@ struct param_outband {
phys_addr_t paddr;
};
+/* --------- Common Structures and Definitions------------- */
+/* Instance ID Definitions */
+#define INSTANCE_ID_0 0x0000
+
+struct mem_mapping_hdr {
+ /*
+ * LSW of parameter data payload address. Supported values: any.
+ * - Must be set to zero for in-band data.
+ */
+ u32 data_payload_addr_lsw;
+
+ /*
+ * MSW of Parameter data payload address. Supported values: any.
+ * - Must be set to zero for in-band data.
+ * - In the case of 32 bit Shared memory address, msw field must be
+ * set to zero.
+ * - In the case of 36 bit shared memory address, bit 31 to bit 4 of
+ * msw must be set to zero.
+ */
+ u32 data_payload_addr_msw;
+
+ /*
+ * Memory map handle returned by DSP through
+ * ASM_CMD_SHARED_MEM_MAP_REGIONS command.
+ * Supported Values: Any.
+ * If mmhandle is NULL, the ParamData payloads are within the
+ * message payload (in-band).
+ * If mmhandle is non-NULL, the ParamData payloads begin at the
+ * address specified in the address msw and lsw (out-of-band).
+ */
+ u32 mem_map_handle;
+
+} __packed;
+
+/*
+ * Payload format for parameter data.
+ * Immediately following these structures are param_size bytes of parameter
+ * data.
+ */
+struct param_hdr_v1 {
+ /* Valid ID of the module. */
+ uint32_t module_id;
+
+ /* Valid ID of the parameter. */
+ uint32_t param_id;
+
+ /* The size of the parameter specified by the module/param ID combo */
+ uint16_t param_size;
+
+ /* This field must be set to zero. */
+ uint16_t reserved;
+} __packed;
+
+struct param_hdr_v2 {
+ /* Valid ID of the module. */
+ uint32_t module_id;
+
+ /* Valid ID of the parameter. */
+ uint32_t param_id;
+
+ /* The size of the parameter specified by the module/param ID combo */
+ uint32_t param_size;
+} __packed;
+
+struct param_hdr_v3 {
+ /* Valid ID of the module. */
+ uint32_t module_id;
+
+ /* Instance of the module. */
+ uint16_t instance_id;
+
+ /* This field must be set to zero. */
+ uint16_t reserved;
+
+ /* Valid ID of the parameter. */
+ uint32_t param_id;
+
+ /* The size of the parameter specified by the module/param ID combo */
+ uint32_t param_size;
+} __packed;
+
+/* A union of all param_hdr versions for versitility and max size */
+union param_hdrs {
+ struct param_hdr_v1 v1;
+ struct param_hdr_v2 v2;
+ struct param_hdr_v3 v3;
+};
+
+struct module_instance_info {
+ /* Module ID. */
+ u32 module_id;
+
+ /* Instance of the module */
+ u16 instance_id;
+
+ /* Reserved. This field must be set to zero. */
+ u16 reserved;
+} __packed;
+/* -------------------------------------------------------- */
+
+/* Begin service specific definitions and structures */
+
#define ADSP_ADM_VERSION 0x00070000
#define ADM_CMD_SHARED_MEM_MAP_REGIONS 0x00010322
diff --git a/include/sound/q6common.h b/include/sound/q6common.h
new file mode 100644
index 000000000000..b6208f756cd9
--- /dev/null
+++ b/include/sound/q6common.h
@@ -0,0 +1,23 @@
+/* Copyright (c) 2017, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef __Q6COMMON_H__
+#define __Q6COMMON_H__
+
+#include <sound/apr_audio-v2.h>
+
+void q6common_update_instance_id_support(bool supported);
+bool q6common_is_instance_id_supported(void);
+int q6common_pack_pp_params(u8 *dest, struct param_hdr_v3 *v3_hdr,
+ u8 *param_data, u32 *total_size);
+
+#endif /* __Q6COMMON_H__ */