root/include/uapi/sound/sof/fw.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
   2 /*
   3  * This file is provided under a dual BSD/GPLv2 license.  When using or
   4  * redistributing this file, you may do so under either license.
   5  *
   6  * Copyright(c) 2018 Intel Corporation. All rights reserved.
   7  */
   8 
   9 /*
  10  * Firmware file format .
  11  */
  12 
  13 #ifndef __INCLUDE_UAPI_SOF_FW_H__
  14 #define __INCLUDE_UAPI_SOF_FW_H__
  15 
  16 #include <linux/types.h>
  17 
  18 #define SND_SOF_FW_SIG_SIZE     4
  19 #define SND_SOF_FW_ABI          1
  20 #define SND_SOF_FW_SIG          "Reef"
  21 
  22 /*
  23  * Firmware module is made up of 1 . N blocks of different types. The
  24  * Block header is used to determine where and how block is to be copied in the
  25  * DSP/host memory space.
  26  */
  27 enum snd_sof_fw_blk_type {
  28         SOF_FW_BLK_TYPE_INVALID = -1,
  29         SOF_FW_BLK_TYPE_START   = 0,
  30         SOF_FW_BLK_TYPE_RSRVD0  = SOF_FW_BLK_TYPE_START,
  31         SOF_FW_BLK_TYPE_IRAM    = 1,    /* local instruction RAM */
  32         SOF_FW_BLK_TYPE_DRAM    = 2,    /* local data RAM */
  33         SOF_FW_BLK_TYPE_SRAM    = 3,    /* system RAM */
  34         SOF_FW_BLK_TYPE_ROM     = 4,
  35         SOF_FW_BLK_TYPE_IMR     = 5,
  36         SOF_FW_BLK_TYPE_RSRVD6  = 6,
  37         SOF_FW_BLK_TYPE_RSRVD7  = 7,
  38         SOF_FW_BLK_TYPE_RSRVD8  = 8,
  39         SOF_FW_BLK_TYPE_RSRVD9  = 9,
  40         SOF_FW_BLK_TYPE_RSRVD10 = 10,
  41         SOF_FW_BLK_TYPE_RSRVD11 = 11,
  42         SOF_FW_BLK_TYPE_RSRVD12 = 12,
  43         SOF_FW_BLK_TYPE_RSRVD13 = 13,
  44         SOF_FW_BLK_TYPE_RSRVD14 = 14,
  45         /* use SOF_FW_BLK_TYPE_RSVRDX for new block types */
  46         SOF_FW_BLK_TYPE_NUM
  47 };
  48 
  49 struct snd_sof_blk_hdr {
  50         enum snd_sof_fw_blk_type type;
  51         __u32 size;             /* bytes minus this header */
  52         __u32 offset;           /* offset from base */
  53 } __packed;
  54 
  55 /*
  56  * Firmware file is made up of 1 .. N different modules types. The module
  57  * type is used to determine how to load and parse the module.
  58  */
  59 enum snd_sof_fw_mod_type {
  60         SOF_FW_BASE     = 0,    /* base firmware image */
  61         SOF_FW_MODULE   = 1,    /* firmware module */
  62 };
  63 
  64 struct snd_sof_mod_hdr {
  65         enum snd_sof_fw_mod_type type;
  66         __u32 size;             /* bytes minus this header */
  67         __u32 num_blocks;       /* number of blocks */
  68 } __packed;
  69 
  70 /*
  71  * Firmware file header.
  72  */
  73 struct snd_sof_fw_header {
  74         unsigned char sig[SND_SOF_FW_SIG_SIZE]; /* "Reef" */
  75         __u32 file_size;        /* size of file minus this header */
  76         __u32 num_modules;      /* number of modules */
  77         __u32 abi;              /* version of header format */
  78 } __packed;
  79 
  80 #endif

/* [<][>][^][v][top][bottom][index][help] */