Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/include/uapi/sound/sof/fw.h
26295 views
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
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
81
82