Lines Matching +full:wcd9380 +full:- +full:codec

1 // SPDX-License-Identifier: GPL-2.0
19 #include <sound/soc-dapm.h>
21 #include "wcd-common.h"
93 wcd->sconfig.ch_count = 1;
94 wcd->active_ports = 0;
96 ch_mask = wcd->port_config[i].ch_mask;
102 wcd->sconfig.ch_count++;
104 port_config[wcd->active_ports] = wcd->port_config[i];
105 wcd->active_ports++;
108 wcd->sconfig.bps = 1;
109 wcd->sconfig.frame_rate = params_rate(params);
110 if (wcd->is_tx)
111 wcd->sconfig.direction = SDW_DATA_DIR_TX;
113 wcd->sconfig.direction = SDW_DATA_DIR_RX;
115 wcd->sconfig.type = SDW_STREAM_PCM;
117 return sdw_stream_add_slave(wcd->sdev, &wcd->sconfig,
118 &port_config[0], wcd->active_ports,
119 wcd->sruntime);
127 sdw_stream_remove_slave(wcd->sdev, wcd->sruntime);
137 wcd->sruntime = stream;
146 struct wcd938x_sdw_priv *wcd = dev_get_drvdata(&slave->dev);
148 return wcd_interrupt_callback(slave, wcd->slave_irq, WCD938X_DIGITAL_INTR_STATUS_0,
1155 struct device *dev = &pdev->dev;
1161 return -ENOMEM;
1164 * Port map index starts with 0, however the data port for this codec
1167 if (of_property_present(dev->of_node, "qcom,tx-port-mapping")) {
1168 wcd->is_tx = true;
1169 ret = of_property_read_u32_array(dev->of_node, "qcom,tx-port-mapping",
1170 &pdev->m_port_map[1],
1173 ret = of_property_read_u32_array(dev->of_node, "qcom,rx-port-mapping",
1174 &pdev->m_port_map[1],
1181 wcd->sdev = pdev;
1184 pdev->prop.scp_int1_mask = SDW_SCP_INT1_IMPL_DEF |
1187 pdev->prop.lane_control_support = true;
1188 pdev->prop.simple_clk_stop_capable = true;
1189 if (wcd->is_tx) {
1190 pdev->prop.source_ports = GENMASK(WCD938X_MAX_SWR_PORTS - 1, 0);
1191 pdev->prop.src_dpn_prop = wcd938x_dpn_prop;
1192 wcd->ch_info = &wcd938x_sdw_tx_ch_info[0];
1193 pdev->prop.wake_capable = true;
1195 pdev->prop.sink_ports = GENMASK(WCD938X_MAX_SWR_PORTS - 1, 0);
1196 pdev->prop.sink_dpn_prop = wcd938x_dpn_prop;
1197 wcd->ch_info = &wcd938x_sdw_rx_ch_info[0];
1200 if (wcd->is_tx) {
1201 wcd->regmap = devm_regmap_init_sdw(pdev, &wcd938x_regmap_config);
1202 if (IS_ERR(wcd->regmap))
1203 return dev_err_probe(dev, PTR_ERR(wcd->regmap),
1206 /* Start in cache-only until device is enumerated */
1207 regcache_cache_only(wcd->regmap, true);
1222 struct device *dev = &pdev->dev;
1239 if (wcd->regmap) {
1240 regcache_cache_only(wcd->regmap, true);
1241 regcache_mark_dirty(wcd->regmap);
1251 if (wcd->regmap) {
1252 regcache_cache_only(wcd->regmap, false);
1253 regcache_sync(wcd->regmap);
1272 .name = "wcd9380-codec",
1278 MODULE_DESCRIPTION("WCD938X SDW codec driver");