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

📄 rotator.h

📁 s3c6400 ADS下官方测试程序
💻 H
字号:
/**************************************************************************************
* 
*	Project Name : S3C6400 Validation
*
*	Copyright 2006 by Samsung Electronics, Inc.
*	All rights reserved.
*
*	Project Description :
*		This software is only for validating functions of the S3C6400.
*		Anybody can use this software without our permission.
*  
*--------------------------------------------------------------------------------------
* 
*	File Name : rotator.h
*  
*	File Description : This is header file for rotator.c
*
*	Author : Sekwang Kim
*	Dept. : AP Development Team
*	Created Date : 2007/01/25
*	Version : 0.1a 
* 
*	History
*	-
* 	-
*  
**************************************************************************************/


#ifndef __ROTATOR_H__
#define __ROTATOR_H__

#ifdef __cplusplus
extern "C" {
#endif

#define ROTATOR_PROFILE
//#define NATURALIMAGE


#ifdef NATURALIMAGE
#include "sun320240_16bpp.h"
#include "sun320240_24bpp.h"
#include "sun240320_16bpp.h"
#include "sun240320_24bpp.h"
#endif


#define SINGLE_WINDOW			(1)
#define DOUBLE_WINDOW			(2)
#define ROTATOR_TEST_MODE		SINGLE_WINDOW

#define ROTATOR_BIT_NONE			(0<<4)
#define ROTATOR_BIT_ROT_90			(4<<4)
#define ROTATOR_BIT_ROT_180		(8<<4)
#define ROTATOR_BIT_ROT_270		(0xc<<4)
#define ROTATOR_BIT_FLIP_VER		(0x2<<4)
#define ROTATOR_BIT_FLIP_HOR		(0x3<<4)

#define ROTATOR_BIT_IN_YC420		(0<<13)
#define ROTATOR_BIT_IN_YC422		(3<<13)
#define ROTATOR_BIT_IN_RGB565		(4<<13)
#define ROTATOR_BIT_IN_RGB888		(5<<13)

#define ROTATOR_BIT_START			(1<<0)
#define ROTATOR_BIT_STOP			(0<<0)

#define ROTATOR_BIT_INT_EN			(1<<24)
#define ROTATOR_BIT_INT_DIS		(0<<24)





typedef enum
{
	ROTATOR_TYPE_NONE, 
	ROTATOR_TYPE_ROT_90,
	ROTATOR_TYPE_ROT_180,
	ROTATOR_TYPE_ROT_270,
	ROTATOR_TYPE_FLIP_VER,
	ROTATOR_TYPE_FLIP_HOR	
} ROTATOR_ROT_TYPE;




typedef struct
{
	bool m_bRotInit;
	bool m_bIntEn;
	u16 m_usInFormat;
	u8 m_ucRotType;
	bool m_bStartRot;
	u32 m_uSrcAddr0;
	u32 m_uSrcAddr1;
	u32 m_uSrcAddr2;	
	u16 m_usVerSize;
	u16 m_usHorSize;

	u32 m_uDstAddr0;
	u32 m_uDstAddr1;
	u32 m_uDstAddr2;

	u32 m_uLcdFbAddr0;
	u32 m_uLcdFbAddr1;

	u32 m_uLcdWidth0;
	u32 m_uLcdWidth1;
	u32 m_uLcdHeight0;
	u32 m_uLcdHeight1;

	u32 m_uLcdOffsetX0;
	u32 m_uLcdOffsetX1;
	u32 m_uLcdOffsetY0;
	u32 m_uLcdOffsetY1;	
	
} ROTATOR;

void ROTATOR_GetFrmSz(u16 *usRotHorSize, u16 *usRotVerSize);
void ROTATOR_GetFbAddr(u32 *uRotSrcAddr, u32 *uRotDstAddr);
void ROTATOR_GetBppMode(CSPACE *eBpp);
void ROTATOR_GetLcdFbAddr(u32 *uLcdFbAddr0, u32 *uLcdFbAddr1);



void ROTATOR_DrawImage(CSPACE eBpp, u16 usRotHorSize, u16 usRotVerSize, u32 uRotSrcAddr);
bool ROTATOR_CompFbData(CSPACE eBpp, ROTATOR_ROT_TYPE eRotType, u32 uSrcWidth, u32 uSrcHeight, u32 uInX, u32 uInY, 
	                                                 u32 uRotWidth, u32 uRotHeight, u32 uRotX, u32 uRotY, u32 uSrcFbAddr, u32 uRotFbAddr);
void ROTATOR_GetRotateCoordinate(u32 uSrcX, u32 uSrcY, u32 uSrcWidth, u32 uSrcHeight, ROTATOR_ROT_TYPE eRotType, 
	                                                               u32 *uRotX, u32 *uRotY, u32 *uRotWidth, u32 *uRotHeight);
bool ROTATOR_AuditOperation(CSPACE eBpp, u32 uWidth, u32 uHeight, ROTATOR_ROT_TYPE eRotType, 
	                                                    u32 uInFbAddr, u32 uOutFbAddr);


void ROTATOR_ConvertColorSpace(CSPACE eInFmt, u32 uInFbAddr, u32 uWidth, u32 uHeight, CSPACE eOutFmt, u32 uOutFbAddr);
void ROTATOR_InitLcd(LCD_WINDOW eWin, CSPACE eBpp);

void ROTATOR_CheckDone(void);
void ROTATOR_CheckIdle(void);
void ROTATOR_IntEnable(void);
void ROTATOR_IntDisable(void);
void __irq Isr_Rotator(void);
void __irq Isr_RotatorOneMoreJob(void);
void ROTATOR_CheckIntDone(void);




void ROTATOR_SetAddr (CSPACE eBpp, u32 uFbAddr, u16 usHorSize, u16 usVerSize);
void ROTATOR_SetSrcAddr (CSPACE eBpp, u32 uFbAddr, u16 usHorSize, u16 usVerSize);
void ROTATOR_SetDstAddr(CSPACE eBpp, u32 uFbAddr, u16 usHorSize, u16 usVerSize);
void ROTATOR_SetSrcSize(u16 usHorSize, u16 usVerSize);
void ROTATOR_SetInFormat(CSPACE eBpp);
void ROTATOR_SetRotType(ROTATOR_ROT_TYPE eRotType);
void ROTATOR_Start(void);

void ROTATOR_InitRegs(void);
void ROTATOR_InitSetting(CSPACE eBgBpp, u16 usRotHorSize, u16 usRotVerSize, u32 uRotSrcAddr, u32 uRotDstAddr, ROTATOR_ROT_TYPE eRotType);
void ROTATOR_Init(u8 ucTestMode);

#ifdef __cplusplus
}
#endif

#endif /*__ROTATOR_H__*/

⌨️ 快捷键说明

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