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