#ifndef QDSP5AUDPREPROCCMDI_H #define QDSP5AUDPREPROCCMDI_H /*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====* * * A U D I O P R E P R O C E S S I N G I N T E R N A L C O M M A N D S * * GENERAL DESCRIPTION * This file contains defintions of format blocks of commands * that are accepted by AUDPREPROC Task * * REFERENCES * None * * EXTERNALIZED FUNCTIONS * None * * Copyright (c) 1992-2009, 2012 The Linux Foundation. All rights reserved. * * This software is licensed under the terms of the GNU General Public * License version 2, as published by the Free Software Foundation, and * may be copied, distributed, and modified under those terms. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * *====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*/ /*=========================================================================== EDIT HISTORY FOR FILE This section contains comments describing changes made to this file. Notice that changes are listed in reverse chronological order. $Header: //source/qcom/qct/multimedia2/Audio/drivers/QDSP5Driver/QDSP5Interface/main/latest/qdsp5audpreproccmdi.h#2 $ ===========================================================================*/ /* * AUDIOPREPROC COMMANDS: * ARM uses uPAudPreProcCmdQueue to communicate with AUDPREPROCTASK * Location : MEMB * Buffer size : 51 * Number of buffers in a queue : 3 */ /* * Command to configure the parameters of AGC */ #define AUDPREPROC_CMD_CFG_AGC_PARAMS 0x0000 #define AUDPREPROC_CMD_CFG_AGC_PARAMS_LEN \ sizeof(audpreproc_cmd_cfg_agc_params) #define AUDPREPROC_CMD_TX_AGC_PARAM_MASK_COMP_SLOPE 0x0009 #define AUDPREPROC_CMD_TX_AGC_PARAM_MASK_COMP_TH 0x000A #define AUDPREPROC_CMD_TX_AGC_PARAM_MASK_EXP_SLOPE 0x000B #define AUDPREPROC_CMD_TX_AGC_PARAM_MASK_EXP_TH 0x000C #define AUDPREPROC_CMD_TX_AGC_PARAM_MASK_COMP_AIG_FLAG 0x000D #define AUDPREPROC_CMD_TX_AGC_PARAM_MASK_COMP_STATIC_GAIN 0x000E #define AUDPREPROC_CMD_TX_AGC_PARAM_MASK_TX_AGC_ENA_FLAG 0x000F #define AUDPREPROC_CMD_TX_AGC_ENA_FLAG_ENA -1 #define AUDPREPROC_CMD_TX_AGC_ENA_FLAG_DIS 0x0000 #define AUDPREPROC_CMD_ADP_GAIN_FLAG_ENA_ADP_GAIN -1 #define AUDPREPROC_CMD_ADP_GAIN_FLAG_ENA_STATIC_GAIN 0x0000 #define AUDPREPROC_CMD_PARAM_MASK_RMS_TAY 0x0004 #define AUDPREPROC_CMD_PARAM_MASK_RELEASEK 0x0005 #define AUDPREPROC_CMD_PARAM_MASK_DELAY 0x0006 #define AUDPREPROC_CMD_PARAM_MASK_ATTACKK 0x0007 #define AUDPREPROC_CMD_PARAM_MASK_LEAKRATE_SLOW 0x0008 #define AUDPREPROC_CMD_PARAM_MASK_LEAKRATE_FAST 0x0009 #define AUDPREPROC_CMD_PARAM_MASK_AIG_RELEASEK 0x000A #define AUDPREPROC_CMD_PARAM_MASK_AIG_MIN 0x000B #define AUDPREPROC_CMD_PARAM_MASK_AIG_MAX 0x000C #define AUDPREPROC_CMD_PARAM_MASK_LEAK_UP 0x000D #define AUDPREPROC_CMD_PARAM_MASK_LEAK_DOWN 0x000E #define AUDPREPROC_CMD_PARAM_MASK_AIG_ATTACKK 0x000F typedef struct { unsigned short cmd_id; unsigned short tx_agc_param_mask; signed short tx_agc_enable_flag; unsigned short comp_rlink_static_gain; signed short comp_rlink_aig_flag; unsigned short expander_rlink_th; unsigned short expander_rlink_slope; unsigned short compressor_rlink_th; unsigned short compressor_rlink_slope; unsigned short tx_adc_agc_param_mask; unsigned short comp_rlink_aig_attackk; unsigned short comp_rlink_aig_leak_down; unsigned short comp_rlink_aig_leak_up; unsigned short comp_rlink_aig_max; unsigned short comp_rlink_aig_min; unsigned short comp_rlink_aig_releasek; unsigned short comp_rlink_aig_leakrate_fast; unsigned short comp_rlink_aig_leakrate_slow; unsigned short comp_rlink_attackk_msw; unsigned short comp_rlink_attackk_lsw; unsigned short comp_rlink_delay; unsigned short comp_rlink_releasek_msw; unsigned short comp_rlink_releasek_lsw; unsigned short comp_rlink_rms_tav; } __packed audpreproc_cmd_cfg_agc_params; /* * Command to configure the params of Advanved AGC */ #define AUDPREPROC_CMD_CFG_AGC_PARAMS_2 0x0001 #define AUDPREPROC_CMD_CFG_AGC_PARAMS_2_LEN \ sizeof(audpreproc_cmd_cfg_agc_params_2) #define AUDPREPROC_CMD_2_TX_AGC_ENA_FLAG_ENA -1; #define AUDPREPROC_CMD_2_TX_AGC_ENA_FLAG_DIS 0x0000; typedef struct { unsigned short cmd_id; unsigned short agc_param_mask; signed short tx_agc_enable_flag; unsigned short comp_static_gain; unsigned short exp_th; unsigned short exp_slope; unsigned short comp_th; unsigned short comp_slope; unsigned short comp_rms_tav; unsigned short comp_samp_mask; unsigned short comp_attackk_msw; unsigned short comp_attackk_lsw; unsigned short comp_releasek_msw; unsigned short comp_releasek_lsw; unsigned short comp_delay; unsigned short comp_makeup_gain; } __attribute__((packed)) audpreproc_cmd_cfg_agc_params_2; /* * Command to configure params for ns */ #define AUDPREPROC_CMD_CFG_NS_PARAMS 0x0002 #define AUDPREPROC_CMD_CFG_NS_PARAMS_LEN \ sizeof(audpreproc_cmd_cfg_ns_params) #define AUDPREPROC_CMD_EC_MODE_NEW_NLMS_ENA 0x0001 #define AUDPREPROC_CMD_EC_MODE_NEW_NLMS_DIS 0x0000 #define AUDPREPROC_CMD_EC_MODE_NEW_DES_ENA 0x0002 #define AUDPREPROC_CMD_EC_MODE_NEW_DES_DIS 0x0000 #define AUDPREPROC_CMD_EC_MODE_NEW_NS_ENA 0x0004 #define AUDPREPROC_CMD_EC_MODE_NEW_NS_DIS 0x0000 #define AUDPREPROC_CMD_EC_MODE_NEW_CNI_ENA 0x0008 #define AUDPREPROC_CMD_EC_MODE_NEW_CNI_DIS 0x0000 #define AUDPREPROC_CMD_EC_MODE_NEW_NLES_ENA 0x0010 #define AUDPREPROC_CMD_EC_MODE_NEW_NLES_DIS 0x0000 #define AUDPREPROC_CMD_EC_MODE_NEW_HB_ENA 0x0020 #define AUDPREPROC_CMD_EC_MODE_NEW_HB_DIS 0x0000 #define AUDPREPROC_CMD_EC_MODE_NEW_VA_ENA 0x0040 #define AUDPREPROC_CMD_EC_MODE_NEW_VA_DIS 0x0000 #define AUDPREPROC_CMD_EC_MODE_NEW_PCD_ENA 0x0080 #define AUDPREPROC_CMD_EC_MODE_NEW_PCD_DIS 0x0000 #define AUDPREPROC_CMD_EC_MODE_NEW_FEHI_ENA 0x0100 #define AUDPREPROC_CMD_EC_MODE_NEW_FEHI_DIS 0x0000 #define AUDPREPROC_CMD_EC_MODE_NEW_NEHI_ENA 0x0200 #define AUDPREPROC_CMD_EC_MODE_NEW_NEHI_DIS 0x0000 #define AUDPREPROC_CMD_EC_MODE_NEW_NLPP_ENA 0x0400 #define AUDPREPROC_CMD_EC_MODE_NEW_NLPP_DIS 0x0000 #define AUDPREPROC_CMD_EC_MODE_NEW_FNE_ENA 0x0800 #define AUDPREPROC_CMD_EC_MODE_NEW_FNE_DIS 0x0000 #define AUDPREPROC_CMD_EC_MODE_NEW_PRENLMS_ENA 0x1000 #define AUDPREPROC_CMD_EC_MODE_NEW_PRENLMS_DIS 0x0000 typedef struct { unsigned short cmd_id; unsigned short ec_mode_new; unsigned short dens_gamma_n; unsigned short dens_nfe_block_size; unsigned short dens_limit_ns; unsigned short dens_limit_ns_d; unsigned short wb_gamma_e; unsigned short wb_gamma_n; } __attribute__((packed)) audpreproc_cmd_cfg_ns_params; /* * Command to configure parameters for IIR tuning filter */ #define AUDPREPROC_CMD_CFG_IIR_TUNING_FILTER_PARAMS 0x0003 #define AUDPREPROC_CMD_CFG_IIR_TUNING_FILTER_PARAMS_LEN \ sizeof(audpreproc_cmd_cfg_iir_tuning_filter_params) #define AUDPREPROC_CMD_IIR_ACTIVE_FLAG_DIS 0x0000 #define AUDPREPROC_CMD_IIR_ACTIVE_FLAG_ENA 0x0001 typedef struct { unsigned short cmd_id; unsigned short active_flag; unsigned short num_bands; unsigned short numerator_coeff_b0_filter0_lsw; unsigned short numerator_coeff_b0_filter0_msw; unsigned short numerator_coeff_b1_filter0_lsw; unsigned short numerator_coeff_b1_filter0_msw; unsigned short numerator_coeff_b2_filter0_lsw; unsigned short numerator_coeff_b2_filter0_msw; unsigned short numerator_coeff_b0_filter1_lsw; unsigned short numerator_coeff_b0_filter1_msw; unsigned short numerator_coeff_b1_filter1_lsw; unsigned short numerator_coeff_b1_filter1_msw; unsigned short numerator_coeff_b2_filter1_lsw; unsigned short numerator_coeff_b2_filter1_msw; unsigned short numerator_coeff_b0_filter2_lsw; unsigned short numerator_coeff_b0_filter2_msw; unsigned short numerator_coeff_b1_filter2_lsw; unsigned short numerator_coeff_b1_filter2_msw; unsigned short numerator_coeff_b2_filter2_lsw; unsigned short numerator_coeff_b2_filter2_msw; unsigned short numerator_coeff_b0_filter3_lsw; unsigned short numerator_coeff_b0_filter3_msw; unsigned short numerator_coeff_b1_filter3_lsw; unsigned short numerator_coeff_b1_filter3_msw; unsigned short numerator_coeff_b2_filter3_lsw; unsigned short numerator_coeff_b2_filter3_msw; unsigned short denominator_coeff_a0_filter0_lsw; unsigned short denominator_coeff_a0_filter0_msw; unsigned short denominator_coeff_a1_filter0_lsw; unsigned short denominator_coeff_a1_filter0_msw; unsigned short denominator_coeff_a0_filter1_lsw; unsigned short denominator_coeff_a0_filter1_msw; unsigned short denominator_coeff_a1_filter1_lsw; unsigned short denominator_coeff_a1_filter1_msw; unsigned short denominator_coeff_a0_filter2_lsw; unsigned short denominator_coeff_a0_filter2_msw; unsigned short denominator_coeff_a1_filter2_lsw; unsigned short denominator_coeff_a1_filter2_msw; unsigned short denominator_coeff_a0_filter3_lsw; unsigned short denominator_coeff_a0_filter3_msw; unsigned short denominator_coeff_a1_filter3_lsw; unsigned short denominator_coeff_a1_filter3_msw; unsigned short shift_factor_filter0; unsigned short shift_factor_filter1; unsigned short shift_factor_filter2; unsigned short shift_factor_filter3; unsigned short channel_selected0; unsigned short channel_selected1; unsigned short channel_selected2; unsigned short channel_selected3; } __attribute__((packed))audpreproc_cmd_cfg_iir_tuning_filter_params; #define AUDPREPROC_CMD_FEAT_QUERY_PARAMS 0x0004 struct rtc_audpreproc_read_data { unsigned short cmd_id; unsigned short stream_id; unsigned short feature_id; unsigned short extbufsizemsw; unsigned short extbufsizelsw; unsigned short extpart; unsigned short extbufstartmsw; unsigned short extbufstartlsw; } __packed ; #endif