2 * wmfw.h - Wolfson firmware format information
4 * Copyright 2012 Wolfson Microelectronics plc
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
16 #include <linux/types.h>
18 #define WMFW_MAX_ALG_NAME 256
19 #define WMFW_MAX_ALG_DESCR_NAME 256
21 #define WMFW_MAX_COEFF_NAME 256
22 #define WMFW_MAX_COEFF_DESCR_NAME 256
24 #define WMFW_CTL_FLAG_SYS 0x8000
25 #define WMFW_CTL_FLAG_VOLATILE 0x0004
26 #define WMFW_CTL_FLAG_WRITEABLE 0x0002
27 #define WMFW_CTL_FLAG_READABLE 0x0001
29 /* Non-ALSA coefficient types start at 0x1000 */
30 #define WMFW_CTL_TYPE_ACKED 0x1000 /* acked control */
31 #define WMFW_CTL_TYPE_HOSTEVENT 0x1001 /* event control */
32 #define WMFW_CTL_TYPE_HOST_BUFFER 0x1002 /* host buffer pointer */
47 struct wmfw_adsp1_sizes {
53 struct wmfw_adsp2_sizes {
76 struct wmfw_v3_id_hdr {
84 struct wmfw_adsp1_id_hdr {
85 struct wmfw_id_hdr fw;
91 struct wmfw_adsp2_id_hdr {
92 struct wmfw_id_hdr fw;
99 struct wmfw_halo_id_hdr {
100 struct wmfw_v3_id_hdr fw;
108 struct wmfw_alg_hdr {
113 struct wmfw_adsp1_alg_hdr {
114 struct wmfw_alg_hdr alg;
119 struct wmfw_adsp2_alg_hdr {
120 struct wmfw_alg_hdr alg;
126 struct wmfw_halo_alg_hdr {
127 struct wmfw_alg_hdr alg;
134 struct wmfw_adsp_alg_data {
136 u8 name[WMFW_MAX_ALG_NAME];
137 u8 descr[WMFW_MAX_ALG_DESCR_NAME];
142 struct wmfw_adsp_coeff_data {
148 u8 name[WMFW_MAX_COEFF_NAME];
149 u8 descr[WMFW_MAX_COEFF_DESCR_NAME];
156 struct wmfw_coeff_hdr {
170 struct wmfw_coeff_item {
184 #define WMFW_ABSOLUTE 0xf0
185 #define WMFW_ALGORITHM_DATA 0xf2
186 #define WMFW_NAME_TEXT 0xfe
187 #define WMFW_INFO_TEXT 0xff
189 #define WMFW_ADSP1_PM 2
190 #define WMFW_ADSP1_DM 3
191 #define WMFW_ADSP1_ZM 4
193 #define WMFW_ADSP2_PM 2
194 #define WMFW_ADSP2_ZM 4
195 #define WMFW_ADSP2_XM 5
196 #define WMFW_ADSP2_YM 6
198 #define WMFW_HALO_PM_PACKED 0x10
199 #define WMFW_HALO_XM_PACKED 0x11
200 #define WMFW_HALO_YM_PACKED 0x12