blob: fef4c3587732c83a35484839dde3cff6ef403fa7 [file] [log] [blame]
#ifndef QDSP5AUDPPMSG_H
#define QDSP5AUDPPMSG_H
/*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*
*
* Q D S P 5 A U D I O P O S T P R O C E S S I N G M S G
*
* GENERAL DESCRIPTION
* Messages sent by AUDPPTASK to ARM
*
* REFERENCES
* None
*
* EXTERNALIZED FUNCTIONS
* None
*
* Copyright (c) 1992-2009, 2012 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.
*
*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*/
/*===========================================================================
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/qdsp5audppmsg.h#4 $
===========================================================================*/
/*
* AUDPPTASK uses audPPuPRlist to send messages to the ARM
* Location : MEMA
* Buffer Size : 45
* No of Buffers in a queue : 5 for gaming audio and 1 for other images
*/
/*
* MSG to Informs the ARM os Success/Failure of bringing up the decoder
*/
#define AUDPP_MSG_STATUS_MSG 0x0001
#define AUDPP_MSG_STATUS_MSG_LEN \
sizeof(audpp_msg_status_msg)
#define AUDPP_MSG_STATUS_SLEEP 0x0000
#define AUDPP_MSG_STATUS_INIT 0x0001
#define AUDPP_MSG_STATUS_CFG 0x0002
#define AUDPP_MSG_STATUS_PLAY 0x0003
#define AUDPP_MSG_REASON_NONE 0x0000
#define AUDPP_MSG_REASON_MEM 0x0001
#define AUDPP_MSG_REASON_NODECODER 0x0002
typedef struct{
unsigned short dec_id;
unsigned short status;
unsigned short reason;
} __attribute__((packed)) audpp_msg_status_msg;
/*
* MSG to communicate the spectrum analyzer output bands to the ARM
*/
#define AUDPP_MSG_SPA_BANDS 0x0002
#define AUDPP_MSG_SPA_BANDS_LEN \
sizeof(audpp_msg_spa_bands)
typedef struct {
unsigned short current_object;
unsigned short spa_band_1;
unsigned short spa_band_2;
unsigned short spa_band_3;
unsigned short spa_band_4;
unsigned short spa_band_5;
unsigned short spa_band_6;
unsigned short spa_band_7;
unsigned short spa_band_8;
unsigned short spa_band_9;
unsigned short spa_band_10;
unsigned short spa_band_11;
unsigned short spa_band_12;
unsigned short spa_band_13;
unsigned short spa_band_14;
unsigned short spa_band_15;
unsigned short spa_band_16;
unsigned short spa_band_17;
unsigned short spa_band_18;
unsigned short spa_band_19;
unsigned short spa_band_20;
unsigned short spa_band_21;
unsigned short spa_band_22;
unsigned short spa_band_23;
unsigned short spa_band_24;
unsigned short spa_band_25;
unsigned short spa_band_26;
unsigned short spa_band_27;
unsigned short spa_band_28;
unsigned short spa_band_29;
unsigned short spa_band_30;
unsigned short spa_band_31;
unsigned short spa_band_32;
} __attribute__((packed)) audpp_msg_spa_bands;
/*
* MSG to communicate the PCM I/O buffer status to ARM
*/
#define AUDPP_MSG_HOST_PCM_INTF_MSG 0x0003
#define AUDPP_MSG_HOST_PCM_INTF_MSG_LEN \
sizeof(audpp_msg_host_pcm_intf_msg)
#define AUDPP_MSG_HOSTPCM_ID_TX_ARM 0x0000
#define AUDPP_MSG_HOSTPCM_ID_ARM_TX 0x0001
#define AUDPP_MSG_HOSTPCM_ID_RX_ARM 0x0002
#define AUDPP_MSG_HOSTPCM_ID_ARM_RX 0x0003
#define AUDPP_MSG_SAMP_FREQ_INDX_96000 0x0000
#define AUDPP_MSG_SAMP_FREQ_INDX_88200 0x0001
#define AUDPP_MSG_SAMP_FREQ_INDX_64000 0x0002
#define AUDPP_MSG_SAMP_FREQ_INDX_48000 0x0003
#define AUDPP_MSG_SAMP_FREQ_INDX_44100 0x0004
#define AUDPP_MSG_SAMP_FREQ_INDX_32000 0x0005
#define AUDPP_MSG_SAMP_FREQ_INDX_24000 0x0006
#define AUDPP_MSG_SAMP_FREQ_INDX_22050 0x0007
#define AUDPP_MSG_SAMP_FREQ_INDX_16000 0x0008
#define AUDPP_MSG_SAMP_FREQ_INDX_12000 0x0009
#define AUDPP_MSG_SAMP_FREQ_INDX_11025 0x000A
#define AUDPP_MSG_SAMP_FREQ_INDX_8000 0x000B
#define AUDPP_MSG_CHANNEL_MODE_MONO 0x0001
#define AUDPP_MSG_CHANNEL_MODE_STEREO 0x0002
typedef struct{
unsigned short obj_num;
unsigned short numbers_of_samples;
unsigned short host_pcm_id;
unsigned short buf_indx;
unsigned short samp_freq_indx;
unsigned short channel_mode;
} __attribute__((packed)) audpp_msg_host_pcm_intf_msg;
/*
* MSG to communicate 3D position of the source and listener , source volume
* source rolloff, source orientation
*/
#define AUDPP_MSG_QAFX_POS 0x0004
#define AUDPP_MSG_QAFX_POS_LEN \
sizeof(audpp_msg_qafx_pos)
typedef struct {
unsigned short current_object;
unsigned short x_pos_lis_msw;
unsigned short x_pos_lis_lsw;
unsigned short y_pos_lis_msw;
unsigned short y_pos_lis_lsw;
unsigned short z_pos_lis_msw;
unsigned short z_pos_lis_lsw;
unsigned short x_fwd_msw;
unsigned short x_fwd_lsw;
unsigned short y_fwd_msw;
unsigned short y_fwd_lsw;
unsigned short z_fwd_msw;
unsigned short z_fwd_lsw;
unsigned short x_up_msw;
unsigned short x_up_lsw;
unsigned short y_up_msw;
unsigned short y_up_lsw;
unsigned short z_up_msw;
unsigned short z_up_lsw;
unsigned short x_vel_lis_msw;
unsigned short x_vel_lis_lsw;
unsigned short y_vel_lis_msw;
unsigned short y_vel_lis_lsw;
unsigned short z_vel_lis_msw;
unsigned short z_vel_lis_lsw;
unsigned short threed_enable_flag;
unsigned short volume;
unsigned short x_pos_source_msw;
unsigned short x_pos_source_lsw;
unsigned short y_pos_source_msw;
unsigned short y_pos_source_lsw;
unsigned short z_pos_source_msw;
unsigned short z_pos_source_lsw;
unsigned short max_dist_0_msw;
unsigned short max_dist_0_lsw;
unsigned short min_dist_0_msw;
unsigned short min_dist_0_lsw;
unsigned short roll_off_factor;
unsigned short mute_after_max_flag;
unsigned short x_vel_source_msw;
unsigned short x_vel_source_lsw;
unsigned short y_vel_source_msw;
unsigned short y_vel_source_lsw;
unsigned short z_vel_source_msw;
unsigned short z_vel_source_lsw;
} __attribute__((packed)) audpp_msg_qafx_pos;
/*
* MSG to provide AVSYNC feedback from DSP to ARM
*/
#define AUDPP_MSG_AVSYNC_MSG 0x0005
#define AUDPP_MSG_AVSYNC_MSG_LEN \
sizeof(audpp_msg_avsync_msg)
typedef struct {
unsigned short active_flag;
unsigned short num_samples_counter0_HSW;
unsigned short num_samples_counter0_MSW;
unsigned short num_samples_counter0_LSW;
unsigned short num_bytes_counter0_HSW;
unsigned short num_bytes_counter0_MSW;
unsigned short num_bytes_counter0_LSW;
unsigned short samp_freq_obj_0;
unsigned short samp_freq_obj_1;
unsigned short samp_freq_obj_2;
unsigned short samp_freq_obj_3;
unsigned short samp_freq_obj_4;
unsigned short samp_freq_obj_5;
unsigned short samp_freq_obj_6;
unsigned short samp_freq_obj_7;
unsigned short samp_freq_obj_8;
unsigned short samp_freq_obj_9;
unsigned short samp_freq_obj_10;
unsigned short samp_freq_obj_11;
unsigned short samp_freq_obj_12;
unsigned short samp_freq_obj_13;
unsigned short samp_freq_obj_14;
unsigned short samp_freq_obj_15;
unsigned short num_samples_counter4_HSW;
unsigned short num_samples_counter4_MSW;
unsigned short num_samples_counter4_LSW;
unsigned short num_bytes_counter4_HSW;
unsigned short num_bytes_counter4_MSW;
unsigned short num_bytes_counter4_LSW;
} __attribute__((packed)) audpp_msg_avsync_msg;
/*
* MSG to provide PCM DMA Missed feedback from the DSP to ARM
*/
#define AUDPP_MSG_PCMDMAMISSED 0x0006
#define AUDPP_MSG_PCMDMAMISSED_LEN \
sizeof(audpp_msg_pcmdmamissed);
typedef struct{
/*
** Bit 0 0 = PCM DMA not missed for object 0
** 1 = PCM DMA missed for object0
** Bit 1 0 = PCM DMA not missed for object 1
** 1 = PCM DMA missed for object1
** Bit 2 0 = PCM DMA not missed for object 2
** 1 = PCM DMA missed for object2
** Bit 3 0 = PCM DMA not missed for object 3
** 1 = PCM DMA missed for object3
** Bit 4 0 = PCM DMA not missed for object 4
** 1 = PCM DMA missed for object4
*/
unsigned short pcmdmamissed;
} __attribute__((packed)) audpp_msg_pcmdmamissed;
/*
* MSG to AUDPP enable or disable feedback form DSP to ARM
*/
#define AUDPP_MSG_CFG_MSG 0x0007
#define AUDPP_MSG_CFG_MSG_LEN \
sizeof(audpp_msg_cfg_msg)
#define AUDPP_MSG_ENA_ENA 0xFFFF
#define AUDPP_MSG_ENA_DIS 0x0000
typedef struct{
/* Enabled - 0xffff
** Disabled - 0
*/
unsigned short enabled;
} __attribute__((packed)) audpp_msg_cfg_msg;
/*
* MSG to communicate the reverb per object volume
*/
#define AUDPP_MSG_QREVERB_VOLUME 0x0008
#define AUDPP_MSG_QREVERB_VOLUME_LEN \
sizeof(audpp_msg_qreverb_volume)
typedef struct {
unsigned short obj_0_gain;
unsigned short obj_1_gain;
unsigned short obj_2_gain;
unsigned short obj_3_gain;
unsigned short obj_4_gain;
unsigned short hpcm_obj_volume;
} __attribute__((packed)) audpp_msg_qreverb_volume;
#define AUDPP_MSG_ROUTING_ACK 0x0009
#define AUDPP_MSG_ROUTING_ACK_LEN \
sizeof(struct audpp_msg_routing_ack)
struct audpp_msg_routing_ack {
unsigned short dec_id;
unsigned short routing_mode;
} __attribute__((packed));
#define AUDPP_MSG_FLUSH_ACK 0x000A
#define ADSP_MESSAGE_ID 0xFFFF
#define AUDPP_MSG_FEAT_QUERY_DM_DONE 0x000b
#endif /* QDSP5AUDPPMSG_H */