Lines Matching +full:pcfg +full:-
1 // SPDX-License-Identifier: GPL-2.0
2 // Copyright (c) 2011-2017, The Linux Foundation. All rights reserved.
19 #include <sound/soc-dai.h>
22 #include "q6dsp-errno.h"
131 (AFE_PORT_ID_TDM_PORT_RANGE_START+0x50-1)
135 (AFE_PORT_ID_TDM_PORT_RANGE_END - \
385 /* Reserved for 32-bit alignment. This field must be set to 0.*/
429 * Supported values: - #AFE_SLIMBUS_DEVICE_1 - #AFE_SLIMBUS_DEVICE_2
454 * - #AFE_PORT_SAMPLE_RATE_8K
455 * - #AFE_PORT_SAMPLE_RATE_16K
456 * - #AFE_PORT_SAMPLE_RATE_48K
457 * - #AFE_PORT_SAMPLE_RATE_96K
458 * - #AFE_PORT_SAMPLE_RATE_192K
844 afe = port->afe; in q6afe_port_free()
845 spin_lock_irqsave(&afe->port_list_lock, flags); in q6afe_port_free()
846 list_del(&port->node); in q6afe_port_free()
847 spin_unlock_irqrestore(&afe->port_list_lock, flags); in q6afe_port_free()
848 kfree(port->scfg); in q6afe_port_free()
858 spin_lock_irqsave(&afe->port_list_lock, flags); in q6afe_find_port()
859 list_for_each_entry(p, &afe->port_list, node) in q6afe_find_port()
860 if (p->token == token) { in q6afe_find_port()
862 kref_get(&p->refcount); in q6afe_find_port()
866 spin_unlock_irqrestore(&afe->port_list_lock, flags); in q6afe_find_port()
872 struct q6afe *afe = dev_get_drvdata(&adev->dev); in q6afe_callback()
874 struct apr_hdr *hdr = &data->hdr; in q6afe_callback()
877 if (!data->payload_size) in q6afe_callback()
880 res = data->payload; in q6afe_callback()
881 switch (hdr->opcode) { in q6afe_callback()
883 if (res->status) { in q6afe_callback()
884 dev_err(afe->dev, "cmd = 0x%x returned error = 0x%x\n", in q6afe_callback()
885 res->opcode, res->status); in q6afe_callback()
887 switch (res->opcode) { in q6afe_callback()
892 port = q6afe_find_port(afe, hdr->token); in q6afe_callback()
894 port->result = *res; in q6afe_callback()
895 wake_up(&port->wait); in q6afe_callback()
896 kref_put(&port->refcount, q6afe_port_free); in q6afe_callback()
897 } else if (hdr->token == AFE_CLK_TOKEN) { in q6afe_callback()
898 afe->result = *res; in q6afe_callback()
899 wake_up(&afe->wait); in q6afe_callback()
903 dev_err(afe->dev, "Unknown cmd 0x%x\n", res->opcode); in q6afe_callback()
909 afe->result.opcode = hdr->opcode; in q6afe_callback()
910 afe->result.status = res->status; in q6afe_callback()
911 wake_up(&afe->wait); in q6afe_callback()
921 * q6afe_get_port_id() - Get port id from a given port index
930 return -EINVAL; in q6afe_get_port_id()
943 mutex_lock(&afe->lock); in afe_apr_send_pkt()
945 wait = &port->wait; in afe_apr_send_pkt()
946 result = &port->result; in afe_apr_send_pkt()
948 result = &afe->result; in afe_apr_send_pkt()
949 wait = &afe->wait; in afe_apr_send_pkt()
952 result->opcode = 0; in afe_apr_send_pkt()
953 result->status = 0; in afe_apr_send_pkt()
955 ret = apr_send_pkt(afe->apr, pkt); in afe_apr_send_pkt()
957 dev_err(afe->dev, "packet not transmitted (%d)\n", ret); in afe_apr_send_pkt()
958 ret = -EINVAL; in afe_apr_send_pkt()
962 ret = wait_event_timeout(*wait, (result->opcode == rsp_opcode), in afe_apr_send_pkt()
965 ret = -ETIMEDOUT; in afe_apr_send_pkt()
966 } else if (result->status > 0) { in afe_apr_send_pkt()
967 dev_err(afe->dev, "DSP returned error[%x]\n", in afe_apr_send_pkt()
968 result->status); in afe_apr_send_pkt()
969 ret = -EINVAL; in afe_apr_send_pkt()
975 mutex_unlock(&afe->lock); in afe_apr_send_pkt()
993 return -ENOMEM; in q6afe_set_param()
1001 pkt->hdr.hdr_field = APR_HDR_FIELD(APR_MSG_TYPE_SEQ_CMD, in q6afe_set_param()
1004 pkt->hdr.pkt_size = pkt_size; in q6afe_set_param()
1005 pkt->hdr.src_port = 0; in q6afe_set_param()
1006 pkt->hdr.dest_port = 0; in q6afe_set_param()
1007 pkt->hdr.token = token; in q6afe_set_param()
1008 pkt->hdr.opcode = AFE_SVC_CMD_SET_PARAM; in q6afe_set_param()
1010 param->payload_size = sizeof(*pdata) + psize; in q6afe_set_param()
1011 param->payload_address_lsw = 0x00; in q6afe_set_param()
1012 param->payload_address_msw = 0x00; in q6afe_set_param()
1013 param->mem_map_handle = 0x00; in q6afe_set_param()
1014 pdata->module_id = module_id; in q6afe_set_param()
1015 pdata->param_id = param_id; in q6afe_set_param()
1016 pdata->param_size = psize; in q6afe_set_param()
1020 dev_err(afe->dev, "AFE set params failed %d\n", ret); in q6afe_set_param()
1029 return q6afe_set_param(port->afe, port, data, param_id, module_id, in q6afe_port_set_param()
1030 psize, port->token); in q6afe_port_set_param()
1038 struct q6afe *afe = port->afe; in q6afe_port_set_param_v2()
1040 u16 port_id = port->id; in q6afe_port_set_param_v2()
1047 return -ENOMEM; in q6afe_port_set_param_v2()
1055 pkt->hdr.hdr_field = APR_HDR_FIELD(APR_MSG_TYPE_SEQ_CMD, in q6afe_port_set_param_v2()
1058 pkt->hdr.pkt_size = pkt_size; in q6afe_port_set_param_v2()
1059 pkt->hdr.src_port = 0; in q6afe_port_set_param_v2()
1060 pkt->hdr.dest_port = 0; in q6afe_port_set_param_v2()
1061 pkt->hdr.token = port->token; in q6afe_port_set_param_v2()
1062 pkt->hdr.opcode = AFE_PORT_CMD_SET_PARAM_V2; in q6afe_port_set_param_v2()
1064 param->port_id = port_id; in q6afe_port_set_param_v2()
1065 param->payload_size = sizeof(*pdata) + psize; in q6afe_port_set_param_v2()
1066 param->payload_address_lsw = 0x00; in q6afe_port_set_param_v2()
1067 param->payload_address_msw = 0x00; in q6afe_port_set_param_v2()
1068 param->mem_map_handle = 0x00; in q6afe_port_set_param_v2()
1069 pdata->module_id = module_id; in q6afe_port_set_param_v2()
1070 pdata->param_id = param_id; in q6afe_port_set_param_v2()
1071 pdata->param_size = psize; in q6afe_port_set_param_v2()
1075 dev_err(afe->dev, "AFE enable for port 0x%x failed %d\n", in q6afe_port_set_param_v2()
1110 struct q6afe *afe = dev_get_drvdata(dev->parent); in q6afe_set_lpass_clock()
1172 ret = -EINVAL; in q6afe_port_set_sysclk()
1181 * q6afe_port_stop() - Stop a afe port
1190 struct q6afe *afe = port->afe; in q6afe_port_stop()
1192 int port_id = port->id; in q6afe_port_stop()
1197 index = port->token; in q6afe_port_stop()
1199 dev_err(afe->dev, "AFE port index[%d] invalid!\n", index); in q6afe_port_stop()
1200 return -EINVAL; in q6afe_port_stop()
1206 return -ENOMEM; in q6afe_port_stop()
1211 pkt->hdr.hdr_field = APR_HDR_FIELD(APR_MSG_TYPE_SEQ_CMD, in q6afe_port_stop()
1214 pkt->hdr.pkt_size = pkt_size; in q6afe_port_stop()
1215 pkt->hdr.src_port = 0; in q6afe_port_stop()
1216 pkt->hdr.dest_port = 0; in q6afe_port_stop()
1217 pkt->hdr.token = index; in q6afe_port_stop()
1218 pkt->hdr.opcode = AFE_PORT_CMD_DEVICE_STOP; in q6afe_port_stop()
1219 stop->port_id = port_id; in q6afe_port_stop()
1220 stop->reserved = 0; in q6afe_port_stop()
1224 dev_err(afe->dev, "AFE close failed %d\n", ret); in q6afe_port_stop()
1232 * q6afe_slim_port_prepare() - Prepare slim afe port.
1241 union afe_port_config *pcfg = &port->port_cfg; in q6afe_slim_port_prepare() local
1243 pcfg->slim_cfg.sb_cfg_minor_version = AFE_API_VERSION_SLIMBUS_CONFIG; in q6afe_slim_port_prepare()
1244 pcfg->slim_cfg.sample_rate = cfg->sample_rate; in q6afe_slim_port_prepare()
1245 pcfg->slim_cfg.bit_width = cfg->bit_width; in q6afe_slim_port_prepare()
1246 pcfg->slim_cfg.num_channels = cfg->num_channels; in q6afe_slim_port_prepare()
1247 pcfg->slim_cfg.data_format = cfg->data_format; in q6afe_slim_port_prepare()
1248 pcfg->slim_cfg.shared_ch_mapping[0] = cfg->ch_mapping[0]; in q6afe_slim_port_prepare()
1249 pcfg->slim_cfg.shared_ch_mapping[1] = cfg->ch_mapping[1]; in q6afe_slim_port_prepare()
1250 pcfg->slim_cfg.shared_ch_mapping[2] = cfg->ch_mapping[2]; in q6afe_slim_port_prepare()
1251 pcfg->slim_cfg.shared_ch_mapping[3] = cfg->ch_mapping[3]; in q6afe_slim_port_prepare()
1257 * q6afe_tdm_port_prepare() - Prepare tdm afe port.
1266 union afe_port_config *pcfg = &port->port_cfg; in q6afe_tdm_port_prepare() local
1268 pcfg->tdm_cfg.tdm_cfg_minor_version = AFE_API_VERSION_TDM_CONFIG; in q6afe_tdm_port_prepare()
1269 pcfg->tdm_cfg.num_channels = cfg->num_channels; in q6afe_tdm_port_prepare()
1270 pcfg->tdm_cfg.sample_rate = cfg->sample_rate; in q6afe_tdm_port_prepare()
1271 pcfg->tdm_cfg.bit_width = cfg->bit_width; in q6afe_tdm_port_prepare()
1272 pcfg->tdm_cfg.data_format = cfg->data_format; in q6afe_tdm_port_prepare()
1273 pcfg->tdm_cfg.sync_mode = cfg->sync_mode; in q6afe_tdm_port_prepare()
1274 pcfg->tdm_cfg.sync_src = cfg->sync_src; in q6afe_tdm_port_prepare()
1275 pcfg->tdm_cfg.nslots_per_frame = cfg->nslots_per_frame; in q6afe_tdm_port_prepare()
1277 pcfg->tdm_cfg.slot_width = cfg->slot_width; in q6afe_tdm_port_prepare()
1278 pcfg->tdm_cfg.slot_mask = cfg->slot_mask; in q6afe_tdm_port_prepare()
1279 port->scfg = kzalloc(sizeof(*port->scfg), GFP_KERNEL); in q6afe_tdm_port_prepare()
1280 if (!port->scfg) in q6afe_tdm_port_prepare()
1283 port->scfg->minor_version = AFE_API_VERSION_SLOT_MAPPING_CONFIG; in q6afe_tdm_port_prepare()
1284 port->scfg->num_channels = cfg->num_channels; in q6afe_tdm_port_prepare()
1285 port->scfg->bitwidth = cfg->bit_width; in q6afe_tdm_port_prepare()
1286 port->scfg->data_align_type = cfg->data_align_type; in q6afe_tdm_port_prepare()
1287 memcpy(port->scfg->ch_mapping, cfg->ch_mapping, in q6afe_tdm_port_prepare()
1293 * q6afe_hdmi_port_prepare() - Prepare hdmi afe port.
1302 union afe_port_config *pcfg = &port->port_cfg; in q6afe_hdmi_port_prepare() local
1304 pcfg->hdmi_multi_ch.hdmi_cfg_minor_version = in q6afe_hdmi_port_prepare()
1306 pcfg->hdmi_multi_ch.datatype = cfg->datatype; in q6afe_hdmi_port_prepare()
1307 pcfg->hdmi_multi_ch.channel_allocation = cfg->channel_allocation; in q6afe_hdmi_port_prepare()
1308 pcfg->hdmi_multi_ch.sample_rate = cfg->sample_rate; in q6afe_hdmi_port_prepare()
1309 pcfg->hdmi_multi_ch.bit_width = cfg->bit_width; in q6afe_hdmi_port_prepare()
1314 * q6afe_i2s_port_prepare() - Prepare i2s afe port.
1322 union afe_port_config *pcfg = &port->port_cfg; in q6afe_i2s_port_prepare() local
1323 struct device *dev = port->afe->dev; in q6afe_i2s_port_prepare()
1326 pcfg->i2s_cfg.i2s_cfg_minor_version = AFE_API_VERSION_I2S_CONFIG; in q6afe_i2s_port_prepare()
1327 pcfg->i2s_cfg.sample_rate = cfg->sample_rate; in q6afe_i2s_port_prepare()
1328 pcfg->i2s_cfg.bit_width = cfg->bit_width; in q6afe_i2s_port_prepare()
1329 pcfg->i2s_cfg.data_format = AFE_LINEAR_PCM_DATA; in q6afe_i2s_port_prepare()
1331 switch (cfg->fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) { in q6afe_i2s_port_prepare()
1333 pcfg->i2s_cfg.ws_src = AFE_PORT_CONFIG_I2S_WS_SRC_INTERNAL; in q6afe_i2s_port_prepare()
1337 pcfg->i2s_cfg.ws_src = AFE_PORT_CONFIG_I2S_WS_SRC_EXTERNAL; in q6afe_i2s_port_prepare()
1343 num_sd_lines = hweight_long(cfg->sd_line_mask); in q6afe_i2s_port_prepare()
1348 return -EINVAL; in q6afe_i2s_port_prepare()
1350 switch (cfg->sd_line_mask) { in q6afe_i2s_port_prepare()
1352 pcfg->i2s_cfg.channel_mode = AFE_PORT_I2S_SD0; in q6afe_i2s_port_prepare()
1355 pcfg->i2s_cfg.channel_mode = AFE_PORT_I2S_SD1; in q6afe_i2s_port_prepare()
1358 pcfg->i2s_cfg.channel_mode = AFE_PORT_I2S_SD2; in q6afe_i2s_port_prepare()
1361 pcfg->i2s_cfg.channel_mode = AFE_PORT_I2S_SD3; in q6afe_i2s_port_prepare()
1365 return -EINVAL; in q6afe_i2s_port_prepare()
1369 switch (cfg->sd_line_mask) { in q6afe_i2s_port_prepare()
1371 pcfg->i2s_cfg.channel_mode = AFE_PORT_I2S_QUAD01; in q6afe_i2s_port_prepare()
1374 pcfg->i2s_cfg.channel_mode = AFE_PORT_I2S_QUAD23; in q6afe_i2s_port_prepare()
1378 return -EINVAL; in q6afe_i2s_port_prepare()
1382 switch (cfg->sd_line_mask) { in q6afe_i2s_port_prepare()
1384 pcfg->i2s_cfg.channel_mode = AFE_PORT_I2S_6CHS; in q6afe_i2s_port_prepare()
1388 return -EINVAL; in q6afe_i2s_port_prepare()
1392 switch (cfg->sd_line_mask) { in q6afe_i2s_port_prepare()
1394 pcfg->i2s_cfg.channel_mode = AFE_PORT_I2S_8CHS; in q6afe_i2s_port_prepare()
1399 return -EINVAL; in q6afe_i2s_port_prepare()
1404 return -EINVAL; in q6afe_i2s_port_prepare()
1407 switch (cfg->num_channels) { in q6afe_i2s_port_prepare()
1410 switch (pcfg->i2s_cfg.channel_mode) { in q6afe_i2s_port_prepare()
1414 pcfg->i2s_cfg.channel_mode = AFE_PORT_I2S_SD0; in q6afe_i2s_port_prepare()
1417 pcfg->i2s_cfg.channel_mode = AFE_PORT_I2S_SD2; in q6afe_i2s_port_prepare()
1421 if (cfg->num_channels == 2) in q6afe_i2s_port_prepare()
1422 pcfg->i2s_cfg.mono_stereo = AFE_PORT_I2S_STEREO; in q6afe_i2s_port_prepare()
1424 pcfg->i2s_cfg.mono_stereo = AFE_PORT_I2S_MONO; in q6afe_i2s_port_prepare()
1429 if (pcfg->i2s_cfg.channel_mode < AFE_PORT_I2S_QUAD01) { in q6afe_i2s_port_prepare()
1431 return -EINVAL; in q6afe_i2s_port_prepare()
1436 if (pcfg->i2s_cfg.channel_mode < AFE_PORT_I2S_6CHS) { in q6afe_i2s_port_prepare()
1438 return -EINVAL; in q6afe_i2s_port_prepare()
1443 if (pcfg->i2s_cfg.channel_mode < AFE_PORT_I2S_8CHS) { in q6afe_i2s_port_prepare()
1445 return -EINVAL; in q6afe_i2s_port_prepare()
1457 * q6afe_cdc_dma_port_prepare() - Prepare dma afe port.
1466 union afe_port_config *pcfg = &port->port_cfg; in q6afe_cdc_dma_port_prepare() local
1467 struct afe_param_id_cdc_dma_cfg *dma_cfg = &pcfg->dma_cfg; in q6afe_cdc_dma_port_prepare()
1469 dma_cfg->cdc_dma_cfg_minor_version = AFE_API_VERSION_CODEC_DMA_CONFIG; in q6afe_cdc_dma_port_prepare()
1470 dma_cfg->sample_rate = cfg->sample_rate; in q6afe_cdc_dma_port_prepare()
1471 dma_cfg->bit_width = cfg->bit_width; in q6afe_cdc_dma_port_prepare()
1472 dma_cfg->data_format = cfg->data_format; in q6afe_cdc_dma_port_prepare()
1473 dma_cfg->num_channels = cfg->num_channels; in q6afe_cdc_dma_port_prepare()
1474 if (!cfg->active_channels_mask) in q6afe_cdc_dma_port_prepare()
1475 dma_cfg->active_channels_mask = (1 << cfg->num_channels) - 1; in q6afe_cdc_dma_port_prepare()
1479 * q6afe_port_start() - Start a afe port
1488 struct q6afe *afe = port->afe; in q6afe_port_start()
1489 int port_id = port->id; in q6afe_port_start()
1490 int ret, param_id = port->cfg_type; in q6afe_port_start()
1495 ret = q6afe_port_set_param_v2(port, &port->port_cfg, param_id, in q6afe_port_start()
1497 sizeof(port->port_cfg)); in q6afe_port_start()
1499 dev_err(afe->dev, "AFE enable for port 0x%x failed %d\n", in q6afe_port_start()
1504 if (port->scfg) { in q6afe_port_start()
1505 ret = q6afe_port_set_param_v2(port, port->scfg, in q6afe_port_start()
1507 AFE_MODULE_TDM, sizeof(*port->scfg)); in q6afe_port_start()
1509 dev_err(afe->dev, "AFE enable for port 0x%x failed %d\n", in q6afe_port_start()
1518 return -ENOMEM; in q6afe_port_start()
1523 pkt->hdr.hdr_field = APR_HDR_FIELD(APR_MSG_TYPE_SEQ_CMD, in q6afe_port_start()
1526 pkt->hdr.pkt_size = pkt_size; in q6afe_port_start()
1527 pkt->hdr.src_port = 0; in q6afe_port_start()
1528 pkt->hdr.dest_port = 0; in q6afe_port_start()
1529 pkt->hdr.token = port->token; in q6afe_port_start()
1530 pkt->hdr.opcode = AFE_PORT_CMD_DEVICE_START; in q6afe_port_start()
1532 start->port_id = port_id; in q6afe_port_start()
1536 dev_err(afe->dev, "AFE enable for port 0x%x failed %d\n", in q6afe_port_start()
1545 * q6afe_port_get_from_id() - Get port instance from a port id
1556 struct q6afe *afe = dev_get_drvdata(dev->parent); in q6afe_port_get_from_id()
1563 return ERR_PTR(-EINVAL); in q6afe_port_get_from_id()
1617 return ERR_PTR(-EINVAL); in q6afe_port_get_from_id()
1622 return ERR_PTR(-ENOMEM); in q6afe_port_get_from_id()
1624 init_waitqueue_head(&port->wait); in q6afe_port_get_from_id()
1626 port->token = id; in q6afe_port_get_from_id()
1627 port->id = port_id; in q6afe_port_get_from_id()
1628 port->afe = afe; in q6afe_port_get_from_id()
1629 port->cfg_type = cfg_type; in q6afe_port_get_from_id()
1630 kref_init(&port->refcount); in q6afe_port_get_from_id()
1632 spin_lock_irqsave(&afe->port_list_lock, flags); in q6afe_port_get_from_id()
1633 list_add_tail(&port->node, &afe->port_list); in q6afe_port_get_from_id()
1634 spin_unlock_irqrestore(&afe->port_list_lock, flags); in q6afe_port_get_from_id()
1642 * q6afe_port_put() - Release port reference
1648 kref_put(&port->refcount, q6afe_port_free); in q6afe_port_put()
1655 struct q6afe *afe = dev_get_drvdata(dev->parent); in q6afe_unvote_lpass_core_hw()
1665 return -ENOMEM; in q6afe_unvote_lpass_core_hw()
1670 pkt->hdr.hdr_field = APR_HDR_FIELD(APR_MSG_TYPE_SEQ_CMD, in q6afe_unvote_lpass_core_hw()
1673 pkt->hdr.pkt_size = pkt_size; in q6afe_unvote_lpass_core_hw()
1674 pkt->hdr.src_port = 0; in q6afe_unvote_lpass_core_hw()
1675 pkt->hdr.dest_port = 0; in q6afe_unvote_lpass_core_hw()
1676 pkt->hdr.token = hw_block_id; in q6afe_unvote_lpass_core_hw()
1677 pkt->hdr.opcode = AFE_CMD_REMOTE_LPASS_CORE_HW_DEVOTE_REQUEST; in q6afe_unvote_lpass_core_hw()
1678 vote_cfg->hw_block_id = hw_block_id; in q6afe_unvote_lpass_core_hw()
1679 vote_cfg->client_handle = client_handle; in q6afe_unvote_lpass_core_hw()
1681 ret = apr_send_pkt(afe->apr, pkt); in q6afe_unvote_lpass_core_hw()
1683 dev_err(afe->dev, "AFE failed to unvote (%d)\n", hw_block_id); in q6afe_unvote_lpass_core_hw()
1693 struct q6afe *afe = dev_get_drvdata(dev->parent); in q6afe_vote_lpass_core_hw()
1703 return -ENOMEM; in q6afe_vote_lpass_core_hw()
1708 pkt->hdr.hdr_field = APR_HDR_FIELD(APR_MSG_TYPE_SEQ_CMD, in q6afe_vote_lpass_core_hw()
1711 pkt->hdr.pkt_size = pkt_size; in q6afe_vote_lpass_core_hw()
1712 pkt->hdr.src_port = 0; in q6afe_vote_lpass_core_hw()
1713 pkt->hdr.dest_port = 0; in q6afe_vote_lpass_core_hw()
1714 pkt->hdr.token = hw_block_id; in q6afe_vote_lpass_core_hw()
1715 pkt->hdr.opcode = AFE_CMD_REMOTE_LPASS_CORE_HW_VOTE_REQUEST; in q6afe_vote_lpass_core_hw()
1716 vote_cfg->hw_block_id = hw_block_id; in q6afe_vote_lpass_core_hw()
1717 strscpy(vote_cfg->client_name, client_name, in q6afe_vote_lpass_core_hw()
1718 sizeof(vote_cfg->client_name)); in q6afe_vote_lpass_core_hw()
1723 dev_err(afe->dev, "AFE failed to vote (%d)\n", hw_block_id); in q6afe_vote_lpass_core_hw()
1734 struct device *dev = &adev->dev; in q6afe_probe()
1738 return -ENOMEM; in q6afe_probe()
1740 q6core_get_svc_api_info(adev->svc_id, &afe->ainfo); in q6afe_probe()
1741 afe->apr = adev; in q6afe_probe()
1742 mutex_init(&afe->lock); in q6afe_probe()
1743 init_waitqueue_head(&afe->wait); in q6afe_probe()
1744 afe->dev = dev; in q6afe_probe()
1745 INIT_LIST_HEAD(&afe->port_list); in q6afe_probe()
1746 spin_lock_init(&afe->port_list_lock); in q6afe_probe()
1765 .name = "qcom-q6afe",