dsp: add support for aptX dual mono

Send sync mode parameter to DSP for supporting aptX dual mono.

Change-Id: I1c43b0dec6661a77644e28df45ca6c1a182745de
Signed-off-by: Aniket Kumar Lata <alata@codeaurora.org>
This commit is contained in:
Preetam Singh Ranawat 2017-09-07 12:36:06 -07:00 committed by Gerrit - the friendly Code Review server
parent 21d942b0f4
commit 899b78bd18
3 changed files with 53 additions and 0 deletions

View file

@ -2249,6 +2249,10 @@ static int msm_dai_q6_afe_enc_cfg_get(struct snd_kcontrol *kcontrol,
sizeof(struct asm_aac_enc_cfg_v2_t));
break;
case ENC_FMT_APTX:
memcpy(ucontrol->value.bytes.data + format_size,
&dai_data->enc_config.data,
sizeof(struct asm_aptx_enc_cfg_t));
break;
case ENC_FMT_APTX_HD:
memcpy(ucontrol->value.bytes.data + format_size,
&dai_data->enc_config.data,
@ -2298,6 +2302,10 @@ static int msm_dai_q6_afe_enc_cfg_put(struct snd_kcontrol *kcontrol,
sizeof(struct asm_aac_enc_cfg_v2_t));
break;
case ENC_FMT_APTX:
memcpy(&dai_data->enc_config.data,
ucontrol->value.bytes.data + format_size,
sizeof(struct asm_aptx_enc_cfg_t));
break;
case ENC_FMT_APTX_HD:
memcpy(&dai_data->enc_config.data,
ucontrol->value.bytes.data + format_size,

View file

@ -2895,6 +2895,24 @@ static int q6afe_send_enc_config(u16 port_id,
goto exit;
}
if (format == ASM_MEDIA_FMT_APTX) {
config.param.payload_size =
payload_size + sizeof(config.port.sync_mode_param);
pr_debug("%s: sending AFE_PARAM_ID_APTX_SYNC_MODE to DSP",
__func__);
config.pdata.param_id = AFE_PARAM_ID_APTX_SYNC_MODE;
config.pdata.param_size = sizeof(config.port.sync_mode_param);
config.port.sync_mode_param.sync_mode =
config.port.enc_blk_param.enc_blk_config.aptx_config.
aptx_v2_cfg.sync_mode;
ret = afe_apr_send_pkt(&config, &this_afe.wait[index]);
if (ret) {
pr_err("%s: AFE_PARAM_ID_APTX_SYNC_MODE for port 0x%x failed %d\n",
__func__, port_id, ret);
goto exit;
}
}
config.param.payload_size =
payload_size + sizeof(config.port.enc_pkt_id_param);
pr_debug("%s:sending AFE_ENCODER_PARAM_ID_PACKETIZER to DSP payload = %d",

View file

@ -3074,6 +3074,16 @@ struct afe_param_id_set_topology_cfg {
u32 topology_id;
} __packed;
#define AFE_PARAM_ID_APTX_SYNC_MODE 0x00013205
struct afe_param_id_aptx_sync_mode {
/*
* sync mode: 0x0 = stereo sync mode (default)
* 0x01 = dual mono sync mode
* 0x02 = dual mono with no sync on either L or R
*/
uint32_t sync_mode;
} __packed;
/*
* Generic encoder module ID.
@ -3305,6 +3315,21 @@ struct asm_custom_enc_cfg_t {
uint8_t channel_mapping[8];
uint32_t custom_size;
} __packed;
struct asm_aptx_v2_enc_cfg_ext_t {
/*
* sync mode: 0x0 = stereo sync mode (default)
* 0x01 = dual mono sync mode
* 0x02 = dual mono with no sync on either L or R
*/
uint32_t sync_mode;
} __packed;
struct asm_aptx_enc_cfg_t {
struct asm_custom_enc_cfg_t custom_cfg;
struct asm_aptx_v2_enc_cfg_ext_t aptx_v2_cfg;
} __packed;
#define ASM_MEDIA_FMT_CELT 0x00013221
struct asm_celt_specific_enc_cfg_t {
/*
@ -3421,6 +3446,7 @@ union afe_enc_config_data {
struct asm_aac_enc_cfg_v2_t aac_config;
struct asm_custom_enc_cfg_t custom_config;
struct asm_celt_enc_cfg_t celt_config;
struct asm_aptx_enc_cfg_t aptx_config;
};
struct afe_enc_config {
@ -3461,6 +3487,7 @@ union afe_port_config {
struct afe_param_id_set_topology_cfg topology;
struct afe_param_id_tdm_cfg tdm;
struct afe_param_id_usb_audio_cfg usb_audio;
struct afe_param_id_aptx_sync_mode sync_mode_param;
struct afe_enc_fmt_id_param_t enc_fmt;
struct afe_port_media_type_t media_type;
struct afe_enc_cfg_blk_param_t enc_blk_param;