linux/include/sound/sof/ext_manifest.h

/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
 * This file is provided under a dual BSD/GPLv2 license.  When using or
 * redistributing this file, you may do so under either license.
 *
 * Copyright(c) 2020 Intel Corporation
 */

/*
 * Extended manifest is a place to store metadata about firmware, known during
 * compilation time - for example firmware version or used compiler.
 * Given information are read on host side before firmware startup.
 * This part of output binary is not signed.
 */

#ifndef __SOF_FIRMWARE_EXT_MANIFEST_H__
#define __SOF_FIRMWARE_EXT_MANIFEST_H__

#include <linux/bits.h>
#include <linux/compiler.h>
#include <linux/types.h>
#include <sound/sof/info.h>

/* In ASCII `XMan` */
#define SOF_EXT_MAN_MAGIC_NUMBER

/* Build u32 number in format MMmmmppp */
#define SOF_EXT_MAN_BUILD_VERSION(MAJOR, MINOR, PATH)

/* check extended manifest version consistency */
#define SOF_EXT_MAN_VERSION_INCOMPATIBLE(host_ver, cli_ver)

/* used extended manifest header version */
#define SOF_EXT_MAN_VERSION

/* extended manifest header, deleting any field breaks backward compatibility */
struct sof_ext_man_header {} __packed;

/* Now define extended manifest elements */

/* Extended manifest elements types */
enum sof_ext_man_elem_type {};

/* extended manifest element header */
struct sof_ext_man_elem_header {} __packed;

/* FW version */
struct sof_ext_man_fw_version {} __packed;

/* extended data memory windows for IPC, trace and debug */
struct sof_ext_man_window {} __packed;

/* Used C compiler description */
struct sof_ext_man_cc_version {} __packed;

struct ext_man_dbg_abi {} __packed;

/* EXT_MAN_ELEM_CONFIG_DATA elements identificators, ABI3.17 */
enum config_elem_type {};

struct sof_config_elem {} __packed;

/* firmware configuration information */
struct sof_ext_man_config_data {} __packed;

#endif /* __SOF_FIRMWARE_EXT_MANIFEST_H__ */