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

📄 panel.c

📁 VC0558 backend IC LCD panel drive program
💻 C
📖 第 1 页 / 共 5 页
字号:
/*************************************************************************/
/*									 */
/* The last modification date:  02-23-2004                               */
/* REMARKS:  Created initial version 1.0                                 */
/*                                                                       */
/*                Copyright (C) 2004 Vimicro CO.,LTD     		 */
/*************************************************************************/
#include "v558def.h"
#include "v558api.h"
#include "vregdef.h"
 
typedef struct tag_V558_PANELWRITEINFO {
	UINT8     DataPosition;
	UINT8     RegType;
	UINT8     BusType;
} V558_PANELWRITEINFO,*pV558_PANELWRITEINFO;
const V558_PANELWRITEINFO Panel_WriteType;
const V558_PANELWRITEINFO SubPanel_WriteType;
enum {
	NoReg,		//no sub
	RegRsLow16,
	RegRsHigh16,
	RegRsLow8,
	RegRsHigh8
};
enum {			//lcd 8 bit only
	High8,
	Low8
};
enum {			//lcd 8 bit only
	Lcd_Multi16,
	Lcd_Multi8
};
void  V558_LcdPanelSetReg(UINT16 adr, UINT16 val);
void  V558_LcdSubPanelSetReg(UINT16 adr, UINT16 val);

#if	LTS180SH_H1I_X
const V558_PANELWRITEINFO Panel_WriteType=
{
	0,
	(UINT8)RegRsHigh16,
	(UINT8)Lcd_Multi16
};

const V558_PANELREGVALUE Panel_powoff[] =
{
	{0x10,	0x200,	0},
	{0x12,	0x3F09,	0},
	{0x13,	0x121B,	0}
};

const V558_PANELREGVALUE Panel_powon[] =
{
	{0x1,	0x300,	1},
	{0x2,	0x700,	1},
	{0x3,	0x30,	1},
	{0x4,	0x0,	1},
	{0x8,	0x626,	1},
	{0x9,	0x0,	1},
	{0xB,	0x0,	1},
	{0xC,	0x1,	1},
	{0xF,	0x0,	1},
	{0x7,	0x301,	20},

	{0x10,	0x200,	1},
	{0x11,	0x7,	1},
	{0x12,	0x3F09,	1},
	{0x13,	0x121B,	5},
	{0x10,	0x270,	1},
	{0x12,	0x3F19,	20},
	{0x13,	0x321B,	20},

	{0x23,	0x0,	1},
	{0x24,	0x0,	1},

	{0x50,	0x0,	1},
	{0x51,	0x83,	1},
	{0x52,	0x0,	1},
//	{0x53,	0x9F,	1},
	{0x53,	0xff,	1},

	{0x60,	0x9300,	1},
	{0x61,	0x1,	1},
	{0x68,	0x0,	1},
	{0x69,	0x9f,	1},
	{0x6A,	0x0,	1},
	{0x70,	0x8B14,	1},
	{0x71,	0x1,	1},
	{0x78,	0xA0,	1},
	{0x79,	0xFF,	1},
	{0x7A,	0x0,	1},
	{0x80,	0x0,	1},
	{0x81,	0x0,	1},
	{0x82,	0x0,	1},
	{0x83,	0x0,	1},
	{0x84,	0x0,	1},
	{0x85,	0x0,	1},
	{0x86,	0x0,	1},
	{0x87,	0x0,	1},
	{0x88,	0x0,	20},
	{0x30,	0x700,	1},
	{0x31,	0x7,	1},
	{0x32,	0x0,	1},
	{0x33,	0x100,	1},
	{0x34,	0x707,	1},
	{0x35,	0x7,	1},
	{0x36,	0x700,	1},

	{0x37,	0x7,	1},
	{0x38,	0x1000,	1},
	{0x39,	0x001f,	1},
//	{0x37,	0x1,	1},
//	{0x38,	0x1800,	1},
//	{0x39,	0x7,	1},
	{0x40,	0x700,	1},
	{0x41,	0x7,	1},
	{0x42,	0x0,	1},
	{0x43,	0x100,	1},
	{0x44,	0x707,	1},
	{0x45,	0x7,	1},
	{0x45,	0x7,	1},
	{0x46,	0x700,	1},

	{0x47,	0x7,	1},
	{0x48,	0x1000,	1},
	{0x49,	0x001f,	1},
//	{0x47,	0x1,	1},
//	{0x48,	0x1800,	1},
//	{0x49,	0x7,	1},

	{0x7,	0x301,	10},
	{0x7,	0x321,	1},
	{0x7,	0x323,	20},
	{0x7,	0x333,	40},

	{0x20,	0x83,	1},
	{0x21,	0x0,	1}
};

V558_LCDIFPARM Panel_LcdIF =
{
	{ 128,	160	},		//size
	{4, 0},				//mp
	{32, 160},			//sp
	0x0, 0, 0X20, 0x21, 0X0, 0,	//hsa, hea, hsxa, hsya, hexa, heya
	0xfC85,				//lc
	0x100,				//dpad
	0x460, 0x460,		//wrcycle, rdcycle
	0,					//rsPolarity
	0x0,				//dmap
	1,					//index select
	0x22,				//dispadr
	LTS180SH_H1I_X_PANEL,		//paneltype
	0,					//reserve
	{
		0,		0,		1,		4,		9,		0x10,	0x1a,	0x27,	0x37,
		0x4a,	0x5f,	0x77,	0x91,	0xac,	0xc8,	0xe4,	0xff
	},					//gamma R;
	{
		0,		0,		1,		4,		9,		0x10,	0x1a,	0x27,	0x37,
		0x4a,	0x5f,	0x77,	0x91,	0xac,	0xc8,	0xe4,	0xff
	},					//gamma G;
	{
		0,		0,		1,		4,		9,		0x10,	0x1a,	0x27,	0x37,
		0x4a,	0x5f,	0x77,	0x91,	0xac,	0xc8,	0xe4,	0xff
	},					//gamma B
	{0xff, 0x0, 0x0, 0}
};

const V558_PANELINFO	Panel_Info =
{
	"Samsung LTS180S3-H1I-X",		//description
	&Panel_LcdIF,
	{sizeof(Panel_powon) / sizeof(V558_PANELREGVALUE), Panel_powon},
	{sizeof(Panel_powoff) / sizeof(V558_PANELREGVALUE), Panel_powoff},
	{0, NULL},
	{0, NULL},
	{0, NULL},
	{0, NULL},

	V558_LcdPanelSetReg,
	NULL
};
#endif




//----------------

#if	LCT_POWERTIP_V58
const V558_PANELWRITEINFO Panel_WriteType=
{

	Low8,
	RegRsLow8,
	(UINT8)Lcd_Multi8 	
};

void lct_powertipInit(void)
{
	UINT8 temp, State = 0;
	UINT16 i;

	V558_CtrlSetGpioCfg(0xff);
	V558_CtrlSetGpioMode(0xff);
	V558_CtrlSetGpioDirection(0x01);

	for(temp = 0; temp < 58; temp++)
	{ 
		if(State)
		{
			V558_CtrlSetGpioData(0x00);
			State = 0;
		}
		else
		{
			State = 1;
			V558_CtrlSetGpioData(0x01);
			for(i = 0; i < 50; i++);
		}
	}
	V558_CtrlSetGpioData(0x01);
}

const V558_PANELREGVALUE Panel_wakefstd[] =
{
	{0x0,	0x01,	10},
	{0x3,	0x0,	10}
};

const V558_PANELREGVALUE Panel_stdby[] =
{
	{0x7,	0x137,	0},
	{0x7,	0x136,	40},
	{0x7,	0x126,	40},
	{0x7,	0x4,	0},
	{0x3,	0x7fd,	0}
};

//static V558_PANELREGVALUE *Panel_wakefs = NULL;
//{
//};

const V558_PANELREGVALUE Panel_sleep[] =
{
	{0x7,	0x137,	0},
	{0x7,	0x136,	20},
	{0x7,	0x126,	20},
	{0x7,	0x4,	0},
	{0x3,	0x7fe,	0}
};

const V558_PANELREGVALUE Panel_powoff[] =
{
	{0x7,	0x136,	20},
	{0x7,	0x126,	20},
	{0x7,	0x4,	0},
	{0x3,	0x7fc,	0}
};

const V558_PANELREGVALUE Panel_powon[] =
{
	{0x7,	0x104,	0},
	{0xd,	0x100,	0},
	{0xe,	0xd18,	20},
	{0x1,	0x113,	0},
	{0x2,	0x700,	0},
	{0x5,	0x1230,	0},
	{0x6,	0x0,	0},
	{0xb,	0x4008,	0},
	{0xc,	0x0,	0},
	{0x3,	0x8,	0},//
	{0x4,	0x0,	20},
	{0xe,	0x2d18,	0},//
	{0xd,	0x110,	20},//
	{0x21,	0x0,	0},
	{0x30,	0x700,	0},
	{0x31,	0x7,	0},
	{0x32,	0x0,	0},
	{0x33,	0x100,	0},
	{0x34,	0x707,	0},
	{0x35,	0x7,	0},
	{0x36,	0x700,	0},
	{0x37,	0x0007,	0},
	{0x0f,	0x0,	0},
	{0x11,	0x0,	0},
	{0x14,	0x5c00,	0},
	{0x15,	0x9f5d,	0},
	{0x16,	0x7f00,	0},
	{0x17,	0x9f00,	0},
	{0x3a,	0x1800,	0},
	{0x3b,	0x7,	5},
	{0x7,	0x105,	0},
	{0x7,	0x125,	0},
	{0x7,	0x127,	0},
	{0x7,	0x137,	0},

	{0x33,	0x707,	0},
	{0x3a,	0x1f00,	0},
	{0x30,	0x700,	0},
	{0x31,	0x707,	0},
	{0x32,	0x700,	0},

	{0x21,	0x0,	0}
};

V558_LCDIFPARM Panel_LcdIF =
{
	{ 128,	160	},		//size
	//{0, 0x0},				//mp  2005.5.6
	{0x9f, 0x7f},				//mp //2005.5.6
	
	{0, 0},				//sp
	//0x21, 0, 0, 0, 0, 0,	//hsa, hea, hsxa, hsya, hexa, heya
	0x21, 0, 0x02, 0, 0x82, 0x9f,  //2004.5.6 
	
	0xff8c,				//lc
	0x100,				//dpad
	0x460, 0x460,		//wrcycle, rdcycle
	0,					//rsPolarity
	0x0,				//dmap
	1,					//index select
	0x22,				//dispadr
	LCT_POWERTIP_V58_8,
	//Truly_128160_16_PANEL,		//paneltype
	0,					//reserve
	{
		0,		0,		1,		4,		9,		0x10,	0x1a,	0x27,	0x37,
		0x4a,	0x5f,	0x77,	0x91,	0xac,	0xc8,	0xe4,	0xff
	},					//gamma R;
	{
		0,		0,		1,		4,		9,		0x10,	0x1a,	0x27,	0x37,
		0x4a,	0x5f,	0x77,	0x91,	0xac,	0xc8,	0xe4,	0xff
	},					//gamma G;
	{
		0,		0,		1,		4,		9,		0x10,	0x1a,	0x27,	0x37,
		0x4a,	0x5f,	0x77,	0x91,	0xac,	0xc8,	0xe4,	0xff
	},					//gamma B
	{0xff, 0x0, 0x0, 0}
};

const V558_PANELINFO	Panel_Info =
{
	"LCT_POWERTIP_V58_8",		//description

	&Panel_LcdIF,

	{sizeof(Panel_powon) / sizeof(V558_PANELREGVALUE), Panel_powon},
	{sizeof(Panel_powoff) / sizeof(V558_PANELREGVALUE), Panel_powoff},
	{sizeof(Panel_sleep) / sizeof(V558_PANELREGVALUE), Panel_sleep},
	{0, NULL },
//	{sizeof(Panel_wakefs) / sizeof(V558_PANELREGVALUE), Panel_wakefs},
	{sizeof(Panel_stdby) / sizeof(V558_PANELREGVALUE), Panel_stdby},
	{sizeof(Panel_wakefstd) / sizeof(V558_PANELREGVALUE), Panel_wakefstd},
	V558_LcdPanelSetReg,
	lct_powertipInit
//	NULL
};
const V558_PANELWRITEINFO SubPanel_WriteType=
{
	Low8,
	RegRsHigh8,
	Lcd_Multi8
};

const V558_PANELREGVALUE SubPanel_powon[] =
{	
	{0xd1,  0,   	0},
	{0x20,  0xb,	10},
	
	{0x81,  0x20,   	0},
	{0xffff,	6,    	0},
	
	{0x94,	0,	0},

	{0xfb,	0x03,	0},

	{0xf7,	0x28,	0},
	{0xffff,	0x2e,	0},
	{0xffff,	0x5,	0},
	
	{0xf2,	0x08,	0},
	{0xffff, 0x06,	0},

	{0xbc,	0x3,	0},
	{0xffff,	0x0,	0},
	{0xffff,	0x02,	0},
	
	{0x15,	0x0,	0},
	{0xffff,	0x2f,	0},
	
	{0x75,	0,	0},
	{0xffff,	0x3f,	0},

	{0xbb,	0x1,	0},
	
	{0xca,	0,	0},
	{0xffff,	0xf,	0},
	{0xffff,	0,	0},
		
	{0xa2,	0,	0},
	{0xa7,	0,	0},
	{0xaf,	0,	0}	
};
V558_LCDIFPARM SubPanel_LcdIF =
{
	{ 96,	64},	//size
	{0x0, 0x04},			//mp
	{0, 0},			//sp
	0x15, 0x75, 0, 0, 0, 0,	//hsa, hea, hsxa, hsya, hexa, heya
	0xd08c,			//lc
	0x100,			//dpad
	0x880, 0x460,		//wrcycle, rdcycle
	0,					//rsPolarity
	0x0c,				//dmap		
	0x1,			//index select
	0x5c,			//dispadr
	0,			//paneltype
	0,			//reserve
	{
		0,		0,		1,		4,		9,		0x10,	0x1a,	0x27,	0x37,
		0x4a,	0x5f,	0x77,	0x91,	0xac,	0xc8,	0xe4,	0xff
	},					//gamma R;
	{
		0,		0,		1,		4,		9,		0x10,	0x1a,	0x27,	0x37,
		0x4a,	0x5f,	0x77,	0x91,	0xac,	0xc8,	0xe4,	0xff
	},					//gamma G;
	{
		0,		0,		1,		4,		9,		0x10,	0x1a,	0x27,	0x37,
		0x4a,	0x5f,	0x77,	0x91,	0xac,	0xc8,	0xe4,	0xff
	},					//gamma B
	{0xff, 0x0, 0x0, 0}		//background color
};
const V558_PANELINFO	SlavePanel_Info=
{
	"truly_128160_ssd1788",		//description

	&SubPanel_LcdIF,
	{sizeof(SubPanel_powon) / sizeof(V558_PANELREGVALUE),SubPanel_powon},
	{0, NULL},
	{0, NULL},
	{0, NULL},
	{0, NULL},
	{0, NULL},

	V558_LcdSubPanelSetReg,
	NULL

};

#endif




//--------------








#if	LTS180S3_HF1

const V558_PANELWRITEINFO Panel_WriteType=
{
	Low8,
	RegRsHigh16,
	Lcd_Multi8
};

const V558_PANELREGVALUE Panel_wakefstd[] =
{
	{0x0,	0x01,	10},
	{0x3,	0x0,		10}
};

const V558_PANELREGVALUE Panel_stdby[] =
{
	{0x7,	0x137,	0},
	{0x7,	0x136,	40},
	{0x7,	0x126,	40},
	{0x7,	0x4,	0},
	{0x3,	0x7fd,	0}
};

//static V558_PANELREGVALUE *Panel_wakefs = NULL;
//{
//};

const V558_PANELREGVALUE Panel_sleep[] =
{
	{0x7,	0x137,	0},
	{0x7,	0x136,	20},
	{0x7,	0x126,	20},
	{0x7,	0x4,	0},
	{0x3,	0x7fe,	0}
};

const V558_PANELREGVALUE Panel_powoff[] =
{
	{0x7,	0x136,	20},
	{0x7,	0x126,	20},
	{0x7,	0x4,	0},
	{0x3,	0x7fc,	0}
};
#if 0
const V558_PANELREGVALUE Panel_powon[] =
{	
	{0x7,	0x0004,	0},
	{0x1,	0x0113,	0},
	{0x2,	0x0700,	0},
	{0x5,	0x1030,	0},
	{0x6,	0x000,	0},
	{0xb,	0x0000,	0},
	{0xc,	0x0002,	0},
	{0x3,	0x0410,	0},
	{0x4,	0x0000,	40},
	{0xe,	0x351e,	40},//
	{0xd,	0x051b,	40},
	{0x21,	0x0002,	40},
	{0x30,	0x0000,	0},
	{0x31,	0x0000,	0},
	{0x32,	0x0000,	0},
	{0x33,	0x0000,	0},
	{0x34,	0x0000,	0},
	{0x35,	0x0000,	0},
	{0x36,	0x0000,	0},
	{0x37,	0x0000,	0},
	{0x3a,	0x0000,	0},
	{0x3b,	0x0000,	5},
	{0x0f,	0x0002,	0},
	{0x11,	0x0000,	0},
	{0x14,	0x9f00,	0},
	{0x15,	0x9f00,	0},
	{0x16,	0x8102,	0},
	{0x17,	0x9f00,	0},
	{0x21,	0x9f81,	0},
	
	{0x7,	0x0005,	40},
	{0x7,	0x0025,	40},
	{0x7,	0x0027,	40},
	{0x7,	0x0037,	40},
};
#elif 1
const V558_PANELREGVALUE Panel_powon[] ={{}};
#else
const V558_PANELREGVALUE Panel_powon[] =
{

	{0x7,	0x0104,	0},
	{0xd,	0x0100,	0},
	{0xe,	0x0d18,	20},
	{0x1,	0x0113,	0},
	{0x2,	0x0700,	0},
	{0x5,	0x1030,	0},
	{0x6,	0x0000,	0},
	{0xb,	0x4008,	0},
	{0xc,	0x0000,	0},
	{0x3,	0x0008,	0},//
	{0x4,	0x0000,	20},
	{0xe,	0x2d18,	0},//
	
	{0xd,	0x0110,	20},//
	
//	{0x21,	0x9f81,	0},
	
	{0x30,	0x0700,	0},
	{0x31,	0x0007,	0},
	{0x32,	0x0000,	0},
	{0x33,	0x0100,	0},
	{0x34,	0x0707,	0},
	{0x35,	0x0007,	0},
	{0x36,	0x0700,	0},
	{0x37,	0x0007,	0},
	
	{0x0f,	0x0002,	0},
	{0x11,	0x0000,	0},
	{0x14,	0x9f00,	0},
	{0x15,	0x0002,	0},
	{0x16,	0x8102,	0},
	{0x17,	0x9f00,	0},
	{0x3a,	0x1800,	0},
	{0x3b,	0x0007,	5},
	{0x7,	0x105,	0},
	{0x7,	0x125,	0},
	{0x7,	0x127,	0},
	{0x7,	0x137,	0},

	{0x33,	0x700,	0},
	{0x3a,	0x1f00,	0},
	{0x30,	0x700,	0},
	{0x31,	0x707,	0},
	{0x32,	0x700,	0},

	{0x21,	0x0002,	0}
};
#endif

V558_LCDIFPARM Panel_LcdIF =
{
	{ 128,	160	},		//size
	{2, 0},				//mp
	{0, 0},				//sp
	0x21, 0, 0, 0, 0, 0,	//hsa, hea, hsxa, hsya, hexa, heya
	0x668a,				//lc  0x668a 0x668c open gamm valure adjust
	0x100,				//dpad
	0x460, 0x460,		//wrcycle, rdcycle
	0,					//rsPolarity
	0x04,				//dmap
	0x03,					//index select
	0x22,				//dispadr
	LTS180S3_HF1_PANEL,		//paneltype
	0,					//reserve
	{
		0,		0,		1,		4,		9,		0x10,	0x1a,	0x27,	0x37,
		0x4a,	0x5f,	0x77,	0x91,	0xac,	0xc8,	0xe4,	0xff
	},					//gamma R;
	{
		0,		0,		1,		4,		9,		0x10,	0x1a,	0x27,	0x37,
		0x4a,	0x5f,	0x77,	0x91,	0xac,	0xc8,	0xe4,	0xff
	},					//gamma G;
	{
		0,		0,		1,		4,		9,		0x10,	0x1a,	0x27,	0x37,
		0x4a,	0x5f,	0x77,	0x91,	0xac,	0xc8,	0xe4,	0xff
	},					//gamma B
	{0xff, 0x0, 0x0, 0}
};

const V558_PANELINFO	Panel_Info =
{
	"Samsung LTS180S3-HF1",		//description

	&Panel_LcdIF,

	{sizeof(Panel_powon) / sizeof(V558_PANELREGVALUE), Panel_powon},
	{sizeof(Panel_powoff) / sizeof(V558_PANELREGVALUE), Panel_powoff},
	{sizeof(Panel_sleep) / sizeof(V558_PANELREGVALUE), Panel_sleep},
	{0, NULL },

	{sizeof(Panel_stdby) / sizeof(V558_PANELREGVALUE), Panel_stdby},
	{sizeof(Panel_wakefstd) / sizeof(V558_PANELREGVALUE), Panel_wakefstd},
	V558_LcdPanelSetReg,
	NULL
};
#endif



#if	Truly_128160_16
const V558_PANELWRITEINFO Panel_WriteType=
{
#if   1  // zlj 2005.5.6
	0,
	(UINT8)RegRsHigh16,
	(UINT8)Lcd_Multi16  	
#else
	Low8,
	RegRsLow8,
	(UINT8)Lcd_Multi8  // zlj 2005.5.6
#endif 

	
};

⌨️ 快捷键说明

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