xref: /linux/sound/soc/codecs/lpass-macro-common.h (revision 05a54fa773284d1a7923cdfdd8f0c8dabb98bd26)
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_UNKNOWN,
23 	LPASS_CODEC_VERSION_1_0,
24 	LPASS_CODEC_VERSION_1_1,
25 	LPASS_CODEC_VERSION_1_2,
26 	LPASS_CODEC_VERSION_2_0,
27 	LPASS_CODEC_VERSION_2_1,
28 	LPASS_CODEC_VERSION_2_5,
29 	LPASS_CODEC_VERSION_2_6,
30 	LPASS_CODEC_VERSION_2_7,
31 	LPASS_CODEC_VERSION_2_8,
32 	LPASS_CODEC_VERSION_2_9,
33 };
34 
35 struct lpass_macro {
36 	struct device *macro_pd;
37 	struct device *dcodec_pd;
38 };
39 
40 struct lpass_macro *lpass_macro_pds_init(struct device *dev);
41 void lpass_macro_pds_exit(struct lpass_macro *pds);
42 void lpass_macro_set_codec_version(enum lpass_codec_version version);
43 enum lpass_codec_version lpass_macro_get_codec_version(void);
44 
45 static inline void lpass_macro_pds_exit_action(void *pds)
46 {
47 	lpass_macro_pds_exit(pds);
48 }
49 
50 static inline const char *lpass_macro_get_codec_version_string(int version)
51 {
52 	switch (version) {
53 	case LPASS_CODEC_VERSION_1_0:
54 		return "v1.0";
55 	case LPASS_CODEC_VERSION_1_1:
56 		return "v1.1";
57 	case LPASS_CODEC_VERSION_1_2:
58 		return "v1.2";
59 	case LPASS_CODEC_VERSION_2_0:
60 		return "v2.0";
61 	case LPASS_CODEC_VERSION_2_1:
62 		return "v2.1";
63 	case LPASS_CODEC_VERSION_2_5:
64 		return "v2.5";
65 	case LPASS_CODEC_VERSION_2_6:
66 		return "v2.6";
67 	case LPASS_CODEC_VERSION_2_7:
68 		return "v2.7";
69 	case LPASS_CODEC_VERSION_2_8:
70 		return "v2.8";
71 	default:
72 		break;
73 	}
74 	return "NA";
75 }
76 
77 #endif /* __LPASS_MACRO_COMMON_H__ */
78