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

📄 lcd.h

📁 s3c6400 ADS下官方测试程序
💻 H
📖 第 1 页 / 共 3 页
字号:
{
	LCD_SYSMAIN_INT,   LCD_SYSSUB_INT
}LCD_INT_SYS;

typedef enum 
{
	FIFO_25,  FIFO_50, FIFO_75, FIFO_EMPTY, FIFO_FULL
}FIFO_INT_LEVEL;

typedef enum 
{
	FIFO_INT_WIN0, FIFO_INT_WIN1, FIFO_INT_WIN2, FIFO_INT_WIN3, FIFO_INT_WIN4
}FIFO_INT_SEL;

typedef enum 
{
	FINT_BACKPORCH, FINT_VSYNC, FINT_ACTIVE, FINT_FRONTPORCH
}FRAME_INT_SEL;

typedef enum 
{
	SWAP_BIT_DISABLE, SWAP_BIT_ENABLE, 
	SWAP_BYTE_DISABLE, SWAP_BYTE_ENABLE, 
	SWAP_HALFWORD_DISABLE, SWAP_HALFWORD_ENABLE
} SWAP_MODE;

typedef enum 
{
	BURST_16WORD, BURST_8WORD, BURST_4WORD
} BURST_LENGTH;

typedef enum
{
	PNR_Parallel_RGB, PNR_Parallel_BGR, PNR_Serial_RGB, PNR_Serial_BGR
}PNR_MODE;

typedef enum
{
	DITHER_5BIT, DITHER_6BIT, DITHER_8BIT
}DITHER_BIT;

typedef enum
{
	CLK_DIRECT, CLK_DIVIDED
}CLK_DIR_DIV;

///////////////////////////////////////////////////////////////
typedef struct
{
	u32 m_uImgStAddr[5];
	u32 m_uDoubleBufImgStAddr[2];
	u32 m_uDoubleBufStAddr[2];
	u32 m_uDoubleBufEndAddr[2];

	u32 m_uFbStAddr[5];
	u32 m_uFbEndAddr[5];
	u32 m_uFrmHSz[5];
	u32 m_uFrmVSz[5];
	u32 m_uViewHSz[5];
	u32 m_uViewVSz[5];

	u32 m_uPageWidth[5];
	u32 m_uOffsetSz[5];
	u32 m_uLcdHSz;
	u32 m_uLcdVSz;
	u32 m_uLcdStX;
	u32 m_uLcdStY;
	u32 m_uBppMode;
	u32 m_uPnrMode;
	u32 m_uBytes;
	u32 m_uBits;
	u32 m_uBytSwpMode;
	u32 m_uHawSwpMode;
	u32 m_uMaxBurstLen;
	u32 m_uMinBurstLen;
	u32 m_uVidOutFormat;
	u32 m_uDitherMode;
	bool m_bIsAutoBuf;
	bool m_bIsNormalCall;
	u32 m_uScanMode;
	u32 m_uVideoClockSource;
	u32 m_uI80MainOutDataFormat;
	u32 m_uI80SubOutDataFormat;
	
	bool m_bIsLocalCalled[3];
	LCD_LOCAL_INPUT m_eLocalIn[3];
	LOCAL_INPUT_COLORSPACE m_uLocalInColorSpace[3];
	
}LCDC;

#if 0 //For LCD SFR W/R Test
REGINFO		sLcdRegInfo[] = 
{ 

	{"			", LCD_BASE+0x00, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x04, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x08, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x10, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x14, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x18, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x1C, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x20, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x24, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x28, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x2C, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x30, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x40, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x44, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x48, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x50, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x54, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x58, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x5C, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x60, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x64, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x68, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x70, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x74, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x78, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x80, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x84, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x88, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0xA0, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0xA4, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0xA8, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0xAC, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0xB0, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0xB8, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0xC0, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0xD0, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0xD4, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0xD8, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0xDC, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0xE0, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0xE8, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0xF0, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x100, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x104, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x108, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x10C, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x110, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x130, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x134, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x140, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x148, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x14C, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x150, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x154, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x158, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x15C, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x170, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x180, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x184, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x188, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x18C, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x190, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x1A0, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x1A4, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x1B0, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x1B4, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x1B8, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x1BC, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x1D0, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x1D4, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x1E0, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x1E4, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x1E8, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x280, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x284, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x288, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x28C, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x290, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x294, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x298, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x29C, 32, RW, DPDB, 0, 0},	
	{"			", LCD_BASE+0x2A0, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x2A4, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x2A8, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x2AC, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x300, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x304, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x308, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x30C, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x310, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x314, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x318, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x31C, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x320, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x324, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x328, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x32C, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x330, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x334, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x338, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x33C, 32, RW, DPDB, 0, 0},   
	{"			", LCD_BASE+0x340, 32, RW, DPDB, 0, 0},
	{"			", LCD_BASE+0x344, 32, RW, DPDB, 0, 0},
};
#endif


/////////////////////////////////////////////////////
//LCD API Functions

// Top Layer
void LCD_SimpleBasicDisp(void);

void LCD_SetPort(void);
void LCD_SetPort_ByPass(void);

void LCD_InitLDI(CPUIF_LDI eLdiMode);

void LCD_InitDISPC(CSPACE eBpp, u32 uFbAddr, LCD_WINDOW eWin, bool bIsDoubleBuf);
void LCD_InitDISPC1(u32 uHSize, u32 uVSize, CSPACE eBpp, u32 uFbAddr, LCD_WINDOW eWin, bool bIsDoubleBuf);
void LCD_GetFrmSz(u32* uFrmHSz, u32* uFrmVSz, LCD_WINDOW eWin);
void LCD_Start(void);
void LCD_Stop(void);
void LCD_PerFrameOff(void);

// Middle Layer
void LCD_InitBase(void);
void LCD_InitBase1(u32 uLcdX, u32 uLcdY);
void LCD_InitBase2(CLK_SRC eVclkSrc, PNR_MODE ePnrMode, CPU_OUTPUT_DATAFORMAT eCpuOutDataFormat);

void LCD_InitWin(CSPACE eBpp, u32 uFrameH, u32 uFrameV, u32 uX_Frame, u32 uY_Frame,  u32 uViewH, u32 uViewV,
		u32 uX_Lcd, u32 uY_Lcd, u32 uFbAddr, LCD_WINDOW eWin, bool bIsDoubleBuf);

void LCD_InitDISPCForFifoIn(LCD_LOCAL_INPUT eInLocal, LCD_WINDOW eWin);

void LCD_GetClkValAndClkDir(u32 uLcdHSz, u32 uLcdVSz, u32* uClkVal, u32* uClkDir, CLK_SRC eClkSrc);

void LCD_GetFbEndAddr(u32* uFbAddr, LCD_WINDOW eWin); 
void LCD_GetDoubleBufAddr(u32* uFbAddr, u32 uWhichAddr, LCD_WINDOW eWin);
void LCD_EnableAutoBuf(u32 uMode, LCD_WINDOW eWin);
void LCD_GetBufIdx(u32* uBufNum, LCD_WINDOW eWin);

void LCD_InitLTV350QV_RGB(void);
void LCD_InitLTP700WV_RGB(void);
void LCD_ExitLTP700WV_RGB(void);
void LCD_SetI80Timing(
	u8 ucCsSetupTime, u8 ucWrSetupTime, u8 ucWrActTime, u8 ucWrHoldTime,
	CPUIF_LDI eLdi);
void LCD_SetAutoCmdRate(CPU_AUTO_CMD_RATE eCmdRate, CPUIF_LDI eLdi);
void LCD_InitLTS222QV_CPU(CPUIF_LDI eLdiMode);
void LCD_InitLTS222QV_SRGB(void);
void LCD_InitStartPosOnLcd(CPUIF_LDI eLdiMode);
void LCD_SetViewPosOnLcd(u32 uX_Lcd, u32 uY_Lcd, LCD_WINDOW eWin);
void LCD_SetViewPosOnFrame(u32 uX_Frame, u32 uY_Frame, LCD_WINDOW eWin);
void LCD_SetActiveFrameBuf(u32 uWhichBuf, LCD_WINDOW eWin);

void LCD_SetColorMapOnOff(u32 uOnOff, LCD_WINDOW eWin);
void LCD_SetColorMapValue(u32 uVal, LCD_WINDOW eWin);

void LCD_PutCmdToLdi_ManualCmd(u32 uData[], CPUIF_LDI eLdiMode);

void LCD_Trigger(void);

void LCD_InitWinRegs(LCD_WINDOW eWin);

void LCD_InitWinForFifoIn(LCD_LOCAL_INPUT eLocalIn, LCD_WINDOW eWin);
void LCD_InitWinForFifoIn1(LCD_LOCAL_INPUT eLocalIn, LCD_WINDOW eWin, LOCAL_INPUT_COLORSPACE eLocalInSCS);

void LCD_SetWinOnOff(u32 uOnOff, LCD_WINDOW eWin);
void LCD_SetAllWinOnOff(u32 uOnOff);
void LCD_SetAllWinColorMapOnOff(u32 uOnOff);
void LCD_SetAllWinColorKeyOnOff(u32 uOnOff);
void LCD_SetAlpha(u8 ucA0R, u8 ucA0G, u8 ucA0B, u8 ucA1R, u8 ucA1G, u8 ucA1B, LCD_WINDOW eWin);

void LCD_SetColorKeyOnOff(u32 uOnOff, LCD_WINDOW eWin);
void LCD_SetColorKey(u32 uMaskKey, u32 uColorKey, COLOR_KEY_DIRECTION eDir, bool bIsBlending, LCD_WINDOW eWin);
void LCD_SetBlendingType(BLENDING_APPLIED_UNIT eBldPix, BLENDING_SELECT_MODE eBldMode, LCD_WINDOW eWin);

bool LCD_CheckPaletteRAM(LCD_WINDOW eWin);
void LCD_SetPaletteCtrl(CSPACE eBpp, LCD_WINDOW eWin);
void LCD_ChangePaletteClk(u32 uWhichClk);
void LCD_SetPaletteData(u32 uIdx, u32 uPalData, LCD_WINDOW eWin);
void LCD_SetByteSwap(SWAP_MODE eBitSwap, SWAP_MODE eByteSwap, SWAP_MODE eHawSwap, LCD_WINDOW eWin);
void LCD_SetBurstLength(BURST_LENGTH eBurstLength, LCD_WINDOW eWin);

void LCD_SetScanMode(LCD_SCAN_MODE eScanMode);
void LCD_SetOutputPath(LCD_LOCAL_OUTPUT eOutLocal);
void LCD_SetClkSrc(CLK_SRC eClkSrc);
void LCD_SetClkSrc1(CLK_SRC eClkSrc); //This is added for code compatibility with other Multimedia IP, for example TV Scaler. 07/05/10

void LCD_SelClkSrcFromSYSCON(CLK_SRC_FROMSYSCON eClkSrcFromSyscon); //This is added for code compatibility with other Multimedia IP, for example TV Scaler. 07/05/10
void LCD_SetClkVal(u8 uClkVal);
void LCD_SetClkDirOrDiv(CLK_DIR_DIV eClkDirDiv);

void LCD_SetCpuOutputFormat(CPU_OUTPUT_DATAFORMAT eCpuOutDataFormat);

void LCD_EnableRgbPort(void);
void LCD_DisableRgbPort(void);

void LCD_DisplayPartialArea(
	u32 uSrcStX, u32 uSrcStY, u32 uDstStX, u32 uDstStY,
	u32 uPartialHSz, u32 uPartialVsz, u32 uSrcFbStAddr,
	LCD_WINDOW eWin);

void LCD_EnableDithering(u32 uEnable, DITHER_BIT eRedDitherBit, DITHER_BIT eGreenDitherBit, DITHER_BIT eBlueDitherBit);

void LCD_InitInt(LCD_INT eLcdInt, LCD_INT_SYS eLcdIntSys, FIFO_INT_LEVEL eFifoIntLevel, FIFO_INT_SEL eFifoIntSel, FRAME_INT_SEL eFIntSel );
void LCD_EnableInt(void);
void LCD_DisableInt(void);
void LCD_ClearInt(LCD_INT eLcdInt);

// Bottom Layer
void LCD_PutCmdtoLTV350QV(u16 addr, u16 data);
void LCD_SpiSendByte(u16 uData);
void delayLoop(u32 count);

void LCD_PutCmdToLdi_NormalCmd(u32 uData[], u32 uDataNum, CPUIF_LDI eLdiMode);
void LCD_PutDataOrCmdToLdi(u32 uData[], u32 uDataNum,
	CPUIF_LDI eLdiMode, CPU_COMMAND_MODE eCmdMode, bool IsCmd);
void LCD_PutDataOrCmdToLdi_SelCmdMode(u32 uData[], u32 uDataNum, u32 uModeSel[],
	CPUIF_LDI eLdiMode, bool IsCmd, bool IsNormalCmdStart);
void LCD_PutDataToLdi(u16 uData, CPUIF_LDI eLdiMode);
void LCD_PutCmdToLdi_AutoCmd(u32 uData[], u32 uDataNum, CPUIF_LDI eLdiMode);
void LCD_GetDataFromLdi(u32* uData, CPUIF_LDI eLdiMode);
void LCD_GetCmdFromLdi(u32* uCmd, CPUIF_LDI eLdiMode);

void LCD_WriteCmd(CPUIF_LDI eLdiMode, u16 uAddr, u16 uData);

bool LCD_IsFrameDone(void);
void ConvertCSpaceToString(CSPACE eBpp, char* pcBpp);

 void __irq Isr_LCD_FrameCount(void);


#ifdef __cplusplus
}
#endif

#endif //__LCD_H__

⌨️ 快捷键说明

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