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
 |