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

📄 lcd_cfg.c

📁 LCD驱动代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************
 ** File Name:     lcd_cfg.c                                                  *
 ** Description:														 	  *
 ** This file contains main parameter for lcd.						      	  *
 ** Author:         Jim zhang                                                 *
 ** DATE:           03/09/2004                                                *
 ** Copyright:      2004 Spreadtrum, Incoporated. All Rights Reserved.        *
 ** Description:                                                              *
 ******************************************************************************

 ******************************************************************************
 **                        Edit History                                       *
 ** ------------------------------------------------------------------------- *
 ** DATE           NAME             DESCRIPTION                               *
 ** 12/12/2004     Jimmy.Jia        Create for SP7100EU						  *
 ** 11/15/2005     David.Jia        Modify for GG3727/8 LCD, refer to 7350's. *
 ** 12/12/2005     David.Jia        Add HX8309.                               *
 ** 02/21/2006     David.Jia        CR37755, call DC_Init in release assert   *
 **     reset mode. Reset W99686, download fireware. Also modify              *
 **     LCD_IsLCDPointerValid to know all LCDs.                               *
 ** 02/24/2006     Yingchun.Li      Remove sub LCD MEM. 
 ** 03/19/2006     Pengyu.Li        Add function LCD_GetADCValue              *
 ******************************************************************************/

#include "sci_types.h"
#include "lcd.h"
#include "sc6600d_reg.h"
#include "tpd_drv.h"
/**---------------------------------------------------------------------------*
 **                         Compiler Flag                                     
 **---------------------------------------------------------------------------*/
#ifdef   __cplusplus
    extern   "C" 
    {
#endif

/**---------------------------------------------------------------------------*
 **                         Macro defines                                     
 **---------------------------------------------------------------------------*/

//max number of main lcd support in this project.

#define	MAX_MAIN_LCD_SUPPORT 	1                 
#define MAX_SUB_LCD_SUPPORT     1                 

// modified by Kevin.lu,start
#ifdef MAIN_LCD_176_220
#define	LCD_BUF_SIZE	 		(176*220)		//main lcd buffer size.
#else
#define LCD_BUF_SIZE                        (128*160) // main lcd buffer size
#endif
// modified by Kevin.lu,end
#define	SUBLCD_BUF_SIZE			(1*1)//(96*96)			//sub lcd buffer size.

//lcm id macro definition, added by lipengyu.
#define ADC_INT_BIT              0x4000
#define ADC_CLEAR_INT_FLAG       *(volatile uint32 *)(GR_ICLR) = 0x10
#define ADC_START(_source)      *(volatile uint32*)(GR_ADCC) = (_source) | ((_source) << 9)
#define ADC_WAIT_COMPLETED()     while( 0 == (*(volatile uint32 *)(INT_IRQ_RAW_STS) & ADC_INT_BIT) ){ ; }
#define ADC_RESULT               *(volatile uint32 *)(GR_ADCR);
#define ADC_STOP (*(volatile uint32*)(GR_ADCC) &= 0xFFFFC1FF)   //Clear ADC selection bits(13:9) to close ADC input.

//added by pengyuli for switch of sublcd operation.
#define NO_SUB_LCD    //disable sublcd



/**--------------------------------------------------------------------------*
 **                         Constant DEFINITION                                *
 **--------------------------------------------------------------------------*/ 
//Constant parameter for MAIN LCD.
#ifdef MAIN_LCD_176_220
const uint16 lcd_width  		= 176;			// width of main lcd.
const uint16 lcd_height 		= 220;			// height of main lcd.
#else
const uint16 lcd_width  		= 128;			// width of main lcd.
const uint16 lcd_height 		= 160;			// height of main lcd.
#endif
//const uint32 lcd_command_adr	= 0x0c000000;	//address of command for main lcd.  
//const uint32 lcd_data_adr   	= 0x0c000002;	//address of data for main lcd. 
const uint8  lcd_contrast_v		= 0xB8;			//contrast value for main lcd.(0--255)

//Constant parameter for SUB LCD.

const uint16 sublcd_width  		= 96;			// width of sub lcd
const uint16 sublcd_height 		= 96;			// height of sub lcd.
//const uint32 sublcd_command_adr	= 0x0c180000;	//address of command for sub lcd.	 
//const uint32 sublcd_data_adr	= 0x0c380000;	//address of data for sub lcd.  
const uint8 sublcd_contrast_v	= 0x8;			//contras value of sub lcd.(0xE8--0xEB) 
												//In fact, 0xe8 and 0xeb are too bad contrast value.

/**--------------------------------------------------------------------------*
 **                         STATIC DEFINITION                                *
 **--------------------------------------------------------------------------*/

typedef uint16 LCD_COLOR_T;		//main lcd color type (bits-per-pixel)
typedef uint16 SubLCD_COLOR_T;	//sub lcd color type (bits-per-pixel)


LOCAL LCD_COLOR_T 		g_lcd_buffer[LCD_BUF_SIZE];			//lcd buffer

LOCAL SubLCD_COLOR_T 	g_sublcd_buffer[SUBLCD_BUF_SIZE];	//sub lcd buffer

LOCAL int Refreshflag = TRUE ;

uint8 lcd_type = 0;

/**--------------------------------------------------------------------------*
 **                         EXTERNAL DEFINITION                              *
 **--------------------------------------------------------------------------*/
extern const uint32    g_mem_limit;
extern LCD_OPERATIONS_T * LCD_GetLCDPointer(LCD_ID_E lcd_id);
extern void LCD_SetLCDPointer(LCD_ID_E lcd_id, LCD_OPERATIONS_T* lcdpointer_ptr);

extern void GPIO_SetCameraByPassMode(BOOLEAN bByPass);
extern void GPIO_SetLcdBackLight(BOOLEAN b_on);
extern uint32 REFPARAM_GetLCDType(void);

/**--------------------------------------------------------------------------*
 **                         CUSTOMERIZE DEFINITION                           *
 **--------------------------------------------------------------------------*/
//struct for probe function

typedef struct lcd_probe_tag
{
	BOOLEAN (*probe)(void);
	LCD_OPERATIONS_T* (*get_operations)(void);
} LCD_PROBE_T;



LOCAL BOOLEAN MainLCD_Probe(void);
LOCAL LCD_OPERATIONS_T* MainLCD_GetOperationsPointer(void);
LOCAL BOOLEAN SubLCD_Probe(void);
LOCAL LCD_OPERATIONS_T* SubLCD_GetOperationsPointer(void);
//probe function for main lcd supported.
//HX8310
extern BOOLEAN HX8310_Probe(void);
extern LCD_OPERATIONS_T* HX8310_GetOperations(void); 
//HD66773
//extern BOOLEAN HD66773_Probe(void);
//extern LCD_OPERATIONS_T* HD66773_GetOperations(void); 
//S0133
//extern BOOLEAN S1033_Probe(void);
//extern LCD_OPERATIONS_T* S1033_GetOperations(void);
//S0144
//extern BOOLEAN S0144_Probe(void);
//extern LCD_OPERATIONS_T* S0144_GetOperations(void);

//SILI9160
//extern BOOLEAN ILI9160_Probe(void);
//extern LCD_OPERATIONS_T* ILI9160_GetOperations(void);

//extern BOOLEAN R61500_Probe(void);
//extern LCD_OPERATIONS_T* R61500_GetOperations();

//probe function for sub lcd supported.
//extern BOOLEAN S1D15G24_Probe(void);
//extern LCD_OPERATIONS_T* S1D15G24_GetOperations(void); 

//extern BOOLEAN NT39102_Probe(void);
//extern LCD_OPERATIONS_T* NT39102_GetOperations();

//SPFD54124B - 凌达 and 宏尚鹰and 帝晶
extern BOOLEAN SPFD54124B_Probe(void);
extern LCD_OPERATIONS_T* SPFD54124B_GetOperations(void);

//CIL5 -华丽维
extern BOOLEAN C1L5_Probe(void);
extern LCD_OPERATIONS_T* C1L5_GetOperations(void);

//HX8345 -Truly and LiJi and BYD
extern BOOLEAN HX8345_Probe(void);
extern LCD_OPERATIONS_T* HX8345_GetOperations(void);

//CSTN_ST7669 -BYD
//extern BOOLEAN ST7669_Probe(void);
//extern LCD_OPERATIONS_T* ST7669_GetOperations(void);

//TFT_BF6812A -BYD
//extern BOOLEAN BF6812A_Probe(void);
//extern LCD_OPERATIONS_T* BF6812A_GetOperations(void);

//TFT_ssd1784  effect is not ok
extern BOOLEAN SSD1784_Probe(void);
extern LCD_OPERATIONS_T* SSD1784_GetOperations(void);

//CSTN_S6B33BF
extern BOOLEAN S6B33BF_Probe(void);
extern LCD_OPERATIONS_T* S6B33BF_GetOperations(void);

//TFT_ST7732 飞尔液晶   华日客户需求测试20070924 & 立基 20070925
// extern BOOLEAN ST7732_Probe(void);
// extern LCD_OPERATIONS_T* ST7732_GetOperations(void);

//TFT_S6D0151 信利2108
//extern BOOLEAN S6D0151_Probe(void);
//extern LCD_OPERATIONS_T* S6D0151_GetOperations(void);

//TFT_SPFD54124A  伟博电子for 宏尚鹰 20071008
//extern BOOLEAN SPFD54124A_Probe(void);
//extern LCD_OPERATIONS_T* SPFD54124A_GetOperations(void);

//TFT_S6D0164_Weijing 纬晶   20071012   QCIF
//extern BOOLEAN S6D0164_Probe(void);
//extern LCD_OPERATIONS_T* S6D0164_GetOperations(void);

//TFT_NT39102_Dijing 帝晶    20071015
extern BOOLEAN NT39102_Dijing_Probe(void);
extern LCD_OPERATIONS_T* NT39102_Dijing_GetOperations(void);

//TFT_SPFD54124B_Zhonghang 中航 20071023
extern BOOLEAN SPFD54124B_ZH_Probe(void);
extern LCD_OPERATIONS_T* SPFD54124B_ZH_GetOperations(void);



//probe function table for main lcd supported.
const LCD_PROBE_T lcd_probe[MAX_MAIN_LCD_SUPPORT] = 
{
    {MainLCD_Probe, MainLCD_GetOperationsPointer}
};
const LCD_PROBE_T sublcd_probe[MAX_SUB_LCD_SUPPORT] =
{
    {SubLCD_Probe, SubLCD_GetOperationsPointer}
};

/**---------------------------------------------------------------------------*
 **                         Functions                                      
 **---------------------------------------------------------------------------*/
// added by Kevin.lu, start, 061125
LOCAL BOOLEAN MainLCD_Probe(void)
{
	lcd_type = REFPARAM_GetLCDType();
	TP_InitADCValue(lcd_type);
	SCI_TRACE_LOW("MainLCD_Probe = %d",lcd_type);
	switch (lcd_type)
	{
		case TFT_HX8310:
			return HX8310_Probe(); //Jiuzheng LCD
			
		//case TFT_HD66773:
			//return HD66773_Probe(); //Truly LCD
			
		//case TFT_S1033:
			//return S1033_Probe(); //BYD LCD

		//case TFT_R61500:
			//return R61500_Probe();
			
		//case TFT_S0144:
			//return S0144_Probe(); //BYD LCD_CostDown
								    //Wistron LCD. Sample for 2006/12/05
								    //Truly LCD. Sample for 2006/12/05	
      // case TFT_NT39102:
			//return NT39102_Probe();

		//case TFT_S0144_LIJI:
			//return S0144_Probe();//立基

	 	case TFT_SPFD54124B:
			return SPFD54124B_Probe();//凌达和宏尚鹰

		case TFT_C1L5:
			return C1L5_Probe();      //深圳华利维

		case TFT_HX8345:
			return HX8345_Probe();    //Truly and LiJi
			
		//case TFT_C1L5_Tianma:         //深圳 天马
			//return C1L5_Probe();

		//case cstn_ST7669:
			//return  ST7669_Probe();   //BYD

	   // case TFT_BF6812A:
			// return BF6812A_Probe();   //BYD

	      case CSTN_ssd1784:
			
		  	return SSD1784_Probe();          //力科达20070911

		  case CSTN_S6B33BF:
		  	return S6B33BF_Probe();            //Truly 20070911
		  	
		

	      case  TFT_NT39102_dijing:          ////帝晶  NT39102  20071015
			 return NT39102_Dijing_Probe();

        // case TFT_ST7732_Liji :                 //for 立基  20070925
		// case TFT_ST7732_Feier:                 //for 飞尔液晶 20070924
        
		//	return ST7732_Probe();

		// case TFT_S6D0151_Truly:               //Truly 2108  20071008
		 	//return S6D0151_Probe();

		// case TFT_SPFD54124A_Weibo:            //伟博电子for 宏尚鹰 20071008
		 	//return SPFD54124A_Probe();      

		// case TFT_S6D0164_Weijing:            //纬晶S6D0164 20071012
		 	//return S6D0164_Probe();

		case TFT_SPFD54124B_Zhonghang:          //中航,20071023 
			return SPFD54124B_ZH_Probe();

		case TFT_HX8345_BYD:
			return HX8345_Probe();              //BYD 20071025
  	
		default:
			SCI_ASSERT(0); // no main LCD
			return SCI_FALSE;
	}
 	

⌨️ 快捷键说明

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