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