xref: /openbmc/linux/include/uapi/sound/sof/abi.h (revision ea4a4e82)
14483151eSLiam Girdwood /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
24483151eSLiam Girdwood /*
34483151eSLiam Girdwood  * This file is provided under a dual BSD/GPLv2 license.  When using or
44483151eSLiam Girdwood  * redistributing this file, you may do so under either license.
54483151eSLiam Girdwood  *
64483151eSLiam Girdwood  * Copyright(c) 2018 Intel Corporation. All rights reserved.
74483151eSLiam Girdwood  */
84483151eSLiam Girdwood 
94483151eSLiam Girdwood /**
104483151eSLiam Girdwood  * SOF ABI versioning is based on Semantic Versioning where we have a given
114483151eSLiam Girdwood  * MAJOR.MINOR.PATCH version number. See https://semver.org/
124483151eSLiam Girdwood  *
134483151eSLiam Girdwood  * Rules for incrementing or changing version :-
144483151eSLiam Girdwood  *
154483151eSLiam Girdwood  * 1) Increment MAJOR version if you make incompatible API changes. MINOR and
164483151eSLiam Girdwood  *    PATCH should be reset to 0.
174483151eSLiam Girdwood  *
184483151eSLiam Girdwood  * 2) Increment MINOR version if you add backwards compatible features or
194483151eSLiam Girdwood  *    changes. PATCH should be reset to 0.
204483151eSLiam Girdwood  *
214483151eSLiam Girdwood  * 3) Increment PATCH version if you add backwards compatible bug fixes.
224483151eSLiam Girdwood  */
234483151eSLiam Girdwood 
244483151eSLiam Girdwood #ifndef __INCLUDE_UAPI_SOUND_SOF_ABI_H__
254483151eSLiam Girdwood #define __INCLUDE_UAPI_SOUND_SOF_ABI_H__
264483151eSLiam Girdwood 
274453d24dSRanjani Sridharan #include <linux/types.h>
284453d24dSRanjani Sridharan 
294483151eSLiam Girdwood /* SOF ABI version major, minor and patch numbers */
304483151eSLiam Girdwood #define SOF_ABI_MAJOR 3
31af468aadSBrent Lu #define SOF_ABI_MINOR 23
32afe57ecaSPierre-Louis Bossart #define SOF_ABI_PATCH 0
334483151eSLiam Girdwood 
344483151eSLiam Girdwood /* SOF ABI version number. Format within 32bit word is MMmmmppp */
354483151eSLiam Girdwood #define SOF_ABI_MAJOR_SHIFT	24
364483151eSLiam Girdwood #define SOF_ABI_MAJOR_MASK	0xff
374483151eSLiam Girdwood #define SOF_ABI_MINOR_SHIFT	12
384483151eSLiam Girdwood #define SOF_ABI_MINOR_MASK	0xfff
394483151eSLiam Girdwood #define SOF_ABI_PATCH_SHIFT	0
404483151eSLiam Girdwood #define SOF_ABI_PATCH_MASK	0xfff
414483151eSLiam Girdwood 
424483151eSLiam Girdwood #define SOF_ABI_VER(major, minor, patch) \
434483151eSLiam Girdwood 	(((major) << SOF_ABI_MAJOR_SHIFT) | \
444483151eSLiam Girdwood 	((minor) << SOF_ABI_MINOR_SHIFT) | \
454483151eSLiam Girdwood 	((patch) << SOF_ABI_PATCH_SHIFT))
464483151eSLiam Girdwood 
474483151eSLiam Girdwood #define SOF_ABI_VERSION_MAJOR(version) \
484483151eSLiam Girdwood 	(((version) >> SOF_ABI_MAJOR_SHIFT) & SOF_ABI_MAJOR_MASK)
494483151eSLiam Girdwood #define SOF_ABI_VERSION_MINOR(version)	\
504483151eSLiam Girdwood 	(((version) >> SOF_ABI_MINOR_SHIFT) & SOF_ABI_MINOR_MASK)
514483151eSLiam Girdwood #define SOF_ABI_VERSION_PATCH(version)	\
524483151eSLiam Girdwood 	(((version) >> SOF_ABI_PATCH_SHIFT) & SOF_ABI_PATCH_MASK)
534483151eSLiam Girdwood 
544483151eSLiam Girdwood #define SOF_ABI_VERSION_INCOMPATIBLE(sof_ver, client_ver)		\
554483151eSLiam Girdwood 	(SOF_ABI_VERSION_MAJOR((sof_ver)) !=				\
564483151eSLiam Girdwood 		SOF_ABI_VERSION_MAJOR((client_ver))			\
574483151eSLiam Girdwood 	)
584483151eSLiam Girdwood 
594483151eSLiam Girdwood #define SOF_ABI_VERSION SOF_ABI_VER(SOF_ABI_MAJOR, SOF_ABI_MINOR, SOF_ABI_PATCH)
604483151eSLiam Girdwood 
614483151eSLiam Girdwood /* SOF ABI magic number "SOF\0". */
624483151eSLiam Girdwood #define SOF_ABI_MAGIC		0x00464F53
63*ea4a4e82SPeter Ujfalusi /* SOF IPC4 ABI magic number "SOF4". */
64*ea4a4e82SPeter Ujfalusi #define SOF_IPC4_ABI_MAGIC	0x34464F53
654483151eSLiam Girdwood 
664483151eSLiam Girdwood #endif
67