blob: defa12db6738a48a698ee83b1f2032660a7d7320 [file] [log] [blame]
/*******************************************************************************
* Copyright (C) Marvell International Ltd. and its affiliates
*
* Marvell GPL License Option
*
* If you received this File from Marvell, you may opt to use, redistribute and/or
* modify this File in accordance with the terms and conditions of the General
* Public License Version 2, June 1991 (the "GPL License"), a copy of which is
* available along with the File in the license.txt file or by writing to the Free
* Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
* on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
*
* THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
* WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
* DISCLAIMED. The GPL License provides additional details about this warranty
* disclaimer.
********************************************************************************/
#ifndef _PE_DRIVER_H_
// server id for ICC message queue
#define MV_GS_DMX_Serv (0x00060008)
#define MV_GS_VPP_Serv (0x00060009)
#define MV_GS_AUD_Serv (0x0006000a)
#define MV_GS_ZSP_Serv (0x0006000b)
#define MV_GS_VDEC_Serv (0x0006000c)
#define MV_GS_RLE_Serv (0x0006000d)
#define MV_GS_VIP_Serv (0x0006000e)
#define MV_GS_AIP_Serv (0x0006000f)
#define MV_GS_VDM_Serv (0x00060010)
#define MV_GS_AGENT_Serv (0x00060011)
#define MAX_CHANNELS 8
typedef enum {
MULTI_PATH = 0,
LoRo_PATH = 1,
SPDIF_PATH = 2,
HDMI_PATH = 3,
MAX_OUTPUT_AUDIO = 5,
} AUDIO_PATH;
typedef enum {
MAIN_AUDIO = 0,
SECOND_AUDIO = 1,
EFFECT_AUDIO = 2,
EXT_IN_AUDIO = 10,
BOX_EFFECT_AUDIO = 11,
MAX_INTERACTIVE_AUDIOS = 8,
MAX_INPUT_AUDIO = 12,
AUDIO_INPUT_IRRELEVANT,
NOT_DEFINED_AUDIO,
} AUDIO_CHANNEL;
INT32 pri_audio_chanId[4] =
{ avioDhubChMap_ag_MA0_R, avioDhubChMap_ag_MA1_R, avioDhubChMap_ag_MA2_R,
avioDhubChMap_ag_MA3_R
};
typedef struct aout_dma_info_t {
UINT32 addr0;
UINT32 size0;
UINT32 addr1;
UINT32 size1;
} AOUT_DMA_INFO;
typedef struct aout_path_cmd_fifo_t {
AOUT_DMA_INFO aout_dma_info[4][8];
UINT32 update_pcm[8];
UINT32 takeout_size[8];
UINT32 size;
UINT32 wr_offset;
UINT32 rd_offset;
UINT32 kernel_rd_offset;
UINT32 zero_buffer;
UINT32 zero_buffer_size;
UINT32 fifo_underflow;
} AOUT_PATH_CMD_FIFO;
typedef struct aip_dma_cmd_t {
UINT32 addr0;
UINT32 size0;
UINT32 addr1;
UINT32 size1;
} AIP_DMA_CMD;
typedef struct aip_cmd_fifo_t {
AIP_DMA_CMD aip_dma_cmd[4][8];
UINT32 update_pcm[8];
UINT32 takein_size[8];
UINT32 size;
UINT32 wr_offset;
UINT32 rd_offset;
UINT32 kernel_rd_offset;
UINT32 prev_fifo_overflow_cnt;
/* used by kernel */
UINT32 kernel_pre_rd_offset;
UINT32 overflow_buffer;
UINT32 overflow_buffer_size;
UINT32 fifo_overflow;
UINT32 fifo_overflow_cnt;
} AIP_DMA_CMD_FIFO;
typedef struct {
UINT *unaCmdBuf;
UINT *cmd_buffer_base;
UINT max_cmd_size;
UINT cmd_len;
UINT cmd_part1_len;
UINT cmd_buffer_hw_base;
UINT cmd_pattern;
// cmd addr history
UINT dma_cmd_in_offset[MAX_INPUT_AUDIO][MAX_CHANNELS]; // DMA in cmds ptr
UINT dma_cmd_out0_offset[MAX_OUTPUT_AUDIO][MAX_CHANNELS]; // DMA out cmds ptr
UINT dma_cmd_out1_offset[MAX_OUTPUT_AUDIO][MAX_CHANNELS]; // DMA out cmds ptr
UINT dma_spdif_data_cmd_offset; // spdif compressed data DMA in cmds ptr
UINT dma_spdif_header_cmd_offset; // spdif packing header DMA in cmds ptr
UINT dma_hdmi_raw_data_cmd_offset; // HDMI by-pass mode DMA in cmds ptr
UINT dma_delay_cmd_in0_offset[MAX_OUTPUT_AUDIO][MAX_CHANNELS];
UINT dma_delay_cmd_in1_offset[MAX_OUTPUT_AUDIO][MAX_CHANNELS];
UINT dma_delay_cmd_out0_offset[MAX_OUTPUT_AUDIO][MAX_CHANNELS];
UINT dma_delay_cmd_out1_offset[MAX_OUTPUT_AUDIO][MAX_CHANNELS];
UINT dma_spdif_in_ddr_addr; // spdif compressed data DMA in data ptr
UINT dma_hdmi_raw_in_ddr_addr; // hdmi compressed data DMA in data ptr
} APP_CMD_BUFFER;
typedef struct {
UINT m_block_samps;
UINT m_fs;
UINT m_special_flags;
} HWAPP_DATA_DS;
typedef struct {
HWAPP_DATA_DS m_stream_in_data[MAX_INPUT_AUDIO];
HWAPP_DATA_DS m_path_out_data[MAX_OUTPUT_AUDIO];
} HWAPP_EVENT_CTX;
typedef struct {
APP_CMD_BUFFER coef_cmd[8];
APP_CMD_BUFFER data_cmd[8];
HWAPP_EVENT_CTX m_tHwAppEventCtx[8];
UINT size;
UINT wr_offset;
UINT rd_offset;
UINT kernel_rd_offset;
/************** used by Kernel *****************/
UINT kernel_idle;
} HWAPP_CMD_FIFO;
#endif //_PE_DRIVER_H_