⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dp_hardware_dispatcher.h

📁 Lido PXA270平台开发板的最新BSP,包括源代码
💻 H
字号:
/*********************************************************************************
 *********************************************************************************
 **
 ** Name        : dp_hardware_dispatcher.h
 ** Title       : Header file for Display Pipeline DMA engine interface module
 ** Created     : June 2001
 ** 
 ** Copyright   : 2001 by Imagination Technologies Limited. All rights reserved
 **             : No part of this software, either material or conceptual
 **             : may be copied or distributed, transmitted, transcribed,
 **             : stored in a retrieval system or translated into any
 **             : human or computer language in any form by any means,
 **             : electronic, mechanical, manual or other-wise, or
 **             : disclosed to third parties without the express written
 **             : permission of Imagination Technologies Limited, Unit 8,
 **             : HomePark Industrial Estate, King's Langley, Hertfordshire,
 **             : WD4 8LZ, U.K.
 **
 ** Description : This file contains the enumerations, constant definitions
 **               and function prototypes used by the API's DMA engine
 **               interface module.
 **
 ** Platform    : Platform independent	(modify 'types.h' accordingly)
 ** $Log: dp_hardware_dispatcher.h $
 **
 **  --- Revision Logs Removed --- 
 **
 *********************************************************************************
 *********************************************************************************/

#if !defined (__DP_HARDWARE_DISPATCHER_H__)
#define __DP_HARDWARE_DISPATCHER_H__

typedef enum DP_tag_HardwareAccessMethods
{
	DP_HARDWARE_ACCESS_IMMEDIATELY					= 0x00,
	DP_HARDWARE_ACCESS_WAIT_FOR_VSYNC,
	DP_HARDWARE_ACCESS_USE_DISPATCHER
} DP_HardwareAccessMethods;

typedef enum DP_tag_CommandSequenceOperations
{
	DP_COMMAND_SEQUENCE_OPERATIONS_SINGLE_COMMAND	= 0x00,
	DP_COMMAND_SEQUENCE_OPERATIONS_NEW_SEQUENCE,
	DP_COMMAND_SEQUENCE_OPERATIONS_ADD_COMMAND,
	DP_COMMAND_SEQUENCE_OPERATIONS_SEND_SEQUENCE,
	DP_COMMAND_SEQUENCE_OPERATIONS_SEND_IMMEDIATE,
	DP_COMMAND_SEQUENCE_OPERATIONS_SEND_ON_VSYNC,
	DP_COMMAND_SEQUENCE_OPERATIONS_SINGLE_COMMAND_INSTANT,
	DP_COMMAND_SEQUENCE_OPERATIONS_SINGLE_COMMAND_ON_VSYNC
} DP_CommandSequenceOperations;

typedef enum DP_tag_DMABufferStates
{
	DP_DMA_BUFFER_STATE_FREE						= 0x00,
	DP_DMA_BUFFER_STATE_PENDING,
	DP_DMA_BUFFER_STATE_SERVICING,
	DP_DMA_BUFFER_STATE_LIMBO
} DP_DMABufferStates;

typedef struct DP_tag_QueuedFieldWrite
{
	DP_pFieldTarget		pasFieldToWrite;
	DP_UINT_32			ui32ValueToWrite;

} DP_QueuedFieldWrite, * DP_pQueuedFieldWrite;


extern	DP_UINT_32						DP_DispatcherBufferStorage		[ 2 * DP_SIZE_OF_DISPATCHER_BUFFER_IN_ENTRIES * (sizeof (DP_QueuedMemoryWrite) / sizeof ( DP_UINT_32)) ];
extern	DP_UINT_16						DP_ui16DispatcherBufferSize		[ 2 ];
extern	DP_DMABufferStates				DP_eBufferStates				[ 2 ];
extern	DP_UINT_8						DP_ui8DispatcherBufferOffset	[ 2 ];

/* Function prototypes																			*/
DP_UINT_32	DP_GetField					(	const DP_FieldTarget *			psSourceField,
												  DP_UINT_16	 *			pui16Errors					);
DP_BOOL		DP_SearchBuffer				(	DP_pQueuedMemoryWrite			pasBufferToSearch,
											DP_UINT_16						ui16SizeOfBuffer,
											DP_UINT_32						ui32AddressToSearchFor,
											DP_PUINT_32						pui32ValueOfQueuedWrite,
											DP_PUINT_16						pui16PositionOfQueuedWrite	);
DP_UINT_32	DP_ReadFieldFromHardware	(	const DP_FieldTarget *			psSourceField				);
DP_VOID		DP_WriteFieldToAddress		(	const DP_FieldTarget *			psTargetField,	
											DP_UINT_32						ui32SourceData,	
											DP_PUINT_32						pui32TargetAddress			);
DP_VOID		DP_AddToBuffer				(	DP_QueuedFieldWrite				sFieldToAdd,
											DP_pQueuedMemoryWrite			pasBufferToAddTo,
											DP_PUINT_16						pui16SizeOfBuffer			);
DP_VOID		DP_QueueNewDMABuffer		(	DP_pQueuedFieldWrite			pasQueueToSubmit,	
											DP_UINT_8						ui8LengthOfQueue			);
DP_UINT_16	DP_CommandSequence			(	DP_CommandSequenceOperations	eOperation,
											DP_pFieldTarget					pasField,
											DP_UINT_32						ui32Value					);
DP_UINT_32	DP_ReadFromMemory			(	DP_UINT_32						ui32AddressToReadFrom		);
DP_VOID		DP_WriteToMemory			(	DP_UINT_32						ui32AddressToWriteTo,	
											DP_UINT_32						ui32ValueToWrite			);


#if defined DP_SIMULATION_MODE

#define		DP_SIMULATION_NO_OF_REGISTERS		0x2000

typedef enum DP_tag_DMAEngineSimulatorModes
{
	DP_DMA_ENGINE_SIMULATOR_INITIALISE			= 0x00,
	DP_DMA_ENGINE_SIMULATOR_START,
	DP_DMA_ENGINE_SIMULATOR_END,
	DP_DMA_ENGINE_SIMULATOR_INSTANT
} DP_DMAEngineSimulatorModes;

void	DP_SimulateDMAEngine	( DP_DMAEngineSimulatorModes	eSimulatorMode );

#endif


#endif	/* __DP_HARDWARE_DISPATCHER_H__ */


/*--------------------------- End of File --------------------------------*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -