mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 05:39:54 -04:00
audio-kernel: Do SRC with MFC
1) Doing SRC with MFC when FE and BE SampleRates are different. MFC module is expected to add as fist module in COPP and output SR of MFC is configured same as app_type SR. 2) Adding MFC module V2 version details to system. Change-Id: I7c03fa28ec32892645ead9baf59eb927ca3e4891
This commit is contained in:
parent
50e0fe7b19
commit
09f30ee1a0
2 changed files with 52 additions and 11 deletions
31
asoc/msm-pcm-routing-auto.c
Normal file → Executable file
31
asoc/msm-pcm-routing-auto.c
Normal file → Executable file
|
|
@ -2475,14 +2475,20 @@ int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
|
|||
bits_per_sample = msm_routing_get_bit_width(
|
||||
msm_bedais[i].format);
|
||||
|
||||
topology = msm_routing_get_adm_topology(fedai_id,
|
||||
session_type,
|
||||
i);
|
||||
app_type =
|
||||
fe_dai_app_type_cfg[fedai_id][session_type][i].app_type;
|
||||
if (app_type) {
|
||||
app_type_idx =
|
||||
msm_pcm_routing_get_app_type_idx(app_type);
|
||||
sample_rate =
|
||||
fe_dai_app_type_cfg[fedai_id][session_type][i]
|
||||
.sample_rate;
|
||||
if ((fe_dai_app_type_cfg[fedai_id][session_type][i].sample_rate != msm_bedais[i].sample_rate) &&
|
||||
(topology == AUDIO_COPP_MFC)) {
|
||||
pr_debug("%s: FE and BE SR is not equal", __func__);
|
||||
sample_rate = msm_bedais[i].sample_rate;
|
||||
} else
|
||||
sample_rate = fe_dai_app_type_cfg[fedai_id][session_type][i].sample_rate;
|
||||
bits_per_sample =
|
||||
(fe_dai_app_type_cfg[fedai_id][session_type][i].bit_width) ?
|
||||
fe_dai_app_type_cfg[fedai_id][session_type][i].bit_width :
|
||||
|
|
@ -2496,9 +2502,7 @@ int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
|
|||
acdb_dev_id =
|
||||
fe_dai_app_type_cfg[fedai_id][session_type][i]
|
||||
.acdb_dev_id;
|
||||
topology = msm_routing_get_adm_topology(fedai_id,
|
||||
session_type,
|
||||
i);
|
||||
|
||||
be_bit_width = msm_routing_get_bit_width(
|
||||
msm_bedais[i].format);
|
||||
copp_perf_mode = get_copp_perf_mode(fedai_id, session_type, i);
|
||||
|
|
@ -2563,11 +2567,16 @@ int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
|
|||
&session_copp_map[fedai_id][session_type][i]);
|
||||
|
||||
if (msm_is_resample_needed(
|
||||
sample_rate,
|
||||
msm_bedais[i].sample_rate))
|
||||
adm_copp_mfc_cfg(port_id, copp_idx,
|
||||
msm_bedais[i].sample_rate);
|
||||
|
||||
fe_dai_app_type_cfg[fedai_id][session_type][i].sample_rate,
|
||||
msm_bedais[i].sample_rate)) {
|
||||
if ((session_type == SESSION_TYPE_TX) && (topology == AUDIO_COPP_MFC)) {
|
||||
adm_copp_mfc_cfg(port_id, copp_idx,
|
||||
fe_dai_app_type_cfg[fedai_id][session_type][i].sample_rate);
|
||||
} else {
|
||||
adm_copp_mfc_cfg(port_id, copp_idx,
|
||||
msm_bedais[i].sample_rate);
|
||||
}
|
||||
}
|
||||
for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
|
||||
unsigned long copp =
|
||||
session_copp_map[fedai_id][session_type][i];
|
||||
|
|
|
|||
32
include/dsp/apr_audio-v2.h
Normal file → Executable file
32
include/dsp/apr_audio-v2.h
Normal file → Executable file
|
|
@ -846,6 +846,10 @@ struct audproc_softvolume_params {
|
|||
*/
|
||||
#define AUDPROC_PARAM_ID_MFC_OUTPUT_MEDIA_FORMAT 0x00010913
|
||||
|
||||
/* ID of the Output Media Format V2 parameters used by AUDPROC_MODULE_ID_MFC.
|
||||
*/
|
||||
#define AUDPROC_PARAM_ID_MFC_OUTPUT_MEDIA_FORMAT_V2 0x00010942
|
||||
|
||||
/* Param ID of Channel Mixer used by AUDPROC_MODULE_ID_MFC */
|
||||
#define AUDPROC_CHMIXER_PARAM_ID_COEFF 0x00010342
|
||||
|
||||
|
|
@ -881,6 +885,33 @@ struct adm_cmd_set_pp_params_v5 {
|
|||
*/
|
||||
} __packed;
|
||||
|
||||
/* Payload of the AUDPROC_PARAM_ID_MFC_OUTPUT_MEDIA_FORMAT_V2 parameter in the
|
||||
Media Format Converter Module. Following this will be the variable payload for channel_map.
|
||||
*/
|
||||
struct audproc_mfc_output_media_fmt_v2_t
|
||||
{
|
||||
uint32_t sampling_rate;
|
||||
/**< @h2xmle_description {Sampling rate in samples per second.}
|
||||
@h2xmle_range {0..384000} */
|
||||
|
||||
uint16_t bits_per_sample;
|
||||
/**< @h2xmle_description {Number of bits used to store each sample.}
|
||||
@h2xmle_rangeList {"16 bits per sample (Q15 format)"= 16;"24 bits per sample (Q27 format)"=24;"32 bits per sample (Q31 format)"=32
|
||||
@h2xmle_default {16}
|
||||
*/
|
||||
|
||||
uint16_t num_channels;
|
||||
/**< @h2xmle_description {Number of channels.}
|
||||
@h2xmle_default {1}
|
||||
@h2xmle_range {1..32} */
|
||||
|
||||
uint16_t channel_type[0];
|
||||
/**< @h2xmle_description {Channel mapping array. Specify a channel mapping for each output channel.If the number of channels is not a multiple of four, zero padding must be added to the channel type array to align the packet to a multiple of 32 bits.}
|
||||
@h2xmle_variableArraySize {num_channels}
|
||||
@h2xmle_range {1..63}
|
||||
@h2xmle_default {1}*/
|
||||
} __packed;
|
||||
|
||||
/* Maximum number of channels supported by MFC media fmt params */
|
||||
#define AUDPROC_MFC_OUT_CHANNELS_MAX 8
|
||||
|
||||
|
|
@ -5716,6 +5747,7 @@ struct afe_param_id_lpass_core_shared_clk_cfg {
|
|||
|
||||
#define NULL_POPP_TOPOLOGY 0x00010C68
|
||||
#define NULL_COPP_TOPOLOGY 0x00010312
|
||||
#define AUDIO_COPP_MFC 0x10000098
|
||||
#define DEFAULT_COPP_TOPOLOGY 0x00010314
|
||||
#define DEFAULT_POPP_TOPOLOGY 0x00010BE4
|
||||
#define COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY 0x0001076B
|
||||
|
|
|
|||
Loading…
Reference in a new issue