113 lines
4.2 KiB
C
113 lines
4.2 KiB
C
|
/* include/asm-arm/arch-msm/msm_adsp.h
|
||
|
*
|
||
|
* Copyright (C) 2008 Google, Inc.
|
||
|
* Copyright (c) 2009-2010, 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.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#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 msm_adsp_dump(struct msm_adsp_module *module);
|
||
|
int adsp_set_clkrate(struct msm_adsp_module *module, unsigned long clk_rate);
|
||
|
int msm_adsp_disable_event_rsp(struct msm_adsp_module *module);
|
||
|
int32_t get_adsp_resource(unsigned short client_idx,
|
||
|
void *cmd_buf, size_t cmd_size);
|
||
|
int32_t put_adsp_resource(unsigned short client_idx,
|
||
|
void *cmd_buf, size_t cmd_size);
|
||
|
|
||
|
/* 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);
|
||
|
|
||
|
/*Explicitly gererate adsp event */
|
||
|
int msm_adsp_generate_event(void *data,
|
||
|
struct msm_adsp_module *mod,
|
||
|
unsigned event_id,
|
||
|
unsigned event_length,
|
||
|
unsigned event_size,
|
||
|
void *msg);
|
||
|
|
||
|
#define ADSP_MESSAGE_ID 0xFFFF
|
||
|
|
||
|
/* 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_vfeFtmCmdQueue 28
|
||
|
#define QDSP_vfeFtmCmdScaleQueue 29
|
||
|
#define QDSP_vfeFtmCmdTableQueue 30
|
||
|
#define QDSP_uPJpegFtmCfgCmdQueue 31
|
||
|
#define QDSP_uPJpegFtmActionCmdQueue 32
|
||
|
#define QDSP_apuAfeQueue 33
|
||
|
#define QDSP_mpuRmtQueue 34
|
||
|
#define QDSP_uPAudPreProcAudRecCmdQueue 35
|
||
|
#define QDSP_uPAudRec0BitStreamQueue 36
|
||
|
#define QDSP_uPAudRec0CmdQueue 37
|
||
|
#define QDSP_uPAudRec1BitStreamQueue 38
|
||
|
#define QDSP_uPAudRec1CmdQueue 39
|
||
|
#define QDSP_apuRmtQueue 40
|
||
|
#define QDSP_uPAudRec2BitStreamQueue 41
|
||
|
#define QDSP_uPAudRec2CmdQueue 42
|
||
|
#define QDSP_MAX_NUM_QUEUES 43
|
||
|
|
||
|
#endif
|