Commit 2323736d authored by Charles Keepax's avatar Charles Keepax Committed by Mark Brown

ASoC: wm_adsp: Add basic support for rev 1 firmware file format

Revision one of the file format includes new algorithm and coefficient
blocks which provide additional information about the controls exported
by the firmware. This patch updates the processing to handle this
version of the file format. Note that whilst this version of the format
adds support for specifying a name for the control through the firmware
file this has not been used and to keep compatibility with existing
deployments no changes to the firmware control naming are made by this
patch.
Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent b21acc1c
This diff is collapsed.
...@@ -53,6 +53,7 @@ struct wm_adsp { ...@@ -53,6 +53,7 @@ struct wm_adsp {
int num_mems; int num_mems;
int fw; int fw;
int fw_ver;
bool running; bool running;
struct regulator *dvfs; struct regulator *dvfs;
......
...@@ -15,6 +15,12 @@ ...@@ -15,6 +15,12 @@
#include <linux/types.h> #include <linux/types.h>
#define WMFW_MAX_ALG_NAME 256
#define WMFW_MAX_ALG_DESCR_NAME 256
#define WMFW_MAX_COEFF_NAME 256
#define WMFW_MAX_COEFF_DESCR_NAME 256
struct wmfw_header { struct wmfw_header {
char magic[4]; char magic[4];
__le32 len; __le32 len;
...@@ -90,6 +96,28 @@ struct wmfw_adsp2_alg_hdr { ...@@ -90,6 +96,28 @@ struct wmfw_adsp2_alg_hdr {
__be32 ym; __be32 ym;
} __packed; } __packed;
struct wmfw_adsp_alg_data {
__le32 id;
u8 name[WMFW_MAX_ALG_NAME];
u8 descr[WMFW_MAX_ALG_DESCR_NAME];
__le32 ncoeff;
u8 data[];
} __packed;
struct wmfw_adsp_coeff_data {
struct {
__le16 offset;
__le16 type;
__le32 size;
} hdr;
u8 name[WMFW_MAX_COEFF_NAME];
u8 descr[WMFW_MAX_COEFF_DESCR_NAME];
__le16 ctl_type;
__le16 flags;
__le32 len;
u8 data[];
} __packed;
struct wmfw_coeff_hdr { struct wmfw_coeff_hdr {
u8 magic[4]; u8 magic[4];
__le32 len; __le32 len;
...@@ -117,9 +145,10 @@ struct wmfw_coeff_item { ...@@ -117,9 +145,10 @@ struct wmfw_coeff_item {
#define WMFW_ADSP1 1 #define WMFW_ADSP1 1
#define WMFW_ADSP2 2 #define WMFW_ADSP2 2
#define WMFW_ABSOLUTE 0xf0 #define WMFW_ABSOLUTE 0xf0
#define WMFW_NAME_TEXT 0xfe #define WMFW_ALGORITHM_DATA 0xf2
#define WMFW_INFO_TEXT 0xff #define WMFW_NAME_TEXT 0xfe
#define WMFW_INFO_TEXT 0xff
#define WMFW_ADSP1_PM 2 #define WMFW_ADSP1_PM 2
#define WMFW_ADSP1_DM 3 #define WMFW_ADSP1_DM 3
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment