| /* |
| * wmfw.h - Wolfson firmware format information |
| * |
| * Copyright 2012 Wolfson Microelectronics plc |
| * |
| * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| */ |
| |
| #ifndef __WMFW_H |
| #define __WMFW_H |
| |
| #include <linux/types.h> |
| |
| struct wmfw_header { |
| char magic[4]; |
| __le32 len; |
| __le16 rev; |
| u8 core; |
| u8 ver; |
| } __packed; |
| |
| struct wmfw_footer { |
| __le64 timestamp; |
| __le32 checksum; |
| } __packed; |
| |
| struct wmfw_adsp1_sizes { |
| __le32 dm; |
| __le32 pm; |
| __le32 zm; |
| } __packed; |
| |
| struct wmfw_adsp2_sizes { |
| __le32 xm; |
| __le32 ym; |
| __le32 pm; |
| __le32 zm; |
| } __packed; |
| |
| struct wmfw_region { |
| union { |
| __be32 type; |
| __le32 offset; |
| }; |
| __le32 len; |
| u8 data[]; |
| } __packed; |
| |
| struct wmfw_id_hdr { |
| __be32 core_id; |
| __be32 core_rev; |
| __be32 id; |
| __be32 ver; |
| } __packed; |
| |
| struct wmfw_adsp1_id_hdr { |
| struct wmfw_id_hdr fw; |
| __be32 zm; |
| __be32 dm; |
| __be32 algs; |
| } __packed; |
| |
| struct wmfw_adsp2_id_hdr { |
| struct wmfw_id_hdr fw; |
| __be32 zm; |
| __be32 xm; |
| __be32 ym; |
| __be32 algs; |
| } __packed; |
| |
| struct wmfw_alg_hdr { |
| __be32 id; |
| __be32 ver; |
| } __packed; |
| |
| struct wmfw_adsp1_alg_hdr { |
| struct wmfw_alg_hdr alg; |
| __be32 zm; |
| __be32 dm; |
| } __packed; |
| |
| struct wmfw_adsp2_alg_hdr { |
| struct wmfw_alg_hdr alg; |
| __be32 zm; |
| __be32 xm; |
| __be32 ym; |
| } __packed; |
| |
| struct wmfw_coeff_hdr { |
| u8 magic[4]; |
| __le32 len; |
| union { |
| __be32 rev; |
| __le32 ver; |
| }; |
| union { |
| __be32 core; |
| __le32 core_ver; |
| }; |
| u8 data[]; |
| } __packed; |
| |
| struct wmfw_coeff_item { |
| __le16 offset; |
| __le16 type; |
| __le32 id; |
| __le32 ver; |
| __le32 sr; |
| __le32 len; |
| u8 data[]; |
| } __packed; |
| |
| #define WMFW_ADSP1 1 |
| #define WMFW_ADSP2 2 |
| |
| #define WMFW_ABSOLUTE 0xf0 |
| #define WMFW_NAME_TEXT 0xfe |
| #define WMFW_INFO_TEXT 0xff |
| |
| #define WMFW_ADSP1_PM 2 |
| #define WMFW_ADSP1_DM 3 |
| #define WMFW_ADSP1_ZM 4 |
| |
| #define WMFW_ADSP2_PM 2 |
| #define WMFW_ADSP2_ZM 4 |
| #define WMFW_ADSP2_XM 5 |
| #define WMFW_ADSP2_YM 6 |
| |
| #endif |