77 lines · c
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 14enum 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 21enum 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};33 34struct lpass_macro {35 struct device *macro_pd;36 struct device *dcodec_pd;37};38 39struct lpass_macro *lpass_macro_pds_init(struct device *dev);40void lpass_macro_pds_exit(struct lpass_macro *pds);41void lpass_macro_set_codec_version(enum lpass_codec_version version);42enum lpass_codec_version lpass_macro_get_codec_version(void);43 44static inline void lpass_macro_pds_exit_action(void *pds)45{46 lpass_macro_pds_exit(pds);47}48 49static inline const char *lpass_macro_get_codec_version_string(int version)50{51 switch (version) {52 case LPASS_CODEC_VERSION_1_0:53 return "v1.0";54 case LPASS_CODEC_VERSION_1_1:55 return "v1.1";56 case LPASS_CODEC_VERSION_1_2:57 return "v1.2";58 case LPASS_CODEC_VERSION_2_0:59 return "v2.0";60 case LPASS_CODEC_VERSION_2_1:61 return "v2.1";62 case LPASS_CODEC_VERSION_2_5:63 return "v2.5";64 case LPASS_CODEC_VERSION_2_6:65 return "v2.6";66 case LPASS_CODEC_VERSION_2_7:67 return "v2.7";68 case LPASS_CODEC_VERSION_2_8:69 return "v2.8";70 default:71 break;72 }73 return "NA";74}75 76#endif /* __LPASS_MACRO_COMMON_H__ */77