1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (c) 2025, Qualcomm Technologies, Inc. and/or its subsidiaries. 4 */ 5 6 #ifndef __WCD_COMMON_H__ 7 #define __WCD_COMMON_H__ 8 9 struct device; 10 struct sdw_slave; 11 struct sdw_bus_params; 12 struct irq_domain; 13 enum sdw_slave_status; 14 15 #define WCD_MAX_MICBIAS 4 16 17 struct wcd_sdw_ch_info { 18 int port_num; 19 unsigned int ch_mask; 20 unsigned int master_ch_mask; 21 }; 22 23 #define WCD_SDW_CH(id, pn, cmask) \ 24 [id] = { \ 25 .port_num = pn, \ 26 .ch_mask = cmask, \ 27 .master_ch_mask = cmask, \ 28 } 29 30 struct wcd_common { 31 struct device *dev; 32 int max_bias; 33 u32 micb_mv[WCD_MAX_MICBIAS]; 34 u32 micb_vout[WCD_MAX_MICBIAS]; 35 }; 36 37 extern const struct component_ops wcd_sdw_component_ops; 38 int wcd_get_micb_vout_ctl_val(struct device *dev, u32 micb_mv); 39 int wcd_dt_parse_micbias_info(struct wcd_common *common); 40 int wcd_update_status(struct sdw_slave *slave, enum sdw_slave_status status); 41 int wcd_bus_config(struct sdw_slave *slave, struct sdw_bus_params *params); 42 int wcd_interrupt_callback(struct sdw_slave *slave, struct irq_domain *slave_irq, 43 unsigned int wcd_intr_status0, unsigned int wcd_intr_status1, 44 unsigned int wcd_intr_status2); 45 46 #endif /* __WCD_COMMON_H__ */ 47