| /* SPDX-License-Identifier: GPL-2.0-only */ |
| /* |
| * Copyright (c) 2022, The Linux Foundation. All rights reserved. |
| */ |
| |
| #ifndef __LPASS_MACRO_COMMON_H__ |
| #define __LPASS_MACRO_COMMON_H__ |
| |
| /* NPL clock is expected */ |
| #define LPASS_MACRO_FLAG_HAS_NPL_CLOCK BIT(0) |
| /* The soundwire block should be internally reset at probe */ |
| #define LPASS_MACRO_FLAG_RESET_SWR BIT(1) |
| |
| enum lpass_version { |
| LPASS_VER_9_0_0, |
| LPASS_VER_9_2_0, |
| LPASS_VER_10_0_0, |
| LPASS_VER_11_0_0, |
| }; |
| |
| enum lpass_codec_version { |
| LPASS_CODEC_VERSION_UNKNOWN, |
| LPASS_CODEC_VERSION_1_0, |
| LPASS_CODEC_VERSION_1_1, |
| LPASS_CODEC_VERSION_1_2, |
| LPASS_CODEC_VERSION_2_0, |
| LPASS_CODEC_VERSION_2_1, |
| LPASS_CODEC_VERSION_2_5, |
| LPASS_CODEC_VERSION_2_6, |
| LPASS_CODEC_VERSION_2_7, |
| LPASS_CODEC_VERSION_2_8, |
| }; |
| |
| struct lpass_macro { |
| struct device *macro_pd; |
| struct device *dcodec_pd; |
| }; |
| |
| struct lpass_macro *lpass_macro_pds_init(struct device *dev); |
| void lpass_macro_pds_exit(struct lpass_macro *pds); |
| void lpass_macro_set_codec_version(enum lpass_codec_version version); |
| enum lpass_codec_version lpass_macro_get_codec_version(void); |
| |
| static inline void lpass_macro_pds_exit_action(void *pds) |
| { |
| lpass_macro_pds_exit(pds); |
| } |
| |
| static inline const char *lpass_macro_get_codec_version_string(int version) |
| { |
| switch (version) { |
| case LPASS_CODEC_VERSION_1_0: |
| return "v1.0"; |
| case LPASS_CODEC_VERSION_1_1: |
| return "v1.1"; |
| case LPASS_CODEC_VERSION_1_2: |
| return "v1.2"; |
| case LPASS_CODEC_VERSION_2_0: |
| return "v2.0"; |
| case LPASS_CODEC_VERSION_2_1: |
| return "v2.1"; |
| case LPASS_CODEC_VERSION_2_5: |
| return "v2.5"; |
| case LPASS_CODEC_VERSION_2_6: |
| return "v2.6"; |
| case LPASS_CODEC_VERSION_2_7: |
| return "v2.7"; |
| case LPASS_CODEC_VERSION_2_8: |
| return "v2.8"; |
| default: |
| break; |
| } |
| return "NA"; |
| } |
| |
| #endif /* __LPASS_MACRO_COMMON_H__ */ |