linux/sound/soc/codecs/wmfw.h
<<
>>
Prefs
   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
  18struct wmfw_header {
  19        char magic[4];
  20        __le32 len;
  21        __le16 rev;
  22        u8 core;
  23        u8 ver;
  24} __packed;
  25
  26struct wmfw_footer {
  27        __le64 timestamp;
  28        __le32 checksum;
  29} __packed;
  30
  31struct wmfw_adsp1_sizes {
  32        __le32 dm;
  33        __le32 pm;
  34        __le32 zm;
  35} __packed;
  36
  37struct wmfw_adsp2_sizes {
  38        __le32 xm;
  39        __le32 ym;
  40        __le32 pm;
  41        __le32 zm;
  42} __packed;
  43
  44struct wmfw_region {
  45        union {
  46                __be32 type;
  47                __le32 offset;
  48        };
  49        __le32 len;
  50        u8 data[];
  51} __packed;
  52
  53struct wmfw_id_hdr {
  54        __be32 core_id;
  55        __be32 core_rev;
  56        __be32 id;
  57        __be32 ver;
  58} __packed;
  59
  60struct wmfw_adsp1_id_hdr {
  61        struct wmfw_id_hdr fw;
  62        __be32 zm;
  63        __be32 dm;
  64        __be32 algs;
  65} __packed;
  66
  67struct 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
  75struct wmfw_alg_hdr {
  76        __be32 id;
  77        __be32 ver;
  78} __packed;
  79
  80struct wmfw_adsp1_alg_hdr {
  81        struct wmfw_alg_hdr alg;
  82        __be32 zm;
  83        __be32 dm;
  84} __packed;
  85
  86struct wmfw_adsp2_alg_hdr {
  87        struct wmfw_alg_hdr alg;
  88        __be32 zm;
  89        __be32 xm;
  90        __be32 ym;
  91} __packed;
  92
  93struct 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
 107struct 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