Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / sound / soc / codecs / wmfw.h
1 /*
2  * wmfw.h - Wolfson firmware format information
3  *
4  * Copyright 2012 Wolfson Microelectronics plc
5  *
6  * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
7  *
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.
11  */
12
13 #ifndef __WMFW_H
14 #define __WMFW_H
15
16 #include <linux/types.h>
17
18 struct wmfw_header {
19         char magic[4];
20         __le32 len;
21         __le16 rev;
22         u8 core;
23         u8 ver;
24 } __packed;
25
26 struct wmfw_footer {
27         __le64 timestamp;
28         __le32 checksum;
29 } __packed;
30
31 struct wmfw_adsp1_sizes {
32         __le32 dm;
33         __le32 pm;
34         __le32 zm;
35 } __packed;
36
37 struct wmfw_adsp2_sizes {
38         __le32 xm;
39         __le32 ym;
40         __le32 pm;
41         __le32 zm;
42 } __packed;
43
44 struct wmfw_region {
45         union {
46                 __be32 type;
47                 __le32 offset;
48         };
49         __le32 len;
50         u8 data[];
51 } __packed;
52
53 struct wmfw_id_hdr {
54         __be32 core_id;
55         __be32 core_rev;
56         __be32 id;
57         __be32 ver;
58 } __packed;
59
60 struct wmfw_adsp1_id_hdr {
61         struct wmfw_id_hdr fw;
62         __be32 zm;
63         __be32 dm;
64         __be32 algs;
65 } __packed;
66
67 struct wmfw_adsp2_id_hdr {
68         struct wmfw_id_hdr fw;
69         __be32 zm;
70         __be32 xm;
71         __be32 ym;
72         __be32 algs;
73 } __packed;
74
75 struct wmfw_alg_hdr {
76         __be32 id;
77         __be32 ver;
78 } __packed;
79
80 struct wmfw_adsp1_alg_hdr {
81         struct wmfw_alg_hdr alg;
82         __be32 zm;
83         __be32 dm;
84 } __packed;
85
86 struct wmfw_adsp2_alg_hdr {
87         struct wmfw_alg_hdr alg;
88         __be32 zm;
89         __be32 xm;
90         __be32 ym;
91 } __packed;
92
93 struct wmfw_coeff_hdr {
94         u8 magic[4];
95         __le32 len;
96         union {
97                 __be32 rev;
98                 __le32 ver;
99         };
100         union {
101                 __be32 core;
102                 __le32 core_ver;
103         };
104         u8 data[];
105 } __packed;
106
107 struct wmfw_coeff_item {
108         __le16 offset;
109         __le16 type;
110         __le32 id;
111         __le32 ver;
112         __le32 sr;
113         __le32 len;
114         u8 data[];
115 } __packed;
116
117 #define WMFW_ADSP1 1
118 #define WMFW_ADSP2 2
119
120 #define WMFW_ABSOLUTE  0xf0
121 #define WMFW_NAME_TEXT 0xfe
122 #define WMFW_INFO_TEXT 0xff
123
124 #define WMFW_ADSP1_PM 2
125 #define WMFW_ADSP1_DM 3
126 #define WMFW_ADSP1_ZM 4
127
128 #define WMFW_ADSP2_PM 2
129 #define WMFW_ADSP2_ZM 4
130 #define WMFW_ADSP2_XM 5
131 #define WMFW_ADSP2_YM 6
132
133 #endif