Loading asoc/codecs/wsa883x/wsa883x.c +10 −0 Original line number Diff line number Diff line Loading @@ -1387,15 +1387,23 @@ static int wsa883x_swr_probe(struct swr_device *pdev) wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_OCP, "WSA OCP", wsa883x_ocp_handle_irq, NULL); wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_OCP); wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_CLIP, "WSA CLIP", wsa883x_clip_handle_irq, NULL); wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_CLIP); wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_PDM_WD, "WSA PDM WD", wsa883x_pdm_wd_handle_irq, NULL); wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_PDM_WD); wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_CLK_WD, "WSA CLK WD", wsa883x_clk_wd_handle_irq, NULL); wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_CLK_WD); wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_INTR_PIN, "WSA EXT INT", wsa883x_ext_int_handle_irq, NULL); Loading @@ -1406,6 +1414,8 @@ static int wsa883x_swr_probe(struct swr_device *pdev) wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_PA_ON_ERR, "WSA PA ERR", wsa883x_pa_on_err_handle_irq, NULL); wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_PA_ON_ERR); ret = snd_soc_register_component(&pdev->dev, &soc_codec_dev_wsa883x, NULL, 0); if (ret) { Loading asoc/lahaina.c +33 −43 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ #include "asoc/msm-cdc-pinctrl.h" #include "asoc/wcd-mbhc-v2.h" #include "codecs/wcd938x/wcd938x-mbhc.h" #include "codecs/wsa881x.h" #include "codecs/wsa883x/wsa883x.h" #include "codecs/wcd938x/wcd938x.h" #include "codecs/bolero/bolero-cdc.h" #include <dt-bindings/sound/audio-codec-port-types.h> Loading Loading @@ -78,8 +78,6 @@ #define ADSP_STATE_READY_TIMEOUT_MS 3000 #define WSA8810_NAME_1 "wsa881x.20170211" #define WSA8810_NAME_2 "wsa881x.20170212" #define WCN_CDC_SLIM_RX_CH_MAX 2 #define WCN_CDC_SLIM_TX_CH_MAX 2 #define WCN_CDC_SLIM_TX_CH_MAX_LITO 3 Loading Loading @@ -173,6 +171,12 @@ enum { AFE_LOOPBACK_TX_IDX = 0, AFE_LOOPBACK_TX_IDX_MAX, }; static const char* wsa883x_devices[] = { "wsa883x.202170221", "wsa883x.202170222", }; struct msm_asoc_mach_data { struct snd_info_entry *codec_root; int usbc_en2_gpio; /* used by gpio driver API */ Loading Loading @@ -207,7 +211,7 @@ enum { EXT_DISP_RX_IDX_MAX, }; struct msm_wsa881x_dev_info { struct msm_wsa883x_dev_info { struct device_node *of_node; u32 index; }; Loading Loading @@ -5328,7 +5332,6 @@ static int msm_int_audrx_init(struct snd_soc_pcm_runtime *rtd) struct snd_soc_dapm_context *dapm; struct snd_card *card; struct snd_info_entry *entry; struct snd_soc_component *aux_comp; struct msm_asoc_mach_data *pdata = snd_soc_card_get_drvdata(rtd->card); Loading Loading @@ -5389,18 +5392,6 @@ static int msm_int_audrx_init(struct snd_soc_pcm_runtime *rtd) __func__, rtd->card->num_aux_devs); if (rtd->card->num_aux_devs && !list_empty(&rtd->card->component_dev_list)) { list_for_each_entry(aux_comp, &rtd->card->aux_comp_list, card_aux_list) { if (aux_comp->name != NULL && ( !strcmp(aux_comp->name, WSA8810_NAME_1) || !strcmp(aux_comp->name, WSA8810_NAME_2))) { wsa_macro_set_spkr_mode(component, WSA_MACRO_SPKR_MODE_1); wsa_macro_set_spkr_gain_offset(component, WSA_MACRO_GAIN_OFFSET_M1P5_DB); } } if (pdata->lito_v2_enabled) { /* * Enable tx data line3 for saipan version v2 amd Loading Loading @@ -7151,16 +7142,16 @@ static struct snd_soc_card *populate_snd_card_dailinks(struct device *dev) } #if IS_ENABLED(CONFIG_AUDIO_QGKI) static int msm_wsa881x_init(struct snd_soc_component *component) static int msm_wsa883x_init(struct snd_soc_component *component) { u8 spkleft_ports[WSA881X_MAX_SWR_PORTS] = {0, 1, 2, 3}; u8 spkright_ports[WSA881X_MAX_SWR_PORTS] = {0, 1, 2, 3}; u8 spkleft_port_types[WSA881X_MAX_SWR_PORTS] = {SPKR_L, SPKR_L_COMP, u8 spkleft_ports[WSA883X_MAX_SWR_PORTS] = {0, 1, 2, 3}; u8 spkright_ports[WSA883X_MAX_SWR_PORTS] = {0, 1, 2, 3}; u8 spkleft_port_types[WSA883X_MAX_SWR_PORTS] = {SPKR_L, SPKR_L_COMP, SPKR_L_BOOST, SPKR_L_VI}; u8 spkright_port_types[WSA881X_MAX_SWR_PORTS] = {SPKR_R, SPKR_R_COMP, u8 spkright_port_types[WSA883X_MAX_SWR_PORTS] = {SPKR_R, SPKR_R_COMP, SPKR_R_BOOST, SPKR_R_VI}; unsigned int ch_rate[WSA881X_MAX_SWR_PORTS] = {2400, 600, 300, 1200}; unsigned int ch_mask[WSA881X_MAX_SWR_PORTS] = {0x1, 0xF, 0x3, 0x3}; unsigned int ch_rate[WSA883X_MAX_SWR_PORTS] = {2400, 600, 300, 1200}; unsigned int ch_mask[WSA883X_MAX_SWR_PORTS] = {0x1, 0xF, 0x3, 0x3}; struct msm_asoc_mach_data *pdata; struct snd_soc_dapm_context *dapm; struct snd_card *card; Loading @@ -7178,8 +7169,8 @@ static int msm_wsa881x_init(struct snd_soc_component *component) if (!strcmp(component->name_prefix, "SpkrLeft")) { dev_dbg(component->dev, "%s: setting left ch map to codec %s\n", __func__, component->name); wsa881x_set_channel_map(component, &spkleft_ports[0], WSA881X_MAX_SWR_PORTS, &ch_mask[0], wsa883x_set_channel_map(component, &spkleft_ports[0], WSA883X_MAX_SWR_PORTS, &ch_mask[0], &ch_rate[0], &spkleft_port_types[0]); if (dapm->component) { snd_soc_dapm_ignore_suspend(dapm, "SpkrLeft IN"); Loading @@ -7188,8 +7179,8 @@ static int msm_wsa881x_init(struct snd_soc_component *component) } else if (!strcmp(component->name_prefix, "SpkrRight")) { dev_dbg(component->dev, "%s: setting right ch map to codec %s\n", __func__, component->name); wsa881x_set_channel_map(component, &spkright_ports[0], WSA881X_MAX_SWR_PORTS, &ch_mask[0], wsa883x_set_channel_map(component, &spkright_ports[0], WSA883X_MAX_SWR_PORTS, &ch_mask[0], &ch_rate[0], &spkright_port_types[0]); if (dapm->component) { snd_soc_dapm_ignore_suspend(dapm, "SpkrRight IN"); Loading @@ -7213,7 +7204,7 @@ static int msm_wsa881x_init(struct snd_soc_component *component) } pdata->codec_root = entry; } wsa881x_codec_info_create_codec_entry(pdata->codec_root, wsa883x_codec_info_create_codec_entry(pdata->codec_root, component); err: return ret; Loading Loading @@ -7298,8 +7289,8 @@ static int msm_init_aux_dev(struct platform_device *pdev, u32 codec_max_aux_devs = 0; u32 codec_aux_dev_cnt = 0; int i; struct msm_wsa881x_dev_info *wsa881x_dev_info; struct aux_codec_dev_info *aux_cdc_dev_info; struct msm_wsa883x_dev_info *wsa883x_dev_info; struct aux_codec_dev_info *aux_cdc_dev_info = NULL; struct snd_soc_dai_link_component *dlc; const char *auxdev_name_prefix[1]; char *dev_name_str = NULL; Loading Loading @@ -7369,10 +7360,10 @@ static int msm_init_aux_dev(struct platform_device *pdev, * Alloc mem to store phandle and index info of WSA device, if already * registered with ALSA core */ wsa881x_dev_info = devm_kcalloc(&pdev->dev, wsa_max_devs, sizeof(struct msm_wsa881x_dev_info), wsa883x_dev_info = devm_kcalloc(&pdev->dev, wsa_max_devs, sizeof(struct msm_wsa883x_dev_info), GFP_KERNEL); if (!wsa881x_dev_info) { if (!wsa883x_dev_info) { ret = -ENOMEM; goto err; } Loading @@ -7398,8 +7389,8 @@ static int msm_init_aux_dev(struct platform_device *pdev, dlc->name = NULL; if (soc_find_component(dlc)) { /* WSA device registered with ALSA core */ wsa881x_dev_info[found].of_node = wsa_of_node; wsa881x_dev_info[found].index = i; wsa883x_dev_info[found].of_node = wsa_of_node; wsa883x_dev_info[found].index = i; found++; if (found == wsa_max_devs) break; Loading @@ -7413,7 +7404,7 @@ static int msm_init_aux_dev(struct platform_device *pdev, return -EPROBE_DEFER; } dev_info(&pdev->dev, "%s: found %d wsa881x devices registered with ALSA core\n", "%s: found %d wsa883x devices registered with ALSA core\n", __func__, found); codec_aux_dev: Loading Loading @@ -7546,7 +7537,7 @@ static int msm_init_aux_dev(struct platform_device *pdev, ret = of_property_read_string_index(pdev->dev.of_node, "qcom,wsa-aux-dev-prefix", wsa881x_dev_info[i].index, wsa883x_dev_info[i].index, auxdev_name_prefix); if (ret) { dev_err(&pdev->dev, Loading @@ -7556,16 +7547,15 @@ static int msm_init_aux_dev(struct platform_device *pdev, goto err; } snprintf(dev_name_str, strlen("wsa881x.%d"), "wsa881x.%d", i); msm_aux_dev[i].dlc.name = dev_name_str; msm_aux_dev[i].dlc.name = wsa883x_devices[i]; msm_aux_dev[i].dlc.dai_name = NULL; msm_aux_dev[i].dlc.of_node = wsa881x_dev_info[i].of_node; msm_aux_dev[i].init = msm_wsa881x_init; wsa883x_dev_info[i].of_node; msm_aux_dev[i].init = msm_wsa883x_init; msm_codec_conf[i].dev_name = NULL; msm_codec_conf[i].name_prefix = auxdev_name_prefix[0]; msm_codec_conf[i].of_node = wsa881x_dev_info[i].of_node; wsa883x_dev_info[i].of_node; } for (i = 0; i < codec_aux_dev_cnt; i++) { Loading soc/swr-mstr-ctrl.c +17 −11 Original line number Diff line number Diff line Loading @@ -1031,7 +1031,7 @@ static void swrm_disable_ports(struct swr_master *master, bank)); dev_dbg(swrm->dev, "%s: mport :%d, reg: 0x%x\n", __func__, i, (SWRM_DP_PORT_CTRL_BANK(i + 1, bank))); (SWRM_DP_PORT_CTRL_BANK((i + 1), bank))); } value = ((mport->req_ch) << SWRM_DP_PORT_CTRL_EN_CHAN_SHFT); Loading @@ -1042,11 +1042,11 @@ static void swrm_disable_ports(struct swr_master *master, value |= mport->sinterval; swr_master_write(swrm, SWRM_DP_PORT_CTRL_BANK(i+1, bank), SWRM_DP_PORT_CTRL_BANK((i + 1), bank), value); dev_dbg(swrm->dev, "%s: mport :%d, reg: 0x%x, val: 0x%x\n", __func__, i, (SWRM_DP_PORT_CTRL_BANK(i+1, bank)), value); (SWRM_DP_PORT_CTRL_BANK((i + 1), bank)), value); if (mport->stream_type == SWR_PCM) swrm_pcm_port_config(swrm, i, mport->dir, false); Loading Loading @@ -1203,37 +1203,37 @@ static void swrm_copy_data_port_config(struct swr_master *master, u8 bank) value |= mport->sinterval; reg[len] = SWRM_DP_PORT_CTRL_BANK(i + 1, bank); reg[len] = SWRM_DP_PORT_CTRL_BANK((i + 1), bank); val[len++] = value; dev_dbg(swrm->dev, "%s: mport :%d, reg: 0x%x, val: 0x%x\n", __func__, i, (SWRM_DP_PORT_CTRL_BANK(i + 1, bank)), value); (SWRM_DP_PORT_CTRL_BANK((i + 1), bank)), value); if (mport->lane_ctrl != SWR_INVALID_PARAM) { reg[len] = SWRM_DP_PORT_CTRL_2_BANK(i + 1, bank); reg[len] = SWRM_DP_PORT_CTRL_2_BANK((i + 1), bank); val[len++] = mport->lane_ctrl; } if (mport->word_length != SWR_INVALID_PARAM) { reg[len] = SWRM_DP_BLOCK_CTRL_1(i + 1); reg[len] = SWRM_DP_BLOCK_CTRL_1((i + 1)); val[len++] = mport->word_length; } if (mport->blk_grp_count != SWR_INVALID_PARAM) { reg[len] = SWRM_DP_BLOCK_CTRL2_BANK(i + 1, bank); reg[len] = SWRM_DP_BLOCK_CTRL2_BANK((i + 1), bank); val[len++] = mport->blk_grp_count; } if (mport->hstart != SWR_INVALID_PARAM && mport->hstop != SWR_INVALID_PARAM) { reg[len] = SWRM_DP_PORT_HCTRL_BANK(i + 1, bank); reg[len] = SWRM_DP_PORT_HCTRL_BANK((i + 1), bank); hparams = (mport->hstop << 4) | mport->hstart; val[len++] = hparams; } else { reg[len] = SWRM_DP_PORT_HCTRL_BANK(i + 1, bank); reg[len] = SWRM_DP_PORT_HCTRL_BANK((i + 1), bank); hparams = (SWR_HSTOP_MAX_VAL << 4) | SWR_HSTART_MIN_VAL; val[len++] = hparams; } if (mport->blk_pack_mode != SWR_INVALID_PARAM) { reg[len] = SWRM_DP_BLOCK_CTRL3_BANK(i + 1, bank); reg[len] = SWRM_DP_BLOCK_CTRL3_BANK((i + 1), bank); val[len++] = mport->blk_pack_mode; } mport->ch_en = mport->req_ch; Loading Loading @@ -2585,6 +2585,7 @@ static int swrm_runtime_resume(struct device *dev) bool aud_core_err = false; struct swr_master *mstr = &swrm->master; struct swr_device *swr_dev; u32 temp = 0; dev_dbg(dev, "%s: pm_runtime: resume, state:%d\n", __func__, swrm->state); Loading Loading @@ -2664,6 +2665,11 @@ static int swrm_runtime_resume(struct device *dev) mutex_lock(&swrm->reslock); } } else { if (swrm->swrm_hctl_reg) { temp = ioread32(swrm->swrm_hctl_reg); temp &= 0xFFFFFFFD; iowrite32(temp, swrm->swrm_hctl_reg); } /*wake up from clock stop*/ swr_master_write(swrm, SWRM_MCP_BUS_CTRL, 0x2); /* clear and enable bus clash interrupt */ Loading Loading
asoc/codecs/wsa883x/wsa883x.c +10 −0 Original line number Diff line number Diff line Loading @@ -1387,15 +1387,23 @@ static int wsa883x_swr_probe(struct swr_device *pdev) wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_OCP, "WSA OCP", wsa883x_ocp_handle_irq, NULL); wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_OCP); wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_CLIP, "WSA CLIP", wsa883x_clip_handle_irq, NULL); wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_CLIP); wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_PDM_WD, "WSA PDM WD", wsa883x_pdm_wd_handle_irq, NULL); wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_PDM_WD); wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_CLK_WD, "WSA CLK WD", wsa883x_clk_wd_handle_irq, NULL); wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_CLK_WD); wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_INTR_PIN, "WSA EXT INT", wsa883x_ext_int_handle_irq, NULL); Loading @@ -1406,6 +1414,8 @@ static int wsa883x_swr_probe(struct swr_device *pdev) wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_PA_ON_ERR, "WSA PA ERR", wsa883x_pa_on_err_handle_irq, NULL); wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_PA_ON_ERR); ret = snd_soc_register_component(&pdev->dev, &soc_codec_dev_wsa883x, NULL, 0); if (ret) { Loading
asoc/lahaina.c +33 −43 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ #include "asoc/msm-cdc-pinctrl.h" #include "asoc/wcd-mbhc-v2.h" #include "codecs/wcd938x/wcd938x-mbhc.h" #include "codecs/wsa881x.h" #include "codecs/wsa883x/wsa883x.h" #include "codecs/wcd938x/wcd938x.h" #include "codecs/bolero/bolero-cdc.h" #include <dt-bindings/sound/audio-codec-port-types.h> Loading Loading @@ -78,8 +78,6 @@ #define ADSP_STATE_READY_TIMEOUT_MS 3000 #define WSA8810_NAME_1 "wsa881x.20170211" #define WSA8810_NAME_2 "wsa881x.20170212" #define WCN_CDC_SLIM_RX_CH_MAX 2 #define WCN_CDC_SLIM_TX_CH_MAX 2 #define WCN_CDC_SLIM_TX_CH_MAX_LITO 3 Loading Loading @@ -173,6 +171,12 @@ enum { AFE_LOOPBACK_TX_IDX = 0, AFE_LOOPBACK_TX_IDX_MAX, }; static const char* wsa883x_devices[] = { "wsa883x.202170221", "wsa883x.202170222", }; struct msm_asoc_mach_data { struct snd_info_entry *codec_root; int usbc_en2_gpio; /* used by gpio driver API */ Loading Loading @@ -207,7 +211,7 @@ enum { EXT_DISP_RX_IDX_MAX, }; struct msm_wsa881x_dev_info { struct msm_wsa883x_dev_info { struct device_node *of_node; u32 index; }; Loading Loading @@ -5328,7 +5332,6 @@ static int msm_int_audrx_init(struct snd_soc_pcm_runtime *rtd) struct snd_soc_dapm_context *dapm; struct snd_card *card; struct snd_info_entry *entry; struct snd_soc_component *aux_comp; struct msm_asoc_mach_data *pdata = snd_soc_card_get_drvdata(rtd->card); Loading Loading @@ -5389,18 +5392,6 @@ static int msm_int_audrx_init(struct snd_soc_pcm_runtime *rtd) __func__, rtd->card->num_aux_devs); if (rtd->card->num_aux_devs && !list_empty(&rtd->card->component_dev_list)) { list_for_each_entry(aux_comp, &rtd->card->aux_comp_list, card_aux_list) { if (aux_comp->name != NULL && ( !strcmp(aux_comp->name, WSA8810_NAME_1) || !strcmp(aux_comp->name, WSA8810_NAME_2))) { wsa_macro_set_spkr_mode(component, WSA_MACRO_SPKR_MODE_1); wsa_macro_set_spkr_gain_offset(component, WSA_MACRO_GAIN_OFFSET_M1P5_DB); } } if (pdata->lito_v2_enabled) { /* * Enable tx data line3 for saipan version v2 amd Loading Loading @@ -7151,16 +7142,16 @@ static struct snd_soc_card *populate_snd_card_dailinks(struct device *dev) } #if IS_ENABLED(CONFIG_AUDIO_QGKI) static int msm_wsa881x_init(struct snd_soc_component *component) static int msm_wsa883x_init(struct snd_soc_component *component) { u8 spkleft_ports[WSA881X_MAX_SWR_PORTS] = {0, 1, 2, 3}; u8 spkright_ports[WSA881X_MAX_SWR_PORTS] = {0, 1, 2, 3}; u8 spkleft_port_types[WSA881X_MAX_SWR_PORTS] = {SPKR_L, SPKR_L_COMP, u8 spkleft_ports[WSA883X_MAX_SWR_PORTS] = {0, 1, 2, 3}; u8 spkright_ports[WSA883X_MAX_SWR_PORTS] = {0, 1, 2, 3}; u8 spkleft_port_types[WSA883X_MAX_SWR_PORTS] = {SPKR_L, SPKR_L_COMP, SPKR_L_BOOST, SPKR_L_VI}; u8 spkright_port_types[WSA881X_MAX_SWR_PORTS] = {SPKR_R, SPKR_R_COMP, u8 spkright_port_types[WSA883X_MAX_SWR_PORTS] = {SPKR_R, SPKR_R_COMP, SPKR_R_BOOST, SPKR_R_VI}; unsigned int ch_rate[WSA881X_MAX_SWR_PORTS] = {2400, 600, 300, 1200}; unsigned int ch_mask[WSA881X_MAX_SWR_PORTS] = {0x1, 0xF, 0x3, 0x3}; unsigned int ch_rate[WSA883X_MAX_SWR_PORTS] = {2400, 600, 300, 1200}; unsigned int ch_mask[WSA883X_MAX_SWR_PORTS] = {0x1, 0xF, 0x3, 0x3}; struct msm_asoc_mach_data *pdata; struct snd_soc_dapm_context *dapm; struct snd_card *card; Loading @@ -7178,8 +7169,8 @@ static int msm_wsa881x_init(struct snd_soc_component *component) if (!strcmp(component->name_prefix, "SpkrLeft")) { dev_dbg(component->dev, "%s: setting left ch map to codec %s\n", __func__, component->name); wsa881x_set_channel_map(component, &spkleft_ports[0], WSA881X_MAX_SWR_PORTS, &ch_mask[0], wsa883x_set_channel_map(component, &spkleft_ports[0], WSA883X_MAX_SWR_PORTS, &ch_mask[0], &ch_rate[0], &spkleft_port_types[0]); if (dapm->component) { snd_soc_dapm_ignore_suspend(dapm, "SpkrLeft IN"); Loading @@ -7188,8 +7179,8 @@ static int msm_wsa881x_init(struct snd_soc_component *component) } else if (!strcmp(component->name_prefix, "SpkrRight")) { dev_dbg(component->dev, "%s: setting right ch map to codec %s\n", __func__, component->name); wsa881x_set_channel_map(component, &spkright_ports[0], WSA881X_MAX_SWR_PORTS, &ch_mask[0], wsa883x_set_channel_map(component, &spkright_ports[0], WSA883X_MAX_SWR_PORTS, &ch_mask[0], &ch_rate[0], &spkright_port_types[0]); if (dapm->component) { snd_soc_dapm_ignore_suspend(dapm, "SpkrRight IN"); Loading @@ -7213,7 +7204,7 @@ static int msm_wsa881x_init(struct snd_soc_component *component) } pdata->codec_root = entry; } wsa881x_codec_info_create_codec_entry(pdata->codec_root, wsa883x_codec_info_create_codec_entry(pdata->codec_root, component); err: return ret; Loading Loading @@ -7298,8 +7289,8 @@ static int msm_init_aux_dev(struct platform_device *pdev, u32 codec_max_aux_devs = 0; u32 codec_aux_dev_cnt = 0; int i; struct msm_wsa881x_dev_info *wsa881x_dev_info; struct aux_codec_dev_info *aux_cdc_dev_info; struct msm_wsa883x_dev_info *wsa883x_dev_info; struct aux_codec_dev_info *aux_cdc_dev_info = NULL; struct snd_soc_dai_link_component *dlc; const char *auxdev_name_prefix[1]; char *dev_name_str = NULL; Loading Loading @@ -7369,10 +7360,10 @@ static int msm_init_aux_dev(struct platform_device *pdev, * Alloc mem to store phandle and index info of WSA device, if already * registered with ALSA core */ wsa881x_dev_info = devm_kcalloc(&pdev->dev, wsa_max_devs, sizeof(struct msm_wsa881x_dev_info), wsa883x_dev_info = devm_kcalloc(&pdev->dev, wsa_max_devs, sizeof(struct msm_wsa883x_dev_info), GFP_KERNEL); if (!wsa881x_dev_info) { if (!wsa883x_dev_info) { ret = -ENOMEM; goto err; } Loading @@ -7398,8 +7389,8 @@ static int msm_init_aux_dev(struct platform_device *pdev, dlc->name = NULL; if (soc_find_component(dlc)) { /* WSA device registered with ALSA core */ wsa881x_dev_info[found].of_node = wsa_of_node; wsa881x_dev_info[found].index = i; wsa883x_dev_info[found].of_node = wsa_of_node; wsa883x_dev_info[found].index = i; found++; if (found == wsa_max_devs) break; Loading @@ -7413,7 +7404,7 @@ static int msm_init_aux_dev(struct platform_device *pdev, return -EPROBE_DEFER; } dev_info(&pdev->dev, "%s: found %d wsa881x devices registered with ALSA core\n", "%s: found %d wsa883x devices registered with ALSA core\n", __func__, found); codec_aux_dev: Loading Loading @@ -7546,7 +7537,7 @@ static int msm_init_aux_dev(struct platform_device *pdev, ret = of_property_read_string_index(pdev->dev.of_node, "qcom,wsa-aux-dev-prefix", wsa881x_dev_info[i].index, wsa883x_dev_info[i].index, auxdev_name_prefix); if (ret) { dev_err(&pdev->dev, Loading @@ -7556,16 +7547,15 @@ static int msm_init_aux_dev(struct platform_device *pdev, goto err; } snprintf(dev_name_str, strlen("wsa881x.%d"), "wsa881x.%d", i); msm_aux_dev[i].dlc.name = dev_name_str; msm_aux_dev[i].dlc.name = wsa883x_devices[i]; msm_aux_dev[i].dlc.dai_name = NULL; msm_aux_dev[i].dlc.of_node = wsa881x_dev_info[i].of_node; msm_aux_dev[i].init = msm_wsa881x_init; wsa883x_dev_info[i].of_node; msm_aux_dev[i].init = msm_wsa883x_init; msm_codec_conf[i].dev_name = NULL; msm_codec_conf[i].name_prefix = auxdev_name_prefix[0]; msm_codec_conf[i].of_node = wsa881x_dev_info[i].of_node; wsa883x_dev_info[i].of_node; } for (i = 0; i < codec_aux_dev_cnt; i++) { Loading
soc/swr-mstr-ctrl.c +17 −11 Original line number Diff line number Diff line Loading @@ -1031,7 +1031,7 @@ static void swrm_disable_ports(struct swr_master *master, bank)); dev_dbg(swrm->dev, "%s: mport :%d, reg: 0x%x\n", __func__, i, (SWRM_DP_PORT_CTRL_BANK(i + 1, bank))); (SWRM_DP_PORT_CTRL_BANK((i + 1), bank))); } value = ((mport->req_ch) << SWRM_DP_PORT_CTRL_EN_CHAN_SHFT); Loading @@ -1042,11 +1042,11 @@ static void swrm_disable_ports(struct swr_master *master, value |= mport->sinterval; swr_master_write(swrm, SWRM_DP_PORT_CTRL_BANK(i+1, bank), SWRM_DP_PORT_CTRL_BANK((i + 1), bank), value); dev_dbg(swrm->dev, "%s: mport :%d, reg: 0x%x, val: 0x%x\n", __func__, i, (SWRM_DP_PORT_CTRL_BANK(i+1, bank)), value); (SWRM_DP_PORT_CTRL_BANK((i + 1), bank)), value); if (mport->stream_type == SWR_PCM) swrm_pcm_port_config(swrm, i, mport->dir, false); Loading Loading @@ -1203,37 +1203,37 @@ static void swrm_copy_data_port_config(struct swr_master *master, u8 bank) value |= mport->sinterval; reg[len] = SWRM_DP_PORT_CTRL_BANK(i + 1, bank); reg[len] = SWRM_DP_PORT_CTRL_BANK((i + 1), bank); val[len++] = value; dev_dbg(swrm->dev, "%s: mport :%d, reg: 0x%x, val: 0x%x\n", __func__, i, (SWRM_DP_PORT_CTRL_BANK(i + 1, bank)), value); (SWRM_DP_PORT_CTRL_BANK((i + 1), bank)), value); if (mport->lane_ctrl != SWR_INVALID_PARAM) { reg[len] = SWRM_DP_PORT_CTRL_2_BANK(i + 1, bank); reg[len] = SWRM_DP_PORT_CTRL_2_BANK((i + 1), bank); val[len++] = mport->lane_ctrl; } if (mport->word_length != SWR_INVALID_PARAM) { reg[len] = SWRM_DP_BLOCK_CTRL_1(i + 1); reg[len] = SWRM_DP_BLOCK_CTRL_1((i + 1)); val[len++] = mport->word_length; } if (mport->blk_grp_count != SWR_INVALID_PARAM) { reg[len] = SWRM_DP_BLOCK_CTRL2_BANK(i + 1, bank); reg[len] = SWRM_DP_BLOCK_CTRL2_BANK((i + 1), bank); val[len++] = mport->blk_grp_count; } if (mport->hstart != SWR_INVALID_PARAM && mport->hstop != SWR_INVALID_PARAM) { reg[len] = SWRM_DP_PORT_HCTRL_BANK(i + 1, bank); reg[len] = SWRM_DP_PORT_HCTRL_BANK((i + 1), bank); hparams = (mport->hstop << 4) | mport->hstart; val[len++] = hparams; } else { reg[len] = SWRM_DP_PORT_HCTRL_BANK(i + 1, bank); reg[len] = SWRM_DP_PORT_HCTRL_BANK((i + 1), bank); hparams = (SWR_HSTOP_MAX_VAL << 4) | SWR_HSTART_MIN_VAL; val[len++] = hparams; } if (mport->blk_pack_mode != SWR_INVALID_PARAM) { reg[len] = SWRM_DP_BLOCK_CTRL3_BANK(i + 1, bank); reg[len] = SWRM_DP_BLOCK_CTRL3_BANK((i + 1), bank); val[len++] = mport->blk_pack_mode; } mport->ch_en = mport->req_ch; Loading Loading @@ -2585,6 +2585,7 @@ static int swrm_runtime_resume(struct device *dev) bool aud_core_err = false; struct swr_master *mstr = &swrm->master; struct swr_device *swr_dev; u32 temp = 0; dev_dbg(dev, "%s: pm_runtime: resume, state:%d\n", __func__, swrm->state); Loading Loading @@ -2664,6 +2665,11 @@ static int swrm_runtime_resume(struct device *dev) mutex_lock(&swrm->reslock); } } else { if (swrm->swrm_hctl_reg) { temp = ioread32(swrm->swrm_hctl_reg); temp &= 0xFFFFFFFD; iowrite32(temp, swrm->swrm_hctl_reg); } /*wake up from clock stop*/ swr_master_write(swrm, SWRM_MCP_BUS_CTRL, 0x2); /* clear and enable bus clash interrupt */ Loading