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 134