📄 display.h
字号:
/*********************************************************************
;* Project Name : s3c2443x
;*
;* Copyright 2006 by Samsung Electronics, Inc.
;* All rights reserved.
;*
;* Project Description :
;* This software is only for verifying functions of the s3c2443x
;* Anybody can use this code without our permission.
;**********************************************************************/
#ifndef __DISPLAY_H__
#define __DISPLAY_H__
#ifdef __cplusplus
extern "C" {
#endif
#include "Def.h"
#define LCD_FRAME_BUFFER _NONCACHE_STARTADDRESS
#define LCD_WIN0_FRAME_BUFFER0 (LCD_FRAME_BUFFER)
#define LCD_WIN0_FRAME_BUFFER1 (LCD_FRAME_BUFFER+0x100000)
#define LCD_WIN1_FRAME_BUFFER (LCD_FRAME_BUFFER+0x200000)
#define LCD_DELAY_300NS 54 //on the basis of 540MHz
#define LCD_DELAY_50US 9000 //on the basis of 540MHz
#define LCD_DELAY_1MS 18000 //180000 //on the basis of 540MHz
#define LCD_MODULE_LTS222 1
#define LCD_MODULE_LTV350 2
//* SPECIFIC FOR LTS222 MODULE
#define LTS222_VBPD (9)
#define LTS222_VFPD (10)
#define LTS222_VSPW (3)
#define LTS222_HBPD (1)
#define LTS222_HFPD (6)
#define LTS222_HSPW (3)
#define LTS222_HOZVAL (240)
#define LTS222_LINEVAL (320)
#define LTS222_FRAME_RATE 65
//* SPECIFIC FOR LTV350 MODULE
#define LTV350_VBPD (5)
#define LTV350_VFPD (3)
#define LTV350_VSPW (4)
#define LTV350_HBPD (5)
#define LTV350_HFPD (3)
#define LTV350_HSPW (10)
#define LTV350_HOZVAL (320)
#define LTV350_LINEVAL (240)
#define LTV350_FRAME_RATE 65
//* VIDCON0
#define VIDCON0_S_RGB_IF (0<<22)
#define VIDCON0_S_RGB_PAR (0<<13)
#define VIDCON0_S_BGR_PAR (1<<13)
#define VIDCON0_S_CLKVAL_F_AlWAYS_UPDATE (0<<12)
#define VIDCON0_S_CLKVAL_F_SOF_UPDATE (1<<12)
#define VIDCON0_S_VCLK_GATING_ON (0<<5)
#define VIDCON0_S_VCLK_GATING_OFF (1<<5)
#define VIDCON0_S_CLKDIR_DIRECT (0<<4)
#define VIDCON0_S_CLKDIR_DIVIDED (1<<4)
#define VIDCON0_S_CLKSEL_HCLK (0<<2)
#define VIDCON0_S_CLKSEL_UPLL (1<<2)
#define VIDCON0_S_ENVID_OFF (0<<1)
#define VIDCON0_S_EVVID_ON (1<<1)
#define VIDCON0_S_ENVID_F_OFF (0<<0)
#define VIDCON0_S_ENVID_F_ON (1<<0)
//bit shift
#define VIDCON0_CLKVAL_F_SHIFT (6)
//* VIDCON1
#define VIDCON1_S_VCLK_FALL_EDGE_FETCH (0<<7)
#define VIDCON1_S_VCLK_RISE_EDGE_FETCH (1<<7)
#define VIDCON1_S_HSYNC_INVERTED (1<<6)
#define VIDCON1_S_VSYNC_INVERTED (1<<5)
#define VIDCON1_S_VDEN_INVERTED (1<<4)
//* VIDTCON0,1
//bit shift
#define VIDTCON0_BPD_S (16)
#define VIDTCON0_FPD_S (8)
#define VIDTCON0_SPW_S (0)
//* VIDTCON2
//bit shift
#define VIDTCON2_LINEVAL_S (11)
#define VIDTCON2_HOZVAL_S (0)
//* WINCON1to4
#define WINCONx_BIT_SWAP_ON (1<<2) //shift on basis of half-word swap
#define WINCONx_BYTE_SWAP_ON (1<<1) //shift on basis of half-word swap
#define WINCONx_HALFW_SWAP_ON (1<<0) //shift on basis of half-word swap
#define WINCONx_4WORD_BURST (2)
#define WINCONx_8WORD_BURST (1)
#define WINCONx_16WORD_BURST (0)
#define WINCONx_PLANE_BLENDING (0)
#define WINCONx_PIXEL_BLENDING (1)
#define WINCONx_1BPP_PALLET (0)
#define WINCONx_2BPP_PALLET (1)
#define WINCONx_4BPP_PALLET (2)
#define WINCONx_8BPP_PALLET (3)
#define WINCONx_8BPP_NO_PALLET (4)
#define WINCONx_16BPP_565 (5)
#define WINCONx_16BPP_A555 (6)
#define WINCONx_16BPP_1555 (7)
#define WINCONx_18BPP_666 (8)
#define WINCONx_18BPP_A665 (9)
#define WINCONx_19BPP_A666 (10)
#define WINCONx_24BPP_888 (11)
#define WINCONx_24BPP_A887 (12)
#define WINCONx_25BPP_A888 (13)
#define WINCONx_ALPHA_MODE_0 (0)
#define WINCONx_ALPHA_MODE_1 (1)
//bit shift
#define WINCON_BUFSEL (23)
#define WINCON_BUFAUTOEN (22)
#define WINCON_SWAP_S (16)
#define WINCON_BURSTLEN_S (9)
#define WINCON_BLENDING_S (6)
#define WINCON_BPP_S (2)
#define WINCON_ALPHA_S (1)
//* VIDWxADD2
//bit shift
#define VIDWxADD2_OFFSET_SIZE_S (13)
#define VIDWxADD2_PAGE_WIDTH_S (0)
//* VIDOSDxA,B,C
//bit shift
#define VIDOSDxAB_HORIZON_X_S (11)
#define VIDOSDxAB_VERTICAL_Y_S (0)
#define VIDOSDxC_ALPHA0_S (12)
#define LCD_WIN_0 0
#define LCD_WIN_1 1
#define LCD_WIN_ALL 2
#define LCD_BUF_0 0
#define LCD_BUF_1 1
#define LCD_OFF 0
#define LCD_ON 1
// set spi for lcd
// 1. set jumper like as 1-2 in J15 at SMDK board
// 2. you can use the SPI1 to control LCD sfr register
// nSS1 ---> SPI_LCDnSS ---> GPL 14
// SPIMOSI1 ---> SPI_LCDMOSI ---> GPL 11
// SPICLK1 ---> SPI_LCDCLK ---> GPL 10
#define LCD_DEN (1<<14)
#define LCD_DSERI (1<<11)
#define LCD_DCLK (1<<10)
#define LCD_DEN_BIT 14
#define LCD_DSERI_BIT 11
#define LCD_DCLK_BIT 10
#define LCD_nRESET 1
#define LCD_RESET (0)
#if 1 //org.
#define LCD_DEN_Lo (rGPLDAT &= ~LCD_DEN)
#define LCD_DEN_Hi (rGPLDAT |= LCD_DEN)
#define LCD_DCLK_Lo (rGPLDAT &= ~LCD_DCLK)
#define LCD_DCLK_Hi (rGPLDAT |= LCD_DCLK)
#define LCD_DSERI_Lo (rGPLDAT &= ~LCD_DSERI)
#define LCD_DSERI_Hi (rGPLDAT |= LCD_DSERI)
#else //specific for mDirac3
#define LCD_DEN_Lo \
{ \
extern uint32 var_GPFDAT; \
var_GPFDAT &= ~LCD_DEN; \
rGPFDAT = var_GPFDAT; \
}
#define LCD_DEN_Hi \
{ \
extern uint32 var_GPFDAT; \
var_GPFDAT |= LCD_DEN; \
rGPFDAT = var_GPFDAT; \
}
#define LCD_DCLK_Lo \
{ \
extern uint32 var_GPFDAT; \
var_GPFDAT &= ~LCD_DCLK; \
rGPFDAT = var_GPFDAT; \
}
#define LCD_DCLK_Hi \
{ \
extern uint32 var_GPFDAT; \
var_GPFDAT |= LCD_DCLK; \
rGPFDAT = var_GPFDAT; \
}
#define LCD_DSERI_Lo \
{ \
extern uint32 var_GPFDAT; \
var_GPFDAT &= ~LCD_DSERI; \
rGPFDAT = var_GPFDAT; \
}
#define LCD_DSERI_Hi \
{ \
extern uint32 var_GPFDAT; \
var_GPFDAT |= LCD_DSERI; \
rGPFDAT = var_GPFDAT; \
}
#endif
#define LCD_RESET_Lo (0)
#define LCD_RESET_Hi (1)
//================================================
// function prototype
void Test_LCD(void);
void Basic_Display(void);
void Test_EachWindow_EachBPP(void);
void Test_Blending_Win01(void);
void Test_ColorKey(void);
void Test_ColorMap(void);
void Test_Interrupt(void);
void Test_Virtual_Screen(void);
void Test_DisplayFramebufferCpuIf_QVGA(void);
void Test_DisplayFramebufferRgbIf_QVGA1(void);
void Test_DisplayFramebufferRgbIf_QVGA2(void);
void Prepare_Blending_Pallet01(void);
void Prepare_ColorKey_Pallet1(void);
void Setup_RgbIf( void);
void Test_Lcd_QVGA(void);
void Basic_Display_Setting( int32 win_num,int32 buf_num, int32 bpp, uint32 width, uint32 height);
void Display_Start(int8 win_num);
void Display_End(int8 win_num);
void Prepare_Image(int8 win_num, int8 bpp);
void Prepare_Pallet(int8 win_num, int8 bpp);
void SetLcdPort(void);
void delayLoop(uint32 count);
void LCDC_Common_Init(void);
void LcdEnvidOnOff(uint8 onoff);
void LcdWindowOnOff(uint8 num, uint8 onoff);
void _PutPixel1Bit(uint32 x, uint32 y, uint32 c);
void _PutPixel2Bit(uint32 x, uint32 y, uint32 c);
void _PutPixel4Bit(uint32 x, uint32 y, uint32 c);
void _PutPixel8Bit(uint32 x, uint32 y, uint32 c);
void _PutPixel16Bit(uint32 x, uint32 y, uint32 c);
void _PutPixel32Bit(uint32 x, uint32 y, uint32 c);
void LCD_Line(int32 x1, int32 y1, int32 x2, int32 y2, int32 color);
void LCD_Rectangle(int32 x1,int32 y1,int32 x2,int32 y2,int32 color);
void LCD_FilledRectangle(int32 x1,int32 y1,int32 x2,int32 y2,int32 color);
void LCD_ClearScr(uint32 c);
void lputs(uint32 x, uint32 y, uint32 c, char *str);
void lprintf(uint32 x, uint32 y, uint32 c, const char *fmt,...);
void __irq Display_ISR0(void);
void __irq Display_ISR1(void);
void Init_LDI(void);
void InitLDI_LTS222(void);
void InitLDI_LTV350(void);
void Write_LDI_LTS222(int address, int data);
void Write_LDI_LTV350(int address, int data);
//=================================================
// extern variable
extern int8 lcd_type;
extern uint32 lcd_bpp;
extern uint16 lcd_horizon_value,lcd_line_value;
extern uint8 lcd_vbpd,lcd_vfpd,lcd_vspw,lcd_hbpd,lcd_hfpd,lcd_hspw;
extern uint8 lcd_frame_rate;
extern uint8 lcd_burst_mode;
extern uint16 screen_width,screen_height;
extern uint32 *lcd_framebuffer;
extern void (*PutPixel)(uint32 x,uint32 y,uint32 c);
extern void *lcd_bpp_mode[];
extern uint8 lcd_bit_order[];
extern uint8 lcd_burst_in_byte[];
extern uint32 lcd_frame_buffer[][2];
extern vuint32 *WINCONx_Reg_Addr[];
extern vuint32 *VIDOSDxA_Reg_Addr[];
extern vuint32 *VIDOSDxB_Reg_Addr[];
extern vuint32 *VIDOSDxC_Reg_Addr[];
extern vuint32 *VIDWxADD0_Reg_Addr[][2];
extern vuint32 *VIDWxADD1_Reg_Addr[][2];
extern vuint32 *VIDWxADD2_Reg_Addr[][2];
extern vuint32 *WxKEYCON0_Reg_Addr[];
extern vuint32 *WxKEYCON1_Reg_Addr[];
extern vuint32 *WINxMAP_Reg_Addr[];
extern vuint32 *WINxPalletBase[];
#endif //#ifndef __DISPLAY_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -