📄 lcd.h
字号:
{
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 + -