Loading asoc/msm-dai-q6-v2.c +3 −3 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. */ #include <linux/init.h> Loading Loading @@ -2815,7 +2815,7 @@ static int msm_dai_q6_afe_enc_cfg_get(struct snd_kcontrol *kcontrol, case ENC_FMT_AAC_V2: memcpy(ucontrol->value.bytes.data + format_size, &dai_data->enc_config.data, sizeof(struct asm_aac_enc_cfg_v2_t)); sizeof(struct asm_aac_enc_cfg_t)); break; case ENC_FMT_APTX: memcpy(ucontrol->value.bytes.data + format_size, Loading Loading @@ -2878,7 +2878,7 @@ static int msm_dai_q6_afe_enc_cfg_put(struct snd_kcontrol *kcontrol, case ENC_FMT_AAC_V2: memcpy(&dai_data->enc_config.data, ucontrol->value.bytes.data + format_size, sizeof(struct asm_aac_enc_cfg_v2_t)); sizeof(struct asm_aac_enc_cfg_t)); break; case ENC_FMT_APTX: memcpy(&dai_data->enc_config.data, Loading dsp/q6afe.c +32 −0 Original line number Diff line number Diff line Loading @@ -3662,6 +3662,7 @@ static int q6afe_send_enc_config(u16 port_id, struct avs_enc_set_scrambler_param_t enc_set_scrambler_param; struct afe_enc_level_to_bitrate_map_param_t map_param; struct afe_enc_dec_imc_info_param_t imc_info_param; struct asm_aac_frame_size_control_t frame_ctl_param; struct afe_port_media_type_t media_type; struct aptx_channel_mode_param_t channel_mode_param; struct param_hdr_v3 param_hdr; Loading @@ -3676,6 +3677,7 @@ static int q6afe_send_enc_config(u16 port_id, memset(&enc_set_scrambler_param, 0, sizeof(enc_set_scrambler_param)); memset(&map_param, 0, sizeof(map_param)); memset(&imc_info_param, 0, sizeof(imc_info_param)); memset(&frame_ctl_param, 0, sizeof(frame_ctl_param)); memset(&media_type, 0, sizeof(media_type)); memset(¶m_hdr, 0, sizeof(param_hdr)); Loading Loading @@ -3711,6 +3713,12 @@ static int q6afe_send_enc_config(u16 port_id, enc_blk_param.enc_cfg_blk_size = sizeof(union afe_enc_config_data) - sizeof(struct afe_abr_enc_cfg_t); } else if (format == ASM_MEDIA_FMT_AAC_V2) { param_hdr.param_size = sizeof(enc_blk_param) - sizeof(struct asm_aac_frame_size_control_t); enc_blk_param.enc_cfg_blk_size = sizeof(enc_blk_param.enc_blk_config) - sizeof(struct asm_aac_frame_size_control_t); } else { param_hdr.param_size = sizeof(struct afe_enc_cfg_blk_param_t); enc_blk_param.enc_cfg_blk_size = Loading @@ -3730,6 +3738,30 @@ static int q6afe_send_enc_config(u16 port_id, goto exit; } if (format == ASM_MEDIA_FMT_AAC_V2) { uint32_t frame_size_ctl_value = enc_blk_param.enc_blk_config. aac_config.frame_ctl.ctl_value; if (frame_size_ctl_value > 0) { param_hdr.param_id = AFE_PARAM_ID_AAC_FRM_SIZE_CONTROL; param_hdr.param_size = sizeof(frame_ctl_param); frame_ctl_param.ctl_type = enc_blk_param. enc_blk_config.aac_config.frame_ctl.ctl_type; frame_ctl_param.ctl_value = frame_size_ctl_value; pr_debug("%s: send AFE_PARAM_ID_AAC_FRM_SIZE_CONTROL\n", __func__); ret = q6afe_pack_and_set_param_in_band(port_id, q6audio_get_port_index(port_id), param_hdr, (u8 *) &frame_ctl_param); if (ret) { pr_err("%s: AAC_FRM_SIZE_CONTROL failed %d\n", __func__, ret); goto exit; } } } if (format == ASM_MEDIA_FMT_APTX) { pr_debug("%s: sending AFE_PARAM_ID_APTX_SYNC_MODE to DSP", __func__); Loading include/dsp/apr_audio-v2.h +26 −2 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. */ Loading Loading @@ -3935,6 +3935,12 @@ struct aptx_channel_mode_param_t { */ #define AFE_SB_DATA_FORMAT_GENERIC_COMPRESSED 0x3 /* * Parameter to send frame control size * to DSP for AAC encoder in AFE. */ #define AFE_PARAM_ID_AAC_FRM_SIZE_CONTROL 0x000132EA /* * ID for AFE port module. This will be used to define port properties. * This module supports following parameter IDs: Loading Loading @@ -4105,6 +4111,23 @@ struct asm_aac_enc_cfg_v2_t { uint32_t sample_rate; } __packed; /* Structure to control frame size of AAC encoded frames. */ struct asm_aac_frame_size_control_t { /* Type of frame size control: MTU_SIZE / PEAK_BIT_RATE*/ uint32_t ctl_type; /* * Control value * MTU_SIZE: MTU size in bytes * PEAK_BIT_RATE: Peak bitrate in bits per second. */ uint32_t ctl_value; } __packed; struct asm_aac_enc_cfg_t { struct asm_aac_enc_cfg_v2_t aac_cfg; struct asm_aac_frame_size_control_t frame_ctl; } __packed; /* FMT ID for apt-X Classic */ #define ASM_MEDIA_FMT_APTX 0x000131ff Loading Loading @@ -4416,7 +4439,7 @@ struct asm_aac_dec_cfg_v2_t { union afe_enc_config_data { struct asm_sbc_enc_cfg_t sbc_config; struct asm_aac_enc_cfg_v2_t aac_config; struct asm_aac_enc_cfg_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; Loading Loading @@ -4645,6 +4668,7 @@ union afe_port_config { 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 asm_aac_frame_size_control_t frame_ctl_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; Loading Loading
asoc/msm-dai-q6-v2.c +3 −3 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. */ #include <linux/init.h> Loading Loading @@ -2815,7 +2815,7 @@ static int msm_dai_q6_afe_enc_cfg_get(struct snd_kcontrol *kcontrol, case ENC_FMT_AAC_V2: memcpy(ucontrol->value.bytes.data + format_size, &dai_data->enc_config.data, sizeof(struct asm_aac_enc_cfg_v2_t)); sizeof(struct asm_aac_enc_cfg_t)); break; case ENC_FMT_APTX: memcpy(ucontrol->value.bytes.data + format_size, Loading Loading @@ -2878,7 +2878,7 @@ static int msm_dai_q6_afe_enc_cfg_put(struct snd_kcontrol *kcontrol, case ENC_FMT_AAC_V2: memcpy(&dai_data->enc_config.data, ucontrol->value.bytes.data + format_size, sizeof(struct asm_aac_enc_cfg_v2_t)); sizeof(struct asm_aac_enc_cfg_t)); break; case ENC_FMT_APTX: memcpy(&dai_data->enc_config.data, Loading
dsp/q6afe.c +32 −0 Original line number Diff line number Diff line Loading @@ -3662,6 +3662,7 @@ static int q6afe_send_enc_config(u16 port_id, struct avs_enc_set_scrambler_param_t enc_set_scrambler_param; struct afe_enc_level_to_bitrate_map_param_t map_param; struct afe_enc_dec_imc_info_param_t imc_info_param; struct asm_aac_frame_size_control_t frame_ctl_param; struct afe_port_media_type_t media_type; struct aptx_channel_mode_param_t channel_mode_param; struct param_hdr_v3 param_hdr; Loading @@ -3676,6 +3677,7 @@ static int q6afe_send_enc_config(u16 port_id, memset(&enc_set_scrambler_param, 0, sizeof(enc_set_scrambler_param)); memset(&map_param, 0, sizeof(map_param)); memset(&imc_info_param, 0, sizeof(imc_info_param)); memset(&frame_ctl_param, 0, sizeof(frame_ctl_param)); memset(&media_type, 0, sizeof(media_type)); memset(¶m_hdr, 0, sizeof(param_hdr)); Loading Loading @@ -3711,6 +3713,12 @@ static int q6afe_send_enc_config(u16 port_id, enc_blk_param.enc_cfg_blk_size = sizeof(union afe_enc_config_data) - sizeof(struct afe_abr_enc_cfg_t); } else if (format == ASM_MEDIA_FMT_AAC_V2) { param_hdr.param_size = sizeof(enc_blk_param) - sizeof(struct asm_aac_frame_size_control_t); enc_blk_param.enc_cfg_blk_size = sizeof(enc_blk_param.enc_blk_config) - sizeof(struct asm_aac_frame_size_control_t); } else { param_hdr.param_size = sizeof(struct afe_enc_cfg_blk_param_t); enc_blk_param.enc_cfg_blk_size = Loading @@ -3730,6 +3738,30 @@ static int q6afe_send_enc_config(u16 port_id, goto exit; } if (format == ASM_MEDIA_FMT_AAC_V2) { uint32_t frame_size_ctl_value = enc_blk_param.enc_blk_config. aac_config.frame_ctl.ctl_value; if (frame_size_ctl_value > 0) { param_hdr.param_id = AFE_PARAM_ID_AAC_FRM_SIZE_CONTROL; param_hdr.param_size = sizeof(frame_ctl_param); frame_ctl_param.ctl_type = enc_blk_param. enc_blk_config.aac_config.frame_ctl.ctl_type; frame_ctl_param.ctl_value = frame_size_ctl_value; pr_debug("%s: send AFE_PARAM_ID_AAC_FRM_SIZE_CONTROL\n", __func__); ret = q6afe_pack_and_set_param_in_band(port_id, q6audio_get_port_index(port_id), param_hdr, (u8 *) &frame_ctl_param); if (ret) { pr_err("%s: AAC_FRM_SIZE_CONTROL failed %d\n", __func__, ret); goto exit; } } } if (format == ASM_MEDIA_FMT_APTX) { pr_debug("%s: sending AFE_PARAM_ID_APTX_SYNC_MODE to DSP", __func__); Loading
include/dsp/apr_audio-v2.h +26 −2 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. */ Loading Loading @@ -3935,6 +3935,12 @@ struct aptx_channel_mode_param_t { */ #define AFE_SB_DATA_FORMAT_GENERIC_COMPRESSED 0x3 /* * Parameter to send frame control size * to DSP for AAC encoder in AFE. */ #define AFE_PARAM_ID_AAC_FRM_SIZE_CONTROL 0x000132EA /* * ID for AFE port module. This will be used to define port properties. * This module supports following parameter IDs: Loading Loading @@ -4105,6 +4111,23 @@ struct asm_aac_enc_cfg_v2_t { uint32_t sample_rate; } __packed; /* Structure to control frame size of AAC encoded frames. */ struct asm_aac_frame_size_control_t { /* Type of frame size control: MTU_SIZE / PEAK_BIT_RATE*/ uint32_t ctl_type; /* * Control value * MTU_SIZE: MTU size in bytes * PEAK_BIT_RATE: Peak bitrate in bits per second. */ uint32_t ctl_value; } __packed; struct asm_aac_enc_cfg_t { struct asm_aac_enc_cfg_v2_t aac_cfg; struct asm_aac_frame_size_control_t frame_ctl; } __packed; /* FMT ID for apt-X Classic */ #define ASM_MEDIA_FMT_APTX 0x000131ff Loading Loading @@ -4416,7 +4439,7 @@ struct asm_aac_dec_cfg_v2_t { union afe_enc_config_data { struct asm_sbc_enc_cfg_t sbc_config; struct asm_aac_enc_cfg_v2_t aac_config; struct asm_aac_enc_cfg_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; Loading Loading @@ -4645,6 +4668,7 @@ union afe_port_config { 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 asm_aac_frame_size_control_t frame_ctl_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; Loading