113 lines
4.3 KiB
C
113 lines
4.3 KiB
C
/* include/asm-arm/arch-msm/msm_adsp.h
|
|
*
|
|
* Copyright (C) 2008 Google, Inc.
|
|
*
|
|
* 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.
|
|
*
|
|
*/
|
|
|
|
#ifndef __ASM__ARCH_MSM_ADSP_H
|
|
#define __ASM__ARCH_MSM_ADSP_H
|
|
|
|
struct msm_adsp_module;
|
|
|
|
struct msm_adsp_ops {
|
|
/* event is called from interrupt context when a message
|
|
* arrives from the DSP. Use the provided function pointer
|
|
* to copy the message into a local buffer. Do NOT call
|
|
* it multiple times.
|
|
*/
|
|
void (*event)(void *driver_data, unsigned id, size_t len,
|
|
void (*getevent)(void *ptr, size_t len));
|
|
};
|
|
|
|
/* Get, Put, Enable, and Disable are synchronous and must only
|
|
* be called from thread context. Enable and Disable will block
|
|
* up to one second in the event of a fatal DSP error but are
|
|
* much faster otherwise.
|
|
*/
|
|
int msm_adsp_get(const char *name, struct msm_adsp_module **module,
|
|
struct msm_adsp_ops *ops, void *driver_data);
|
|
void msm_adsp_put(struct msm_adsp_module *module);
|
|
int msm_adsp_enable(struct msm_adsp_module *module);
|
|
int msm_adsp_disable(struct msm_adsp_module *module);
|
|
int adsp_set_clkrate(struct msm_adsp_module *module, unsigned long clk_rate);
|
|
|
|
/* Write is safe to call from interrupt context.
|
|
*/
|
|
int msm_adsp_write(struct msm_adsp_module *module,
|
|
unsigned queue_id,
|
|
void *data, size_t len);
|
|
|
|
#if CONFIG_MSM_AMSS_VERSION >= 6350
|
|
/* Command Queue Indexes */
|
|
#define QDSP_lpmCommandQueue 0
|
|
#define QDSP_mpuAfeQueue 1
|
|
#define QDSP_mpuGraphicsCmdQueue 2
|
|
#define QDSP_mpuModmathCmdQueue 3
|
|
#define QDSP_mpuVDecCmdQueue 4
|
|
#define QDSP_mpuVDecPktQueue 5
|
|
#define QDSP_mpuVEncCmdQueue 6
|
|
#define QDSP_rxMpuDecCmdQueue 7
|
|
#define QDSP_rxMpuDecPktQueue 8
|
|
#define QDSP_txMpuEncQueue 9
|
|
#define QDSP_uPAudPPCmd1Queue 10
|
|
#define QDSP_uPAudPPCmd2Queue 11
|
|
#define QDSP_uPAudPPCmd3Queue 12
|
|
#define QDSP_uPAudPlay0BitStreamCtrlQueue 13
|
|
#define QDSP_uPAudPlay1BitStreamCtrlQueue 14
|
|
#define QDSP_uPAudPlay2BitStreamCtrlQueue 15
|
|
#define QDSP_uPAudPlay3BitStreamCtrlQueue 16
|
|
#define QDSP_uPAudPlay4BitStreamCtrlQueue 17
|
|
#define QDSP_uPAudPreProcCmdQueue 18
|
|
#define QDSP_uPAudRecBitStreamQueue 19
|
|
#define QDSP_uPAudRecCmdQueue 20
|
|
#define QDSP_uPDiagQueue 21
|
|
#define QDSP_uPJpegActionCmdQueue 22
|
|
#define QDSP_uPJpegCfgCmdQueue 23
|
|
#define QDSP_uPVocProcQueue 24
|
|
#define QDSP_vfeCommandQueue 25
|
|
#define QDSP_vfeCommandScaleQueue 26
|
|
#define QDSP_vfeCommandTableQueue 27
|
|
#define QDSP_MAX_NUM_QUEUES 28
|
|
#else
|
|
/* Command Queue Indexes */
|
|
#define QDSP_lpmCommandQueue 0
|
|
#define QDSP_mpuAfeQueue 1
|
|
#define QDSP_mpuGraphicsCmdQueue 2
|
|
#define QDSP_mpuModmathCmdQueue 3
|
|
#define QDSP_mpuVDecCmdQueue 4
|
|
#define QDSP_mpuVDecPktQueue 5
|
|
#define QDSP_mpuVEncCmdQueue 6
|
|
#define QDSP_rxMpuDecCmdQueue 7
|
|
#define QDSP_rxMpuDecPktQueue 8
|
|
#define QDSP_txMpuEncQueue 9
|
|
#define QDSP_uPAudPPCmd1Queue 10
|
|
#define QDSP_uPAudPPCmd2Queue 11
|
|
#define QDSP_uPAudPPCmd3Queue 12
|
|
#define QDSP_uPAudPlay0BitStreamCtrlQueue 13
|
|
#define QDSP_uPAudPlay1BitStreamCtrlQueue 14
|
|
#define QDSP_uPAudPlay2BitStreamCtrlQueue 15
|
|
#define QDSP_uPAudPlay3BitStreamCtrlQueue 16
|
|
#define QDSP_uPAudPlay4BitStreamCtrlQueue 17
|
|
#define QDSP_uPAudPreProcCmdQueue 18
|
|
#define QDSP_uPAudRecBitStreamQueue 19
|
|
#define QDSP_uPAudRecCmdQueue 20
|
|
#define QDSP_uPJpegActionCmdQueue 21
|
|
#define QDSP_uPJpegCfgCmdQueue 22
|
|
#define QDSP_uPVocProcQueue 23
|
|
#define QDSP_vfeCommandQueue 24
|
|
#define QDSP_vfeCommandScaleQueue 25
|
|
#define QDSP_vfeCommandTableQueue 26
|
|
#define QDSP_QUEUE_MAX 26
|
|
#endif
|
|
|
|
#endif
|