asoc: lahaina: add support to send power mode for voice usecase
Add support in lahaina machine driver to send power mode along with island for voice usecase. Change-Id: I4223bc7e36644e3843995832798683017de22ece Signed-off-by: Kunlei Zhang <kunleiz@codeaurora.org>
This commit is contained in:
parent
44c6cc4fdc
commit
02b06f5634
@ -2723,6 +2723,63 @@ static int msm_get_port_id(int be_id)
|
||||
case MSM_BACKEND_DAI_VA_CDC_DMA_TX_2:
|
||||
afe_port_id = AFE_PORT_ID_VA_CODEC_DMA_TX_2;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_WSA_CDC_DMA_RX_0:
|
||||
afe_port_id = AFE_PORT_ID_WSA_CODEC_DMA_RX_0;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0:
|
||||
afe_port_id = AFE_PORT_ID_WSA_CODEC_DMA_TX_0;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_WSA_CDC_DMA_RX_1:
|
||||
afe_port_id = AFE_PORT_ID_WSA_CODEC_DMA_RX_1;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1:
|
||||
afe_port_id = AFE_PORT_ID_WSA_CODEC_DMA_TX_1;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2:
|
||||
afe_port_id = AFE_PORT_ID_WSA_CODEC_DMA_TX_2;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_RX_CDC_DMA_RX_0:
|
||||
afe_port_id = AFE_PORT_ID_RX_CODEC_DMA_RX_0;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_TX_CDC_DMA_TX_0:
|
||||
afe_port_id = AFE_PORT_ID_TX_CODEC_DMA_TX_0;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_RX_CDC_DMA_RX_1:
|
||||
afe_port_id = AFE_PORT_ID_RX_CODEC_DMA_RX_1;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_TX_CDC_DMA_TX_1:
|
||||
afe_port_id = AFE_PORT_ID_TX_CODEC_DMA_TX_1;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_RX_CDC_DMA_RX_2:
|
||||
afe_port_id = AFE_PORT_ID_RX_CODEC_DMA_RX_2;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_TX_CDC_DMA_TX_2:
|
||||
afe_port_id = AFE_PORT_ID_TX_CODEC_DMA_TX_2;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_RX_CDC_DMA_RX_3:
|
||||
afe_port_id = AFE_PORT_ID_RX_CODEC_DMA_RX_3;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_TX_CDC_DMA_TX_3:
|
||||
afe_port_id = AFE_PORT_ID_TX_CODEC_DMA_TX_3;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_RX_CDC_DMA_RX_4:
|
||||
afe_port_id = AFE_PORT_ID_RX_CODEC_DMA_RX_4;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_TX_CDC_DMA_TX_4:
|
||||
afe_port_id = AFE_PORT_ID_TX_CODEC_DMA_TX_4;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_RX_CDC_DMA_RX_5:
|
||||
afe_port_id = AFE_PORT_ID_RX_CODEC_DMA_RX_5;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_TX_CDC_DMA_TX_5:
|
||||
afe_port_id = AFE_PORT_ID_TX_CODEC_DMA_TX_5;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_RX_CDC_DMA_RX_6:
|
||||
afe_port_id = AFE_PORT_ID_RX_CODEC_DMA_RX_6;
|
||||
break;
|
||||
case MSM_BACKEND_DAI_RX_CDC_DMA_RX_7:
|
||||
afe_port_id = AFE_PORT_ID_RX_CODEC_DMA_RX_7;
|
||||
break;
|
||||
default:
|
||||
pr_err("%s: Invalid BE id: %d\n", __func__, be_id);
|
||||
afe_port_id = -EINVAL;
|
||||
@ -4124,6 +4181,38 @@ static int lahaina_send_island_va_config(int32_t be_id)
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int lahaina_send_power_mode(int32_t be_id)
|
||||
{
|
||||
int rc = 0;
|
||||
int port_id = 0xFFFF;
|
||||
|
||||
port_id = msm_get_port_id(be_id);
|
||||
if (port_id < 0) {
|
||||
pr_err("%s: Invalid power interface, be_id: %d\n",
|
||||
__func__, be_id);
|
||||
rc = -EINVAL;
|
||||
} else {
|
||||
/*
|
||||
* send island mode config
|
||||
* This should be the first configuration
|
||||
*
|
||||
*/
|
||||
rc = afe_send_port_island_mode(port_id);
|
||||
if (rc)
|
||||
pr_err("%s: afe send island mode failed %d\n",
|
||||
__func__, rc);
|
||||
/*
|
||||
* send power mode config
|
||||
* This should be set after island configuration
|
||||
*/
|
||||
rc = afe_send_port_power_mode(port_id);
|
||||
if (rc)
|
||||
pr_err("%s: afe send power mode failed %d\n",
|
||||
__func__, rc);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int msm_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
|
||||
struct snd_pcm_hw_params *params)
|
||||
{
|
||||
@ -4887,6 +4976,12 @@ static int msm_snd_cdc_dma_startup(struct snd_pcm_substream *substream)
|
||||
pr_err("%s: send island va cfg failed, err: %d\n",
|
||||
__func__, ret);
|
||||
break;
|
||||
default:
|
||||
ret = lahaina_send_power_mode(dai_link->id);
|
||||
if (ret)
|
||||
pr_err("%s: send power mode failed, err: %d\n",
|
||||
__func__, ret);
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user