亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lcd_cfg.c

?? 展訊平臺nt3916 lcd 驅動code
?? C
字號:
/******************************************************************************
 ** 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						  *
 ******************************************************************************/

#include "sci_types.h"
#include "lcd.h"
#include "adc_drv.h"
#include "dal_lcd.h"

/**---------------------------------------------------------------------------*
 **                         Compiler Flag                                     
 **---------------------------------------------------------------------------*/
#ifdef   __cplusplus
    extern   "C" 
    {
#endif

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

#define LCD_NUMBER_USED         2  
// 1= main lcd ,2 = one main lcd + one sub lcd.
#define LCD_BUSRATIO            1  // Configure the bus priority.
//Priority field configures the time ratio of LCM operation to NAND operation.

//max number of main lcd support in this project.
#define	MAX_MAIN_LCD_SUPPORT 	3                
#define MAX_SUB_LCD_SUPPORT     3                 

#define	LCD_BUF_SIZE	 		(176*220)		//main lcd buffer size.
#define	SUBLCD_BUF_SIZE			(96*96)			//sub lcd buffer size.

#define ADC_NUM 10

/**--------------------------------------------------------------------------*
 **                         Data Structures                                  *
 **--------------------------------------------------------------------------*/ 
typedef uint16 LCD_COLOR_T;		//main lcd color type (bits-per-pixel)
typedef uint16 SubLCD_COLOR_T;	//sub lcd color type (bits-per-pixel)
//struct for probe function

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

/**--------------------------------------------------------------------------*
 **                         Constant DEFINITION                                *
 **--------------------------------------------------------------------------*/ 
//Constant parameter for MAIN LCD.

const uint16 lcd_width  		= 176;			// width of main lcd.
const uint16 lcd_height 		= 220;			// height of 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 uint8 sublcd_contrast_v	= 0x8;			//contras value of sub lcd.(0xE8--0xEB) 

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

__align(4) LOCAL LCD_COLOR_T 		g_lcd_buffer[LCD_BUF_SIZE];			//lcd buffer
__align(4) LOCAL SubLCD_COLOR_T 	g_sublcd_buffer[SUBLCD_BUF_SIZE];	//sub lcd buffer
LOCAL uint8 s_lcm_index = 0;
LOCAL uint16 s_lcd_adc_val;    //lcd adc value
LOCAL int Refreshflag = TRUE ;
LOCAL LCD_OPERATIONS_T *s_lcd_operation[LCD_NUMBER_USED];

/**--------------------------------------------------------------------------*
 **                         EXTERNAL DEFINITION                              *
 **--------------------------------------------------------------------------*/

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

//probe function for main lcd supported.
extern BOOLEAN HD66773_Probe(void);
extern LCD_OPERATIONS_T* HD66773_GetOperations(void); 
extern PUBLIC void HD66773_SetOffset(uint8 offset);

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

extern BOOLEAN S6B33B5A_Probe(void);
extern LCD_OPERATIONS_T* S6B33B5A_GetOperations(void);

extern BOOLEAN NT3916_Probe(void);
extern LCD_OPERATIONS_T* NT3916_GetOperations(void);
/**--------------------------------------------------------------------------*
 **                         CUSTOMERIZE DEFINITION                           *
 **--------------------------------------------------------------------------*/

//probe function table for main lcd supported.
const LCD_PROBE_T lcd_probe[][MAX_MAIN_LCD_SUPPORT] = 
{  
    {
        //Main LCD
    	{NT3916_Probe, NT3916_GetOperations},
    	{NT3916_Probe, NT3916_GetOperations},
    	{NT3916_Probe, NT3916_GetOperations},
    },
    {
    	//Sub LCD
    	{S1D15G24_Probe, S1D15G24_GetOperations},
        {S1D15G24_Probe, S1D15G24_GetOperations},
        {S6B33B5A_Probe, S6B33B5A_GetOperations},
    }
};

/**---------------------------------------------------------------------------*
 **                         Functions                                      
 **---------------------------------------------------------------------------*/
PUBLIC void LCD_PointerSaveInAssertResetMode(void)
{
    LCD_EnterSleep(MAIN_LCD_ID, SCI_FALSE);
    LCD_EnterSleep(SUB_LCD_ID, SCI_FALSE);
}

/******************************************************************************/
//  Description:  let the main lcd display on to display assert information 
//	Global resource dependence:
//  Author: Jim.zhang
//	Note:
/******************************************************************************/
PUBLIC void LCD_DisplayOn(void)
{
	// exit sleep mode
	LCD_EnterSleep(MAIN_LCD_ID, SCI_FALSE);

	// enter by pass mode if have digital cammera
	GPIO_SetCameraByPassMode(SCI_TRUE);

	// open back light.
    GPIO_SetLcdBackLight(SCI_TRUE);
}

/******************************************************************************/
//  Description:  return the main lcd buffer  pointer
//	Global resource dependence:
//  Author: Jim.zhang
//	Note:
/******************************************************************************/
PUBLIC void *LCD_GetLCDBuffer(void)
{
	return g_lcd_buffer;		
}

/******************************************************************************/
//  Description:  return the sub lcd buffer pointer
//	Global resource dependence:
//  Author: Jim.zhang
//	Note:
/******************************************************************************/
PUBLIC void *LCD_GetSubLCDBuffer(void)
{
	return g_sublcd_buffer;
}

/******************************************************************************/
//  Description:  return the lcm index
//	Global resource dependence:
//  Author: Jing.Li
//	Note:
/******************************************************************************/
PUBLIC uint8 LCD_GetIndex(void)
{
    return s_lcm_index;
}


/******************************************************************************/
//  Description:  return the main lcd driver funtion pointer
//	Global resource dependence:
//  Author: Jim.zhang
//	Note:
/******************************************************************************/
PUBLIC void LCD_SetIndex(void)
{
	uint32 i,adc_rlt[ADC_NUM];
	uint32 driver_id;
	
	//read driver_id from TFT-LCD to set s_lcm_index. 
	//feature phone don't use function
    driver_id = LCD_Read_ID(0x0,0x0);
    SCI_TRACE_LOW("lcd_ID = 0x%x",driver_id);
    //set lcm index
    
    
    //Use ADC get lcd id,then set s_lcm_index.
    //feature phone use function
	adc_rlt[0] = ADC_GetResultDirectly(ADIN_4, FALSE);
	
	LCD_Wait(50);
	s_lcd_adc_val = 0;
		
	for(i = 0;i < ADC_NUM;i++)
	{
	    adc_rlt[i] = ADC_GetResultDirectly(ADIN_4, FALSE);
	    s_lcd_adc_val += adc_rlt[i];
	    SCI_TRACE_LOW("adc_rlt[%d]: %d", i, adc_rlt[i]);
	}
	
	s_lcd_adc_val /= ADC_NUM;
	SCI_TRACE_LOW("s_lcd_adc_val: %d", s_lcd_adc_val);

	//set lcm index
	if((s_lcd_adc_val>=130) && (s_lcd_adc_val<230))
	{
	    s_lcm_index = 0;
	    HD66773_SetOffset(2);
	}
    else if ((s_lcd_adc_val>=230) && (s_lcd_adc_val<330))
    {
        s_lcm_index = 1;
	    HD66773_SetOffset(4);
	}
    else if ((s_lcd_adc_val>=330) && (s_lcd_adc_val<430))
    {
        s_lcm_index = 2;
	    HD66773_SetOffset(4);
	}
	
	if(s_lcm_index >= MAX_MAIN_LCD_SUPPORT)
	{
	    s_lcm_index = 0;
	    HD66773_SetOffset(2);
	}
	
    SCI_TRACE_LOW("s_lcm_index = 0x%x",s_lcm_index);

}

/*********************************************************************/
//  Description:   Read LCD ID
//	Global resource dependence:
//  Author: Younger.Yang
//	Note: You may read LCD ID before lcd init,otherwise
//  the read data may be incorrect.
/*********************************************************************/

PUBLIC uint32 LCD_Read_ID(uint32 lcd_cs, uint32 lcd_cd)
{
    uint32 driver_id = 0xffffffff;
    uint32 cd_value;
    
    LCM_WAIT_AHBFIFO_NOTFULL
    *(volatile uint32 *)(LCM_CMD_ADDR(lcd_cs,lcd_cd))  = 0x0;    //set register 0x0
    //Set RS value
    cd_value = 1;
    driver_id = LCM_Read(lcd_cs,lcd_cd,cd_value);
    
    return driver_id;
}

/******************************************************************************/
//  Description:  return the lcd driver funtion pointer
//	Global resource dependence:
//  Author: Jim.zhang
//	Note:
/******************************************************************************/
PUBLIC LCD_OPERATIONS_T **LCD_GetOperations(void)
{
    volatile uint32 i;
    
    LCD_SetIndex();
    
    for(i = 0; i < LCD_NUMBER_USED; i++)
    {
        s_lcd_operation[i] = lcd_probe[i][s_lcm_index].get_operations();
    }
    return s_lcd_operation;

}

/******************************************************************************/
//  Description:  return the sub lcd driver funtion pointer
//	Global resource dependence:
//  Author: Jim.zhang
//	Note:
/******************************************************************************/
PUBLIC int LCD_RefreshControl (int flag)
{
	Refreshflag = flag;
	return Refreshflag;
}
/******************************************************************************/
//  Description:  return the sub lcd driver funtion pointer
//	Global resource dependence:
//  Author: Jim.zhang
//	Note:
/******************************************************************************/
PUBLIC int LCD_GetRefreshFlag ()
{
	return Refreshflag;
}

/*******************************************************************************/
// Description: 
// Global resource dependence:
// Author: Jianping.wang & younger.yang
// Note:
/********************************************************************************/	
PUBLIC uint32 LCD_GetUsedNum(void)
{
    uint32 lcd_num = LCD_NUMBER_USED; 
    
	return lcd_num;
}	

/*******************************************************************************/
// Description: 
// Global resource dependence:
// Author: Younger.yang
// Note:
/********************************************************************************/	
PUBLIC uint32 LCD_GetBusRatio(void)
{
    uint32 lcd_busratio = LCD_BUSRATIO; 
    
	return lcd_busratio;
}	


/*******************************************************************************/
// Description: 
// Global resource dependence:
// Author: Ming.zhang & Younger.yang
// Note:
/********************************************************************************/	

PUBLIC void LCD_Wait(uint32 ms)
{
	if (SCI_InThreadContext()) {
		SCI_Sleep(ms);
	} else {
		uint32 end = SCI_GetTickCount() + ms;
		while (SCI_GetTickCount() < end)
			/* loop */;
	}
}

/**---------------------------------------------------------------------------*
 **                         Compiler Flag                                     *
 **---------------------------------------------------------------------------*/
#ifdef   __cplusplus
    }
#endif 
// end lcd_cfg.c

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人综合网站| 中文字幕一区在线| 国产精品乱码一区二区三区软件 | 91网站黄www| 精品国产制服丝袜高跟| 一区二区三区不卡在线观看| 久久se精品一区精品二区| 色哟哟欧美精品| 久久精品男人天堂av| 亚洲第四色夜色| a亚洲天堂av| 久久精品一区二区三区av| 日韩高清欧美激情| 一本久道久久综合中文字幕| 欧美mv日韩mv国产网站app| 亚洲三级在线看| 国产不卡视频在线观看| 91精品国产乱| 亚洲国产成人va在线观看天堂| 高清久久久久久| 国产午夜精品一区二区| 久久99精品久久只有精品| 欧美人与性动xxxx| 亚洲成a人v欧美综合天堂下载| 99久久精品国产精品久久| 国产欧美日韩中文久久| 国产美女精品在线| 精品国内片67194| 蜜臀久久久久久久| 3atv一区二区三区| 日韩中文字幕一区二区三区| 欧美日韩国产天堂| 亚洲一区视频在线| 欧美午夜精品久久久久久孕妇| 亚洲图片另类小说| 91国产精品成人| 亚洲国产一区二区三区| 欧美色综合影院| 石原莉奈在线亚洲二区| 9191国产精品| 奇米在线7777在线精品| 日韩午夜三级在线| 久久99蜜桃精品| 久久久久久夜精品精品免费| 国产综合色在线视频区| 国产欧美精品一区二区三区四区| 国产成人午夜视频| 亚洲欧洲www| 欧美伊人久久大香线蕉综合69| 一区二区三区在线观看网站| 欧美色综合天天久久综合精品| 亚洲国产美国国产综合一区二区| 欧美福利视频导航| 激情六月婷婷久久| 国产精品久久777777| 色婷婷av一区二区三区gif | 亚洲三级在线观看| 欧美少妇bbb| 久久电影网站中文字幕| 国产日产精品一区| 91精品福利视频| 麻豆一区二区99久久久久| 久久亚区不卡日本| 色网站国产精品| 99v久久综合狠狠综合久久| 亚洲日本在线看| 欧美一区二区女人| 成人一级视频在线观看| 亚洲一区二区在线播放相泽| 日韩午夜在线观看| 99久久综合精品| 日本亚洲视频在线| 中文字幕在线一区| 91麻豆精品国产91久久久久久久久| 久久99久久久久久久久久久| 国产精品久久一卡二卡| 欧美理论在线播放| 成人激情免费电影网址| 五月激情六月综合| 国产精品二三区| 欧美大片在线观看一区| 9久草视频在线视频精品| 免费在线视频一区| 亚洲激情图片qvod| 欧美国产日韩精品免费观看| 9191国产精品| 色婷婷激情综合| 国产精品一区二区三区乱码 | 亚洲国产精品成人久久综合一区| 在线中文字幕一区二区| 国产传媒久久文化传媒| 日韩高清电影一区| 亚洲综合丝袜美腿| 国产精品萝li| 久久免费看少妇高潮| 91精品国产麻豆国产自产在线| 97精品久久久久中文字幕 | 亚洲图片你懂的| 久久久不卡网国产精品二区| 亚洲人成网站色在线观看| 亚洲精品在线观看网站| 欧美日韩免费在线视频| 91亚洲午夜精品久久久久久| 国产精品99久久不卡二区| 毛片av中文字幕一区二区| 天堂av在线一区| 亚洲一区二区三区精品在线| 亚洲人成精品久久久久久| 欧美高清在线一区二区| 国产日韩影视精品| 久久综合色一综合色88| 日韩一区二区精品在线观看| 欧美日韩高清一区二区三区| 欧美无砖专区一中文字| 一本色道久久综合亚洲精品按摩| 不卡视频免费播放| 91影院在线观看| 99re视频精品| 色综合视频在线观看| 色一情一伦一子一伦一区| 91福利视频网站| 欧美三级在线播放| 欧美日韩视频不卡| 91精品国产91综合久久蜜臀| 欧美一区二区三区白人| 日韩欧美一二三| 久久免费午夜影院| 国产精品免费aⅴ片在线观看| 国产精品毛片久久久久久| 国产在线一区观看| 精品一区二区三区免费| 国产一区在线不卡| www.欧美亚洲| 欧美午夜理伦三级在线观看| 欧美日本在线视频| 欧美精品一区二| 中文字幕的久久| 亚洲精品国产a久久久久久| 亚洲国产精品久久久久婷婷884| 性做久久久久久免费观看欧美| 丝袜亚洲另类丝袜在线| 毛片av一区二区| 成人av免费在线| 欧美蜜桃一区二区三区| 欧美va在线播放| 国产精品国产三级国产aⅴ原创| 亚洲黄色av一区| 久久99这里只有精品| 成人av综合在线| 欧美片网站yy| 国产日韩高清在线| 亚洲国产aⅴ天堂久久| 麻豆视频一区二区| 99久久综合99久久综合网站| 欧美日韩一级二级三级| 久久久高清一区二区三区| 一区二区三区四区不卡视频| 久久精品国产第一区二区三区| 成人午夜激情片| 制服丝袜中文字幕一区| 国产精品污www在线观看| 午夜精品久久一牛影视| 成人午夜av在线| 欧美一区二区三区视频在线 | 99久精品国产| 制服丝袜亚洲播放| 中文字幕在线一区二区三区| 久久精品久久久精品美女| 色呦呦网站一区| 久久尤物电影视频在线观看| 夜夜爽夜夜爽精品视频| 国产精品88av| 日韩一区二区精品在线观看| 亚洲码国产岛国毛片在线| 国产一区亚洲一区| 欧美猛男超大videosgay| 国产精品毛片a∨一区二区三区| 日本成人在线电影网| 色婷婷一区二区三区四区| 久久综合色婷婷| 97成人超碰视| 亚洲国产视频一区| 色综合色综合色综合色综合色综合| 欧美另类变人与禽xxxxx| 日韩成人免费在线| 一区二区三区成人| av一区二区三区黑人| 久久久久久久综合日本| 男女性色大片免费观看一区二区| 色久综合一二码| 亚洲视频图片小说| 成人午夜视频福利| 久久精品夜色噜噜亚洲a∨| 青娱乐精品视频| 欧美男同性恋视频网站| 午夜日韩在线电影| 欧美久久婷婷综合色| 亚洲午夜精品在线| 欧美三级中文字幕在线观看| 亚洲一区二区在线视频|