| #ifndef __MACH_QDSP5_V2_QDSP5AUDPPCMDI_H |
| #define __MACH_QDSP5_V2_QDSP5AUDPPCMDI_H |
| |
| /*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====* |
| |
| A U D I O P O S T 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 AUDPP Task |
| |
| REFERENCES |
| None |
| |
| EXTERNALIZED FUNCTIONS |
| None |
| |
| Copyright(c) 1992-2011, Code Aurora Forum. 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. |
| |
| *====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*/ |
| |
| /* |
| * ARM to AUDPPTASK Commands |
| * |
| * ARM uses three command queues to communicate with AUDPPTASK |
| * 1)uPAudPPCmd1Queue : Used for more frequent and shorter length commands |
| * Location : MEMA |
| * Buffer Size : 6 words |
| * No of buffers in a queue : 20 for gaming audio and 5 for other images |
| * 2)uPAudPPCmd2Queue : Used for commands which are not much lengthier |
| * Location : MEMA |
| * Buffer Size : 23 |
| * No of buffers in a queue : 2 |
| * 3)uPAudOOCmd3Queue : Used for lengthier and more frequent commands |
| * Location : MEMA |
| * Buffer Size : 145 |
| * No of buffers in a queue : 3 |
| */ |
| |
| /* |
| * Commands Related to uPAudPPCmd1Queue |
| */ |
| |
| /* |
| * Command Structure to enable or disable the active decoders |
| */ |
| |
| #define AUDPP_CMD_CFG_DEC_TYPE 0x0001 |
| #define AUDPP_CMD_CFG_DEC_TYPE_LEN sizeof(struct audpp_cmd_cfg_dec_type) |
| |
| /* Enable the decoder */ |
| #define AUDPP_CMD_DEC_TYPE_M 0x000F |
| |
| #define AUDPP_CMD_ENA_DEC_V 0x4000 |
| #define AUDPP_CMD_DIS_DEC_V 0x0000 |
| #define AUDPP_CMD_DEC_STATE_M 0x4000 |
| |
| #define AUDPP_CMD_UPDATDE_CFG_DEC 0x8000 |
| #define AUDPP_CMD_DONT_UPDATE_CFG_DEC 0x0000 |
| |
| |
| /* Type specification of cmd_cfg_dec */ |
| |
| struct audpp_cmd_cfg_dec_type { |
| unsigned short cmd_id; |
| unsigned short stream_id; |
| unsigned short dec_cfg; |
| unsigned short dm_mode; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to Pause , Resume and flushes the selected audio decoders |
| */ |
| |
| #define AUDPP_CMD_DEC_CTRL 0x0002 |
| #define AUDPP_CMD_DEC_CTRL_LEN sizeof(struct audpp_cmd_dec_ctrl) |
| |
| /* Decoder control commands for pause, resume and flush */ |
| #define AUDPP_CMD_FLUSH_V 0x2000 |
| |
| #define AUDPP_CMD_PAUSE_V 0x4000 |
| #define AUDPP_CMD_RESUME_V 0x0000 |
| |
| #define AUDPP_CMD_UPDATE_V 0x8000 |
| #define AUDPP_CMD_IGNORE_V 0x0000 |
| |
| |
| /* Type Spec for decoder control command*/ |
| |
| struct audpp_cmd_dec_ctrl{ |
| unsigned short cmd_id; |
| unsigned short stream_id; |
| unsigned short dec_ctrl; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to Configure the AVSync FeedBack Mechanism |
| */ |
| |
| #define AUDPP_CMD_AVSYNC 0x0003 |
| #define AUDPP_CMD_AVSYNC_LEN sizeof(struct audpp_cmd_avsync) |
| |
| struct audpp_cmd_avsync{ |
| unsigned short cmd_id; |
| unsigned short stream_id; |
| unsigned short interrupt_interval; |
| unsigned short sample_counter_dlsw; |
| unsigned short sample_counter_dmsw; |
| unsigned short sample_counter_msw; |
| unsigned short byte_counter_dlsw; |
| unsigned short byte_counter_dmsw; |
| unsigned short byte_counter_msw; |
| } __attribute__((packed)); |
| |
| /* |
| * Macros used to store the AV Sync Info from DSP |
| */ |
| |
| #define AUDPP_AVSYNC_CH_COUNT 1 |
| #define AUDPP_AVSYNC_NUM_WORDS 6 |
| /* Timeout of 3000ms for AV Sync Query response */ |
| #define AUDPP_AVSYNC_EVENT_TIMEOUT 3000 |
| |
| /* |
| * Command Structure to Query AVSync Info from DSP |
| */ |
| |
| #define AUDPP_CMD_QUERY_AVSYNC 0x0006 |
| |
| struct audpp_cmd_query_avsync{ |
| unsigned short cmd_id; |
| unsigned short stream_id; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to enable or disable(sleep) the AUDPPTASK |
| */ |
| |
| #define AUDPP_CMD_CFG 0x0004 |
| #define AUDPP_CMD_CFG_LEN sizeof(struct audpp_cmd_cfg) |
| |
| #define AUDPP_CMD_CFG_SLEEP 0x0000 |
| #define AUDPP_CMD_CFG_ENABLE 0xFFFF |
| |
| struct audpp_cmd_cfg { |
| unsigned short cmd_id; |
| unsigned short cfg; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to Inject or drop the specified no of samples |
| */ |
| |
| #define AUDPP_CMD_ADJUST_SAMP 0x0005 |
| #define AUDPP_CMD_ADJUST_SAMP_LEN sizeof(struct audpp_cmd_adjust_samp) |
| |
| #define AUDPP_CMD_SAMP_DROP -1 |
| #define AUDPP_CMD_SAMP_INSERT 0x0001 |
| |
| #define AUDPP_CMD_NUM_SAMPLES 0x0001 |
| |
| struct audpp_cmd_adjust_samp { |
| unsigned short cmd_id; |
| unsigned short object_no; |
| signed short sample_insert_or_drop; |
| unsigned short num_samples; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to Configure AVSync Feedback Mechanism |
| */ |
| |
| #define AUDPP_CMD_ROUTING_MODE 0x0007 |
| #define AUDPP_CMD_ROUTING_MODE_LEN \ |
| sizeof(struct audpp_cmd_routing_mode) |
| |
| struct audpp_cmd_routing_mode { |
| unsigned short cmd_id; |
| unsigned short object_number; |
| unsigned short routing_mode; |
| } __attribute__((packed)); |
| |
| /* |
| * Commands Related to uPAudPPCmd2Queue |
| */ |
| |
| /* |
| * Command Structure to configure Per decoder Parameters (Common) |
| */ |
| |
| #define AUDPP_CMD_CFG_ADEC_PARAMS 0x0000 |
| #define AUDPP_CMD_CFG_ADEC_PARAMS_COMMON_LEN \ |
| sizeof(struct audpp_cmd_cfg_adec_params_common) |
| |
| #define AUDPP_CMD_STATUS_MSG_FLAG_ENA_FCM 0x4000 |
| #define AUDPP_CMD_STATUS_MSG_FLAG_DIS_FCM 0x0000 |
| |
| #define AUDPP_CMD_STATUS_MSG_FLAG_ENA_DCM 0x8000 |
| #define AUDPP_CMD_STATUS_MSG_FLAG_DIS_DCM 0x0000 |
| |
| /* Sampling frequency*/ |
| #define AUDPP_CMD_SAMP_RATE_96000 0x0000 |
| #define AUDPP_CMD_SAMP_RATE_88200 0x0001 |
| #define AUDPP_CMD_SAMP_RATE_64000 0x0002 |
| #define AUDPP_CMD_SAMP_RATE_48000 0x0003 |
| #define AUDPP_CMD_SAMP_RATE_44100 0x0004 |
| #define AUDPP_CMD_SAMP_RATE_32000 0x0005 |
| #define AUDPP_CMD_SAMP_RATE_24000 0x0006 |
| #define AUDPP_CMD_SAMP_RATE_22050 0x0007 |
| #define AUDPP_CMD_SAMP_RATE_16000 0x0008 |
| #define AUDPP_CMD_SAMP_RATE_12000 0x0009 |
| #define AUDPP_CMD_SAMP_RATE_11025 0x000A |
| #define AUDPP_CMD_SAMP_RATE_8000 0x000B |
| |
| |
| /* |
| * Type specification of cmd_adec_cfg sent to all decoder |
| */ |
| |
| struct audpp_cmd_cfg_adec_params_common { |
| unsigned short cmd_id; |
| unsigned short dec_id; |
| unsigned short length; |
| unsigned short reserved; |
| unsigned short input_sampling_frequency; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to configure Per decoder Parameters (Wav) |
| */ |
| |
| #define AUDPP_CMD_CFG_ADEC_PARAMS_WAV_LEN \ |
| sizeof(struct audpp_cmd_cfg_adec_params_wav) |
| |
| |
| #define AUDPP_CMD_WAV_STEREO_CFG_MONO 0x0001 |
| #define AUDPP_CMD_WAV_STEREO_CFG_STEREO 0x0002 |
| |
| #define AUDPP_CMD_WAV_PCM_WIDTH_8 0x0000 |
| #define AUDPP_CMD_WAV_PCM_WIDTH_16 0x0001 |
| #define AUDPP_CMD_WAV_PCM_WIDTH_24 0x0002 |
| |
| struct audpp_cmd_cfg_adec_params_wav { |
| struct audpp_cmd_cfg_adec_params_common common; |
| unsigned short stereo_cfg; |
| unsigned short pcm_width; |
| unsigned short sign; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure for CMD_CFG_DEV_MIXER |
| */ |
| |
| #define AUDPP_CMD_CFG_DEV_MIXER_PARAMS_LEN \ |
| sizeof(struct audpp_cmd_cfg_dev_mixer_params) |
| |
| #define AUDPP_CMD_CFG_DEV_MIXER 0x0008 |
| |
| #define AUDPP_CMD_CFG_DEV_MIXER_ID_0 0 |
| #define AUDPP_CMD_CFG_DEV_MIXER_ID_1 1 |
| #define AUDPP_CMD_CFG_DEV_MIXER_ID_2 2 |
| #define AUDPP_CMD_CFG_DEV_MIXER_ID_3 3 |
| #define AUDPP_CMD_CFG_DEV_MIXER_ID_4 4 |
| #define AUDPP_CMD_CFG_DEV_MIXER_ID_5 5 |
| |
| #define AUDPP_CMD_CFG_DEV_MIXER_DEV_NONE 0x0000 |
| #define AUDPP_CMD_CFG_DEV_MIXER_DEV_0 \ |
| (0x1 << AUDPP_CMD_CFG_DEV_MIXER_ID_0) |
| #define AUDPP_CMD_CFG_DEV_MIXER_DEV_1 \ |
| (0x1 << AUDPP_CMD_CFG_DEV_MIXER_ID_1) |
| #define AUDPP_CMD_CFG_DEV_MIXER_DEV_2 \ |
| (0x1 << AUDPP_CMD_CFG_DEV_MIXER_ID_2) |
| #define AUDPP_CMD_CFG_DEV_MIXER_DEV_3 \ |
| (0x1 << AUDPP_CMD_CFG_DEV_MIXER_ID_3) |
| #define AUDPP_CMD_CFG_DEV_MIXER_DEV_4 \ |
| (0x1 << AUDPP_CMD_CFG_DEV_MIXER_ID_4) |
| #define AUDPP_CMD_CFG_DEV_MIXER_DEV_5 \ |
| (0x1 << AUDPP_CMD_CFG_DEV_MIXER_ID_5) |
| |
| struct audpp_cmd_cfg_dev_mixer_params { |
| unsigned short cmd_id; |
| unsigned short stream_id; |
| unsigned short mixer_cmd; |
| } __attribute__((packed)); |
| |
| |
| /* |
| * Command Structure to configure Per decoder Parameters (ADPCM) |
| */ |
| |
| #define AUDPP_CMD_CFG_ADEC_PARAMS_ADPCM_LEN \ |
| sizeof(struct audpp_cmd_cfg_adec_params_adpcm) |
| |
| |
| #define AUDPP_CMD_ADPCM_STEREO_CFG_MONO 0x0001 |
| #define AUDPP_CMD_ADPCM_STEREO_CFG_STEREO 0x0002 |
| |
| struct audpp_cmd_cfg_adec_params_adpcm { |
| struct audpp_cmd_cfg_adec_params_common common; |
| unsigned short stereo_cfg; |
| unsigned short block_size; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to configure Per decoder Parameters (WMA) |
| */ |
| |
| #define AUDPP_CMD_CFG_ADEC_PARAMS_WMA_LEN \ |
| sizeof(struct audpp_cmd_cfg_adec_params_wma) |
| |
| struct audpp_cmd_cfg_adec_params_wma { |
| struct audpp_cmd_cfg_adec_params_common common; |
| unsigned short armdatareqthr; |
| unsigned short channelsdecoded; |
| unsigned short wmabytespersec; |
| unsigned short wmasamplingfreq; |
| unsigned short wmaencoderopts; |
| } __attribute__((packed)); |
| |
| |
| /* |
| * Command Structure to configure Per decoder Parameters (MP3) |
| */ |
| |
| #define AUDPP_CMD_CFG_ADEC_PARAMS_MP3_LEN \ |
| sizeof(struct audpp_cmd_cfg_adec_params_mp3) |
| |
| struct audpp_cmd_cfg_adec_params_mp3 { |
| struct audpp_cmd_cfg_adec_params_common common; |
| } __attribute__((packed)); |
| |
| |
| /* |
| * Command Structure to configure Per decoder Parameters (AAC) |
| */ |
| |
| #define AUDPP_CMD_CFG_ADEC_PARAMS_AAC_LEN \ |
| sizeof(struct audpp_cmd_cfg_adec_params_aac) |
| |
| |
| #define AUDPP_CMD_AAC_FORMAT_ADTS -1 |
| #define AUDPP_CMD_AAC_FORMAT_RAW 0x0000 |
| #define AUDPP_CMD_AAC_FORMAT_PSUEDO_RAW 0x0001 |
| #define AUDPP_CMD_AAC_FORMAT_LOAS 0x0002 |
| |
| #define AUDPP_CMD_AAC_AUDIO_OBJECT_LC 0x0002 |
| #define AUDPP_CMD_AAC_AUDIO_OBJECT_LTP 0x0004 |
| #define AUDPP_CMD_AAC_AUDIO_OBJECT_ERLC 0x0011 |
| |
| #define AUDPP_CMD_AAC_SBR_ON_FLAG_ON 0x0001 |
| #define AUDPP_CMD_AAC_SBR_ON_FLAG_OFF 0x0000 |
| |
| #define AUDPP_CMD_AAC_SBR_PS_ON_FLAG_ON 0x0001 |
| #define AUDPP_CMD_AAC_SBR_PS_ON_FLAG_OFF 0x0000 |
| |
| struct audpp_cmd_cfg_adec_params_aac { |
| struct audpp_cmd_cfg_adec_params_common common; |
| signed short format; |
| unsigned short audio_object; |
| unsigned short ep_config; |
| unsigned short aac_section_data_resilience_flag; |
| unsigned short aac_scalefactor_data_resilience_flag; |
| unsigned short aac_spectral_data_resilience_flag; |
| unsigned short sbr_on_flag; |
| unsigned short sbr_ps_on_flag; |
| unsigned short channel_configuration; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to configure Per decoder Parameters (V13K) |
| */ |
| |
| #define AUDPP_CMD_CFG_ADEC_PARAMS_V13K_LEN \ |
| sizeof(struct audpp_cmd_cfg_adec_params_v13k) |
| |
| |
| #define AUDPP_CMD_STEREO_CFG_MONO 0x0001 |
| #define AUDPP_CMD_STEREO_CFG_STEREO 0x0002 |
| |
| struct audpp_cmd_cfg_adec_params_v13k { |
| struct audpp_cmd_cfg_adec_params_common common; |
| unsigned short stereo_cfg; |
| } __attribute__((packed)); |
| |
| #define AUDPP_CMD_CFG_ADEC_PARAMS_EVRC_LEN \ |
| sizeof(struct audpp_cmd_cfg_adec_params_evrc) |
| |
| struct audpp_cmd_cfg_adec_params_evrc { |
| struct audpp_cmd_cfg_adec_params_common common; |
| unsigned short stereo_cfg; |
| } __attribute__ ((packed)); |
| |
| /* |
| * Command Structure to configure Per decoder Parameters (AMRWB) |
| */ |
| |
| #define AUDPP_CMD_CFG_ADEC_PARAMS_AMRWB_LEN \ |
| sizeof(struct audpp_cmd_cfg_adec_params_amrwb) |
| |
| struct audpp_cmd_cfg_adec_params_amrwb { |
| struct audpp_cmd_cfg_adec_params_common common; |
| unsigned short stereo_cfg; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to configure Per decoder Parameters (WMAPRO) |
| */ |
| |
| #define AUDPP_CMD_CFG_ADEC_PARAMS_WMAPRO_LEN \ |
| sizeof(struct audpp_cmd_cfg_adec_params_wmapro) |
| |
| struct audpp_cmd_cfg_adec_params_wmapro { |
| struct audpp_cmd_cfg_adec_params_common common; |
| unsigned short armdatareqthr; |
| uint8_t validbitspersample; |
| uint8_t numchannels; |
| unsigned short formattag; |
| unsigned short samplingrate; |
| unsigned short avgbytespersecond; |
| unsigned short asfpacketlength; |
| unsigned short channelmask; |
| unsigned short encodeopt; |
| unsigned short advancedencodeopt; |
| uint32_t advancedencodeopt2; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to configure the HOST PCM interface |
| */ |
| |
| #define AUDPP_CMD_PCM_INTF 0x0001 |
| #define AUDPP_CMD_PCM_INTF_2 0x0002 |
| #define AUDPP_CMD_PCM_INTF_LEN sizeof(struct audpp_cmd_pcm_intf) |
| |
| #define AUDPP_CMD_PCM_INTF_MONO_V 0x0001 |
| #define AUDPP_CMD_PCM_INTF_STEREO_V 0x0002 |
| |
| /* These two values differentiate the two types of commands that could be issued |
| * Interface configuration command and Buffer update command */ |
| |
| #define AUDPP_CMD_PCM_INTF_CONFIG_CMD_V 0x0000 |
| #define AUDPP_CMD_PCM_INTF_BUFFER_CMD_V -1 |
| |
| #define AUDPP_CMD_PCM_INTF_RX_ENA_M 0x000F |
| #define AUDPP_CMD_PCM_INTF_RX_ENA_ARMTODSP_V 0x0008 |
| #define AUDPP_CMD_PCM_INTF_RX_ENA_DSPTOARM_V 0x0004 |
| |
| /* These flags control the enabling and disabling of the interface together |
| * with host interface bit mask. */ |
| |
| #define AUDPP_CMD_PCM_INTF_ENA_V -1 |
| #define AUDPP_CMD_PCM_INTF_DIS_V 0x0000 |
| |
| |
| #define AUDPP_CMD_PCM_INTF_FULL_DUPLEX 0x0 |
| #define AUDPP_CMD_PCM_INTF_HALF_DUPLEX_TODSP 0x1 |
| |
| |
| #define AUDPP_CMD_PCM_INTF_OBJECT_NUM 0x5 |
| #define AUDPP_CMD_PCM_INTF_COMMON_OBJECT_NUM 0x6 |
| |
| struct audpp_cmd_pcm_intf { |
| unsigned short cmd_id; |
| unsigned short stream; |
| unsigned short stream_id; |
| signed short config; |
| unsigned short intf_type; |
| |
| /* DSP -> ARM Configuration */ |
| unsigned short read_buf1LSW; |
| unsigned short read_buf1MSW; |
| unsigned short read_buf1_len; |
| |
| unsigned short read_buf2LSW; |
| unsigned short read_buf2MSW; |
| unsigned short read_buf2_len; |
| /* 0:HOST_PCM_INTF disable |
| ** 0xFFFF: HOST_PCM_INTF enable |
| */ |
| signed short dsp_to_arm_flag; |
| unsigned short partition_number; |
| |
| /* ARM -> DSP Configuration */ |
| unsigned short write_buf1LSW; |
| unsigned short write_buf1MSW; |
| unsigned short write_buf1_len; |
| |
| unsigned short write_buf2LSW; |
| unsigned short write_buf2MSW; |
| unsigned short write_buf2_len; |
| |
| /* 0:HOST_PCM_INTF disable |
| ** 0xFFFF: HOST_PCM_INTF enable |
| */ |
| signed short arm_to_rx_flag; |
| unsigned short weight_decoder_to_rx; |
| unsigned short weight_arm_to_rx; |
| |
| unsigned short partition_number_arm_to_dsp; |
| unsigned short sample_rate; |
| unsigned short channel_mode; |
| } __attribute__((packed)); |
| |
| /* |
| ** BUFFER UPDATE COMMAND |
| */ |
| #define AUDPP_CMD_PCM_INTF_SEND_BUF_PARAMS_LEN \ |
| sizeof(struct audpp_cmd_pcm_intf_send_buffer) |
| |
| struct audpp_cmd_pcm_intf_send_buffer { |
| unsigned short cmd_id; |
| unsigned short stream; |
| unsigned short stream_id; |
| /* set config = 0xFFFF for configuration*/ |
| signed short config; |
| unsigned short intf_type; |
| unsigned short dsp_to_arm_buf_id; |
| unsigned short arm_to_dsp_buf_id; |
| unsigned short arm_to_dsp_buf_len; |
| } __attribute__((packed)); |
| |
| |
| /* |
| * Commands Related to uPAudPPCmd3Queue |
| */ |
| |
| /* |
| * Command Structure to configure post processing params (Commmon) |
| */ |
| |
| #define AUDPP_CMD_CFG_OBJECT_PARAMS 0x0000 |
| #define AUDPP_CMD_CFG_OBJECT_PARAMS_COMMON_LEN \ |
| sizeof(struct audpp_cmd_cfg_object_params_common) |
| |
| #define AUDPP_CMD_OBJ0_UPDATE 0x8000 |
| #define AUDPP_CMD_OBJ0_DONT_UPDATE 0x0000 |
| |
| |
| #define AUDPP_CMD_OBJ2_UPDATE 0x8000 |
| #define AUDPP_CMD_OBJ2_DONT_UPDATE 0x0000 |
| |
| #define AUDPP_CMD_OBJ3_UPDATE 0x8000 |
| #define AUDPP_CMD_OBJ3_DONT_UPDATE 0x0000 |
| |
| #define AUDPP_CMD_OBJ4_UPDATE 0x8000 |
| #define AUDPP_CMD_OBJ4_DONT_UPDATE 0x0000 |
| |
| #define AUDPP_CMD_HPCM_UPDATE 0x8000 |
| #define AUDPP_CMD_HPCM_DONT_UPDATE 0x0000 |
| |
| #define AUDPP_CMD_COMMON_CFG_UPDATE 0x8000 |
| #define AUDPP_CMD_COMMON_CFG_DONT_UPDATE 0x0000 |
| |
| #define AUDPP_CMD_POPP_STREAM 0xFFFF |
| #define AUDPP_CMD_COPP_STREAM 0x0000 |
| |
| struct audpp_cmd_cfg_object_params_common{ |
| unsigned short cmd_id; |
| unsigned short stream; |
| unsigned short stream_id; |
| unsigned short obj_cfg; |
| unsigned short command_type; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to configure post processing params (Volume) |
| */ |
| #define AUDPP_CMD_VOLUME_PAN 0 |
| #define AUDPP_CMD_CFG_OBJECT_PARAMS_VOLUME_LEN \ |
| sizeof(struct audpp_cmd_cfg_object_params_volume) |
| |
| struct audpp_cmd_cfg_object_params_volume { |
| struct audpp_cmd_cfg_object_params_common common; |
| unsigned short volume; |
| unsigned short pan; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to configure post processing params (PCM Filter) |
| */ |
| |
| struct numerator { |
| unsigned short numerator_b0_filter_lsw; |
| unsigned short numerator_b0_filter_msw; |
| unsigned short numerator_b1_filter_lsw; |
| unsigned short numerator_b1_filter_msw; |
| unsigned short numerator_b2_filter_lsw; |
| unsigned short numerator_b2_filter_msw; |
| } __attribute__((packed)); |
| |
| struct denominator { |
| unsigned short denominator_a0_filter_lsw; |
| unsigned short denominator_a0_filter_msw; |
| unsigned short denominator_a1_filter_lsw; |
| unsigned short denominator_a1_filter_msw; |
| } __attribute__((packed)); |
| |
| struct shift_factor { |
| unsigned short shift_factor_0; |
| } __attribute__((packed)); |
| |
| struct pan { |
| unsigned short pan_filter_0; |
| } __attribute__((packed)); |
| |
| struct filter_1 { |
| struct numerator numerator_filter; |
| struct denominator denominator_filter; |
| struct shift_factor shift_factor_filter; |
| struct pan pan_filter; |
| } __attribute__((packed)); |
| |
| struct filter_2 { |
| struct numerator numerator_filter[2]; |
| struct denominator denominator_filter[2]; |
| struct shift_factor shift_factor_filter[2]; |
| struct pan pan_filter[2]; |
| } __attribute__((packed)); |
| |
| struct filter_3 { |
| struct numerator numerator_filter[3]; |
| struct denominator denominator_filter[3]; |
| struct shift_factor shift_factor_filter[3]; |
| struct pan pan_filter[3]; |
| } __attribute__((packed)); |
| |
| struct filter_4 { |
| struct numerator numerator_filter[4]; |
| struct denominator denominator_filter[4]; |
| struct shift_factor shift_factor_filter[4]; |
| struct pan pan_filter[4]; |
| } __attribute__((packed)); |
| |
| #define AUDPP_CMD_IIR_TUNING_FILTER 1 |
| #define AUDPP_CMD_CFG_OBJECT_PARAMS_PCM_LEN \ |
| sizeof(struct audpp_cmd_cfg_object_params_pcm) |
| |
| |
| struct audpp_cmd_cfg_object_params_pcm { |
| struct audpp_cmd_cfg_object_params_common common; |
| signed short active_flag; |
| unsigned short num_bands; |
| union { |
| struct filter_1 filter_1_params; |
| struct filter_2 filter_2_params; |
| struct filter_3 filter_3_params; |
| struct filter_4 filter_4_params; |
| } __attribute__((packed)) params_filter; |
| } __attribute__((packed)); |
| |
| #define AUDPP_CMD_CALIB_GAIN_RX 15 |
| #define AUDPP_CMD_CFG_CAL_GAIN_LEN sizeof(struct audpp_cmd_cfg_cal_gain) |
| |
| |
| struct audpp_cmd_cfg_cal_gain { |
| struct audpp_cmd_cfg_object_params_common common; |
| unsigned short audppcalgain; |
| unsigned short reserved; |
| } __attribute__((packed)); |
| |
| |
| /* |
| * Command Structure to configure post processing parameters (equalizer) |
| */ |
| #define AUDPP_CMD_EQUALIZER 2 |
| #define AUDPP_CMD_CFG_OBJECT_PARAMS_EQALIZER_LEN \ |
| sizeof(struct audpp_cmd_cfg_object_params_eqalizer) |
| |
| struct eq_numerator { |
| unsigned short numerator_coeff_0_lsw; |
| unsigned short numerator_coeff_0_msw; |
| unsigned short numerator_coeff_1_lsw; |
| unsigned short numerator_coeff_1_msw; |
| unsigned short numerator_coeff_2_lsw; |
| unsigned short numerator_coeff_2_msw; |
| } __attribute__((packed)); |
| |
| struct eq_denominator { |
| unsigned short denominator_coeff_0_lsw; |
| unsigned short denominator_coeff_0_msw; |
| unsigned short denominator_coeff_1_lsw; |
| unsigned short denominator_coeff_1_msw; |
| } __attribute__((packed)); |
| |
| struct eq_shiftfactor { |
| unsigned short shift_factor; |
| } __attribute__((packed)); |
| |
| struct eq_coeff_1 { |
| struct eq_numerator numerator; |
| struct eq_denominator denominator; |
| struct eq_shiftfactor shiftfactor; |
| } __attribute__((packed)); |
| |
| struct eq_coeff_2 { |
| struct eq_numerator numerator[2]; |
| struct eq_denominator denominator[2]; |
| struct eq_shiftfactor shiftfactor[2]; |
| } __attribute__((packed)); |
| |
| struct eq_coeff_3 { |
| struct eq_numerator numerator[3]; |
| struct eq_denominator denominator[3]; |
| struct eq_shiftfactor shiftfactor[3]; |
| } __attribute__((packed)); |
| |
| struct eq_coeff_4 { |
| struct eq_numerator numerator[4]; |
| struct eq_denominator denominator[4]; |
| struct eq_shiftfactor shiftfactor[4]; |
| } __attribute__((packed)); |
| |
| struct eq_coeff_5 { |
| struct eq_numerator numerator[5]; |
| struct eq_denominator denominator[5]; |
| struct eq_shiftfactor shiftfactor[5]; |
| } __attribute__((packed)); |
| |
| struct eq_coeff_6 { |
| struct eq_numerator numerator[6]; |
| struct eq_denominator denominator[6]; |
| struct eq_shiftfactor shiftfactor[6]; |
| } __attribute__((packed)); |
| |
| struct eq_coeff_7 { |
| struct eq_numerator numerator[7]; |
| struct eq_denominator denominator[7]; |
| struct eq_shiftfactor shiftfactor[7]; |
| } __attribute__((packed)); |
| |
| struct eq_coeff_8 { |
| struct eq_numerator numerator[8]; |
| struct eq_denominator denominator[8]; |
| struct eq_shiftfactor shiftfactor[8]; |
| } __attribute__((packed)); |
| |
| struct eq_coeff_9 { |
| struct eq_numerator numerator[9]; |
| struct eq_denominator denominator[9]; |
| struct eq_shiftfactor shiftfactor[9]; |
| } __attribute__((packed)); |
| |
| struct eq_coeff_10 { |
| struct eq_numerator numerator[10]; |
| struct eq_denominator denominator[10]; |
| struct eq_shiftfactor shiftfactor[10]; |
| } __attribute__((packed)); |
| |
| struct eq_coeff_11 { |
| struct eq_numerator numerator[11]; |
| struct eq_denominator denominator[11]; |
| struct eq_shiftfactor shiftfactor[11]; |
| } __attribute__((packed)); |
| |
| struct eq_coeff_12 { |
| struct eq_numerator numerator[12]; |
| struct eq_denominator denominator[12]; |
| struct eq_shiftfactor shiftfactor[12]; |
| } __attribute__((packed)); |
| |
| |
| struct audpp_cmd_cfg_object_params_eqalizer { |
| struct audpp_cmd_cfg_object_params_common common; |
| signed short eq_flag; |
| unsigned short num_bands; |
| union { |
| struct eq_coeff_1 eq_coeffs_1; |
| struct eq_coeff_2 eq_coeffs_2; |
| struct eq_coeff_3 eq_coeffs_3; |
| struct eq_coeff_4 eq_coeffs_4; |
| struct eq_coeff_5 eq_coeffs_5; |
| struct eq_coeff_6 eq_coeffs_6; |
| struct eq_coeff_7 eq_coeffs_7; |
| struct eq_coeff_8 eq_coeffs_8; |
| struct eq_coeff_9 eq_coeffs_9; |
| struct eq_coeff_10 eq_coeffs_10; |
| struct eq_coeff_11 eq_coeffs_11; |
| struct eq_coeff_12 eq_coeffs_12; |
| } __attribute__((packed)) eq_coeff; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to configure post processing parameters (ADRC) |
| */ |
| #define AUDPP_CMD_ADRC 3 |
| #define AUDPP_CMD_CFG_OBJECT_PARAMS_ADRC_LEN \ |
| sizeof(struct audpp_cmd_cfg_object_params_adrc) |
| |
| |
| #define AUDPP_CMD_ADRC_FLAG_DIS 0x0000 |
| #define AUDPP_CMD_ADRC_FLAG_ENA -1 |
| #define AUDPP_CMD_PBE_FLAG_DIS 0x0000 |
| #define AUDPP_CMD_PBE_FLAG_ENA -1 |
| |
| struct audpp_cmd_cfg_object_params_adrc { |
| struct audpp_cmd_cfg_object_params_common common; |
| signed short adrc_flag; |
| unsigned short compression_th; |
| unsigned short compression_slope; |
| unsigned short rms_time; |
| unsigned short attack_const_lsw; |
| unsigned short attack_const_msw; |
| unsigned short release_const_lsw; |
| unsigned short release_const_msw; |
| unsigned short adrc_delay; |
| }; |
| |
| /* |
| * Command Structure to configure post processing parameters (MB - ADRC) |
| */ |
| #define AUDPP_CMD_MBADRC 10 |
| #define AUDPP_MAX_MBADRC_BANDS 5 |
| |
| struct adrc_config { |
| uint16_t subband_enable; |
| uint16_t adrc_sub_mute; |
| uint16_t rms_time; |
| uint16_t compression_th; |
| uint16_t compression_slope; |
| uint16_t attack_const_lsw; |
| uint16_t attack_const_msw; |
| uint16_t release_const_lsw; |
| uint16_t release_const_msw; |
| uint16_t makeup_gain; |
| }; |
| |
| struct audpp_cmd_cfg_object_params_mbadrc { |
| struct audpp_cmd_cfg_object_params_common common; |
| uint16_t enable; |
| uint16_t num_bands; |
| uint16_t down_samp_level; |
| uint16_t adrc_delay; |
| uint16_t ext_buf_size; |
| uint16_t ext_partition; |
| uint16_t ext_buf_msw; |
| uint16_t ext_buf_lsw; |
| struct adrc_config adrc_band[AUDPP_MAX_MBADRC_BANDS]; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to configure post processing parameters(Spectrum Analizer) |
| */ |
| #define AUDPP_CMD_SPECTROGRAM 4 |
| #define AUDPP_CMD_CFG_OBJECT_PARAMS_SPECTRAM_LEN \ |
| sizeof(struct audpp_cmd_cfg_object_params_spectram) |
| |
| |
| struct audpp_cmd_cfg_object_params_spectram { |
| struct audpp_cmd_cfg_object_params_common common; |
| unsigned short sample_interval; |
| unsigned short num_coeff; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to configure post processing parameters (QConcert) |
| */ |
| #define AUDPP_CMD_QCONCERT 5 |
| #define AUDPP_CMD_CFG_OBJECT_PARAMS_QCONCERT_LEN \ |
| sizeof(struct audpp_cmd_cfg_object_params_qconcert) |
| |
| |
| #define AUDPP_CMD_QCON_ENA_FLAG_ENA -1 |
| #define AUDPP_CMD_QCON_ENA_FLAG_DIS 0x0000 |
| |
| #define AUDPP_CMD_QCON_OP_MODE_HEADPHONE -1 |
| #define AUDPP_CMD_QCON_OP_MODE_SPEAKER_FRONT 0x0000 |
| #define AUDPP_CMD_QCON_OP_MODE_SPEAKER_SIDE 0x0001 |
| #define AUDPP_CMD_QCON_OP_MODE_SPEAKER_DESKTOP 0x0002 |
| |
| #define AUDPP_CMD_QCON_GAIN_UNIT 0x7FFF |
| #define AUDPP_CMD_QCON_GAIN_SIX_DB 0x4027 |
| |
| |
| #define AUDPP_CMD_QCON_EXPANSION_MAX 0x7FFF |
| |
| |
| struct audpp_cmd_cfg_object_params_qconcert { |
| struct audpp_cmd_cfg_object_params_common common; |
| signed short enable_flag; |
| signed short op_mode; |
| signed short gain; |
| signed short expansion; |
| signed short delay; |
| unsigned short stages_per_mode; |
| unsigned short reverb_enable; |
| unsigned short decay_msw; |
| unsigned short decay_lsw; |
| unsigned short decay_time_ratio_msw; |
| unsigned short decay_time_ratio_lsw; |
| unsigned short reflection_delay_time; |
| unsigned short late_reverb_gain; |
| unsigned short late_reverb_delay; |
| unsigned short delay_buff_size_msw; |
| unsigned short delay_buff_size_lsw; |
| unsigned short partition_num; |
| unsigned short delay_buff_start_msw; |
| unsigned short delay_buff_start_lsw; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to configure post processing parameters (Side Chain) |
| */ |
| #define AUDPP_CMD_SIDECHAIN_TUNING_FILTER 6 |
| #define AUDPP_CMD_CFG_OBJECT_PARAMS_SIDECHAIN_LEN \ |
| sizeof(struct audpp_cmd_cfg_object_params_sidechain) |
| |
| |
| #define AUDPP_CMD_SIDECHAIN_ACTIVE_FLAG_DIS 0x0000 |
| #define AUDPP_CMD_SIDECHAIN_ACTIVE_FLAG_ENA -1 |
| |
| struct audpp_cmd_cfg_object_params_sidechain { |
| struct audpp_cmd_cfg_object_params_common common; |
| signed short active_flag; |
| unsigned short num_bands; |
| union { |
| struct filter_1 filter_1_params; |
| struct filter_2 filter_2_params; |
| struct filter_3 filter_3_params; |
| struct filter_4 filter_4_params; |
| } __attribute__((packed)) params_filter; |
| } __attribute__((packed)); |
| |
| |
| /* |
| * Command Structure to configure post processing parameters (QAFX) |
| */ |
| #define AUDPP_CMD_QAFX 8 |
| #define AUDPP_CMD_CFG_OBJECT_PARAMS_QAFX_LEN \ |
| sizeof(struct audpp_cmd_cfg_object_params_qafx) |
| |
| #define AUDPP_CMD_QAFX_ENA_DISA 0x0000 |
| #define AUDPP_CMD_QAFX_ENA_ENA_CFG -1 |
| #define AUDPP_CMD_QAFX_ENA_DIS_CFG 0x0001 |
| |
| #define AUDPP_CMD_QAFX_CMD_TYPE_ENV 0x0100 |
| #define AUDPP_CMD_QAFX_CMD_TYPE_OBJ 0x0010 |
| #define AUDPP_CMD_QAFX_CMD_TYPE_QUERY 0x1000 |
| |
| #define AUDPP_CMD_QAFX_CMDS_ENV_OP_MODE 0x0100 |
| #define AUDPP_CMD_QAFX_CMDS_ENV_LIS_POS 0x0101 |
| #define AUDPP_CMD_QAFX_CMDS_ENV_LIS_ORI 0x0102 |
| #define AUDPP_CMD_QAFX_CMDS_ENV_LIS_VEL 0X0103 |
| #define AUDPP_CMD_QAFX_CMDS_ENV_ENV_RES 0x0107 |
| |
| #define AUDPP_CMD_QAFX_CMDS_OBJ_SAMP_FREQ 0x0010 |
| #define AUDPP_CMD_QAFX_CMDS_OBJ_VOL 0x0011 |
| #define AUDPP_CMD_QAFX_CMDS_OBJ_DIST 0x0012 |
| #define AUDPP_CMD_QAFX_CMDS_OBJ_POS 0x0013 |
| #define AUDPP_CMD_QAFX_CMDS_OBJ_VEL 0x0014 |
| |
| |
| struct audpp_cmd_cfg_object_params_qafx { |
| struct audpp_cmd_cfg_object_params_common common; |
| signed short enable; |
| unsigned short command_type; |
| unsigned short num_commands; |
| unsigned short commands; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to enable , disable or configure the reverberation effect |
| * (REVERB) (Common) |
| */ |
| |
| #define AUDPP_CMD_REVERB_CONFIG 0x0001 |
| #define AUDPP_CMD_REVERB_CONFIG_COMMON_LEN \ |
| sizeof(struct audpp_cmd_reverb_config_common) |
| |
| #define AUDPP_CMD_ENA_ENA 0xFFFF |
| #define AUDPP_CMD_ENA_DIS 0x0000 |
| #define AUDPP_CMD_ENA_CFG 0x0001 |
| |
| #define AUDPP_CMD_CMD_TYPE_ENV 0x0104 |
| #define AUDPP_CMD_CMD_TYPE_OBJ 0x0015 |
| #define AUDPP_CMD_CMD_TYPE_QUERY 0x1000 |
| |
| |
| struct audpp_cmd_reverb_config_common { |
| unsigned short cmd_id; |
| unsigned short enable; |
| unsigned short cmd_type; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to enable , disable or configure the reverberation effect |
| * (ENV-0x0104) |
| */ |
| |
| #define AUDPP_CMD_REVERB_CONFIG_ENV_104_LEN \ |
| sizeof(struct audpp_cmd_reverb_config_env_104) |
| |
| struct audpp_cmd_reverb_config_env_104 { |
| struct audpp_cmd_reverb_config_common common; |
| unsigned short env_gain; |
| unsigned short decay_msw; |
| unsigned short decay_lsw; |
| unsigned short decay_timeratio_msw; |
| unsigned short decay_timeratio_lsw; |
| unsigned short delay_time; |
| unsigned short reverb_gain; |
| unsigned short reverb_delay; |
| } __attribute__((packed)); |
| |
| /* |
| * Command Structure to enable , disable or configure the reverberation effect |
| * (ENV-0x0015) |
| */ |
| |
| #define AUDPP_CMD_REVERB_CONFIG_ENV_15_LEN \ |
| sizeof(struct audpp_cmd_reverb_config_env_15) |
| |
| struct audpp_cmd_reverb_config_env_15 { |
| struct audpp_cmd_reverb_config_common common; |
| unsigned short object_num; |
| unsigned short absolute_gain; |
| } __attribute__((packed)); |
| |
| #define AUDPP_CMD_PBE 16 |
| #define AUDPP_CMD_CFG_PBE_LEN sizeof(struct audpp_cmd_cfg_pbe) |
| |
| struct audpp_cmd_cfg_pbe { |
| struct audpp_cmd_cfg_object_params_common common; |
| unsigned short pbe_enable; |
| signed short realbassmix; |
| signed short basscolorcontrol; |
| unsigned short mainchaindelay; |
| unsigned short xoverfltorder; |
| unsigned short bandpassfltorder; |
| signed short adrcdelay; |
| unsigned short downsamplelevel; |
| unsigned short comprmstav; |
| signed short expthreshold; |
| unsigned short expslope; |
| unsigned short compthreshold; |
| unsigned short compslope; |
| unsigned short cpmpattack_lsw; |
| unsigned short compattack_msw; |
| unsigned short comprelease_lsw; |
| unsigned short comprelease_msw; |
| unsigned short compmakeupgain; |
| signed short baselimthreshold; |
| signed short highlimthreshold; |
| signed short basslimmakeupgain; |
| signed short highlimmakeupgain; |
| signed short limbassgrc; |
| signed short limhighgrc; |
| signed short limdelay; |
| unsigned short filter_coeffs[90]; |
| unsigned short extbuffsize_lsw; |
| unsigned short extbuffsize_msw; |
| unsigned short extpartition; |
| unsigned short extbuffstart_lsw; |
| unsigned short extbuffstart_msw; |
| } __attribute__((packed)); |
| |
| #define AUDPP_CMD_PP_FEAT_QUERY_PARAMS 0x0002 |
| |
| struct audpp_cmd_cfg_object_params_volpan { |
| struct audpp_cmd_cfg_object_params_common common; |
| u16 volume ; |
| u16 pan; |
| }; |
| |
| struct rtc_audpp_read_data { |
| unsigned short cmd_id; |
| unsigned short obj_id; |
| unsigned short route_id; |
| unsigned short feature_id; |
| unsigned short extbufsizemsw; |
| unsigned short extbufsizelsw; |
| unsigned short extpart; |
| unsigned short extbufstartmsw; |
| unsigned short extbufstartlsw; |
| } __attribute__((packed)) ; |
| |
| #define AUDPP_CMD_SAMPLING_FREQUENCY 7 |
| #define AUDPP_CMD_QRUMBLE 9 |
| |
| #endif /* __MACH_QDSP5_V2_QDSP5AUDPPCMDI_H */ |