xref: /linux/sound/soc/codecs/lpass-macro-common.h (revision 1c75adb22d49ca9389333ca5e6939052a7203111)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (c) 2022, The Linux Foundation. All rights reserved.
4  */
5 
6 #ifndef __LPASS_MACRO_COMMON_H__
7 #define __LPASS_MACRO_COMMON_H__
8 
9 /* NPL clock is expected */
10 #define LPASS_MACRO_FLAG_HAS_NPL_CLOCK		BIT(0)
11 /* The soundwire block should be internally reset at probe */
12 #define LPASS_MACRO_FLAG_RESET_SWR		BIT(1)
13 
14 enum lpass_version {
15 	LPASS_VER_9_0_0,
16 	LPASS_VER_9_2_0,
17 	LPASS_VER_10_0_0,
18 	LPASS_VER_11_0_0,
19 };
20 
21 enum lpass_codec_version {
22 	LPASS_CODEC_VERSION_1_0 = 1,
23 	LPASS_CODEC_VERSION_1_1,
24 	LPASS_CODEC_VERSION_1_2,
25 	LPASS_CODEC_VERSION_2_0,
26 	LPASS_CODEC_VERSION_2_1,
27 	LPASS_CODEC_VERSION_2_5,
28 	LPASS_CODEC_VERSION_2_6,
29 	LPASS_CODEC_VERSION_2_7,
30 	LPASS_CODEC_VERSION_2_8,
31 };
32 
33 struct lpass_macro {
34 	struct device *macro_pd;
35 	struct device *dcodec_pd;
36 };
37 
38 struct lpass_macro *lpass_macro_pds_init(struct device *dev);
39 void lpass_macro_pds_exit(struct lpass_macro *pds);
40 void lpass_macro_set_codec_version(int version);
41 int lpass_macro_get_codec_version(void);
42 
43 static inline const char *lpass_macro_get_codec_version_string(int version)
44 {
45 	switch (version) {
46 	case LPASS_CODEC_VERSION_2_0:
47 		return "v2.0";
48 	case LPASS_CODEC_VERSION_2_1:
49 		return "v2.1";
50 	case LPASS_CODEC_VERSION_2_5:
51 		return "v2.5";
52 	case LPASS_CODEC_VERSION_2_6:
53 		return "v2.6";
54 	case LPASS_CODEC_VERSION_2_7:
55 		return "v2.7";
56 	case LPASS_CODEC_VERSION_2_8:
57 		return "v2.8";
58 	default:
59 		break;
60 	}
61 	return "NA";
62 }
63 
64 #endif /* __LPASS_MACRO_COMMON_H__ */
65