| /* SPDX-License-Identifier: GPL-2.0-only */ |
| /* |
| * Copyright (c) 2025, Qualcomm Technologies, Inc. and/or its subsidiaries. |
| */ |
| |
| #ifndef __WCD_COMMON_H__ |
| #define __WCD_COMMON_H__ |
| |
| struct device; |
| struct sdw_slave; |
| struct sdw_bus_params; |
| struct irq_domain; |
| enum sdw_slave_status; |
| |
| #define WCD_MAX_MICBIAS 4 |
| |
| struct wcd_sdw_ch_info { |
| int port_num; |
| unsigned int ch_mask; |
| unsigned int master_ch_mask; |
| }; |
| |
| #define WCD_SDW_CH(id, pn, cmask) \ |
| [id] = { \ |
| .port_num = pn, \ |
| .ch_mask = cmask, \ |
| .master_ch_mask = cmask, \ |
| } |
| |
| struct wcd_common { |
| struct device *dev; |
| int max_bias; |
| u32 micb_mv[WCD_MAX_MICBIAS]; |
| u32 micb_vout[WCD_MAX_MICBIAS]; |
| }; |
| |
| extern const struct component_ops wcd_sdw_component_ops; |
| int wcd_get_micb_vout_ctl_val(struct device *dev, u32 micb_mv); |
| int wcd_dt_parse_micbias_info(struct wcd_common *common); |
| int wcd_update_status(struct sdw_slave *slave, enum sdw_slave_status status); |
| int wcd_bus_config(struct sdw_slave *slave, struct sdw_bus_params *params); |
| int wcd_interrupt_callback(struct sdw_slave *slave, struct irq_domain *slave_irq, |
| unsigned int wcd_intr_status0, unsigned int wcd_intr_status1, |
| unsigned int wcd_intr_status2); |
| |
| #endif /* __WCD_COMMON_H__ */ |