Beispiel #1
0
static void lcm_resume(void)
{
	LCM_DEBUG("lcm_resume begin----------------\n");

	SET_GPIO_OUT(LCD_LDO2V8_GPIO_PIN , 1);
	MDELAY(80);

	lcm_init();

	LCM_DEBUG("lcm_resume end------------------\n");
}
static unsigned int lcm_esd_recover(void)
{
    LCM_DEBUG("start :%s\n",__func__);

    lcm_init();


    LCM_DEBUG("esd recover ends\n");

    return 1;
}
static unsigned int lcm_compare_id(void)
{ 
    unsigned int xx_temp = 0;
    LCM_DEBUG("[LCM_truly_r61408: lcm_compare_id. \n");
    xx_temp= IMM_GetOneChannelValue(COMPARE_ADC_CHANNEL,500);
    LCM_DEBUG("xx_temp=%d \n",xx_temp);    
#ifndef GN_MTK_BSP_LCD_ID_CHECK 
    if(xx_temp >= COMPARE_ID_V_LEVEL_1)
        return 0; 
    xx_temp =  compare_ic_id(); 
    return xx_temp;
#else
    return (xx_temp < COMPARE_ID_V_LEVEL_1)?1:0;       
#endif
}
static int compare_ic_id(void)
{
    char ret,id;        
 
    config_gpio_for_read();
  
#ifdef BUILD_UBOOT     	
    SET_RESET_PIN(1);
	MDELAY(10);
	SET_RESET_PIN(0);
	MDELAY(10);
	SET_RESET_PIN(1);
	MDELAY(100);	
#endif

    LCDSPI_GPIO_CMD(0xB0);
    LCDSPI_GPIO_DAT(0x04);
	LCDSPI_GPIO_CMD(0xF5);
	
	id = LCDSPI_Read(0XBF);	

    LCM_DEBUG("LCD id is %d !!!!!!!!!!!!!!!!!!!!!!!!\n",id);
	ret = 0;
	
	if( lcm_id == id )
	    ret = 1;
    
    config_gpio();

	return ret; 	
}
static void setGammaBacklight(unsigned int index)
{
    //int i;

    if(index >=ARRAY_OF(gamma_table))
	{
       index = ARRAY_OF(gamma_table) -1;
    }
	
	LCM_DEBUG("setGammaBacklight  index=%d ARRAY_OF(gamma_table)=%d\n", index,ARRAY_OF(gamma_table));
    //FA
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x001A);
	Write_com(0x00BF);
	Write_register((gamma_table[index].gammaValue[0]<<8)|0xFA);
	Write_register((gamma_table[index].gammaValue[2]<<8)|(gamma_table[index].gammaValue[1]));
	Write_register((gamma_table[index].gammaValue[4]<<8)|(gamma_table[index].gammaValue[3]));
	Write_register((gamma_table[index].gammaValue[6]<<8)|(gamma_table[index].gammaValue[5]));
	Write_register((gamma_table[index].gammaValue[8]<<8)|(gamma_table[index].gammaValue[7]));
	Write_register((gamma_table[index].gammaValue[10]<<8)|(gamma_table[index].gammaValue[9]));
	Write_register((gamma_table[index].gammaValue[12]<<8)|(gamma_table[index].gammaValue[11]));
	Write_register((gamma_table[index].gammaValue[14]<<8)|(gamma_table[index].gammaValue[13]));
	Write_register((gamma_table[index].gammaValue[16]<<8)|(gamma_table[index].gammaValue[15]));
	Write_register((gamma_table[index].gammaValue[18]<<8)|(gamma_table[index].gammaValue[17]));
	Write_register((gamma_table[index].gammaValue[20]<<8)|(gamma_table[index].gammaValue[19]));
	Write_register((gamma_table[index].gammaValue[22]<<8)|(gamma_table[index].gammaValue[21]));
	Write_register((gamma_table[index].gammaValue[24]<<8)|(gamma_table[index].gammaValue[23]));
}
static void config_gpio(void)
{
    LCM_DEBUG("[LCM_gionee: config_gpio. \n");

	const unsigned int USED_GPIOS[] = 
    {
        LSDI_GPIO_PIN,
        LSCE_GPIO_PIN,
        LSCK_GPIO_PIN,
        LSDA_GPIO_PIN,
    };

    unsigned int i;

    for (i = 0; i < ARY_SIZE(USED_GPIOS); ++i)
    {
#ifdef GN_MTK_BSP_LCD_SW_SPI    	
        lcm_util.set_gpio_mode(USED_GPIOS[i],GPIO_MODE_00);
#else
        lcm_util.set_gpio_mode(USED_GPIOS[i],GPIO_MODE_01);
#endif
        lcm_util.set_gpio_dir(USED_GPIOS[i], 1);              
        lcm_util.set_gpio_pull_enable(USED_GPIOS[i], 0);
    }
#ifdef GN_MTK_BSP_LCD_SW_SPI     	
    lcm_util.set_gpio_dir(LSDI_GPIO_PIN, 0);  
#endif    	
}
static unsigned int lcm_compare_id(void)
{
    unsigned int id_vol3 = 0xffffffff;

    dct_pmic_VGP2_enable(1);
    MDELAY(10);
	//SET_RESET_PIN(1);
    mt_set_gpio_mode(GPIO112,GPIO_MODE_00);
    mt_set_gpio_dir(GPIO112,GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO112,GPIO_OUT_ONE);
    MDELAY(5);
    //SET_RESET_PIN(0);
    mt_set_gpio_out(GPIO112,GPIO_OUT_ZERO);
    MDELAY(5);
    //SET_RESET_PIN(1);
    mt_set_gpio_out(GPIO112,GPIO_OUT_ONE);
    MDELAY(5);

    id_vol3 = GN_IMM_GetOneChannelValue(0, 20);
    LCM_DEBUG("trust_nt35596 lcm_compare_id(id_vol)= %d. \n", id_vol3);

  if((id_vol3>700) && (id_vol3<900)) //Trust id pin voltage is about 0.8v
  {
      return 1;
  }
  else
  {
      return 0;
  }

}
static void lcm_setbacklight(unsigned int level)   //back_light setting 
{

	int index;	
	
	index = level*(ARRAY_OF(gamma_table)-1)/255;

	if(g_last_Backlight_level == index)
	{
		return;
	}


	if(level == 0)
	{
	   
		//display off
		Write_com(0x00B7);
		Write_register(0x034B);
		Write_com(0x00B8);
		Write_register(0x0000);
		Write_com(0x00BC);
		Write_register(0x0001);
		Write_com(0x00BF);
		Write_register(0x0028);
	}
	else
	{    
		setGammaBacklight(index);
		setDynamicElvss(index);

		Write_com(0x00B7);
		Write_register(0x034B);
		Write_com(0x00B8);
		Write_register(0x0000);
		Write_com(0x00BC);
		Write_register(0x0002);
		Write_com(0x00BF);
		Write_register(0x03F7);

	  if(!g_last_Backlight_level)
		{
	   MDELAY(120);	//for lcm flash

       //0x29  display on
	   Write_com(0x00B7);
	   Write_register(0x034B);
	   Write_com(0x00B8);
	   Write_register(0x0000);
	   Write_com(0x00BC);
	   Write_register(0x0001);
	   Write_com(0x00BF);
	   Write_register(0x0029);
		}
    }
	g_last_Backlight_level=index;
    LCM_DEBUG("lcd-backlight  level=%d, index=%d\n", level,index);
}
static unsigned int lcm_compare_id(void)
{
	unsigned short id;
	Write_com(0x00b0);	  
	id=Read_register();
    LCM_DEBUG("lcm_compare_id id is: %x\n",id);
 
	return (SSD2825_ID == id)?1:0;

}
Beispiel #10
0
static void lcm_suspend(void)
{
	LCM_DEBUG("nt35516_2nd lcm_suspend begin-------\n");

	unsigned int data_array[16];
	data_array[0]=0x00280500;
	dsi_set_cmdq(&data_array,1,1);
	MDELAY(20);

	data_array[0]=0x00100500;
	dsi_set_cmdq(&data_array,1,1);
	MDELAY(120);

	SET_RESET_PIN(0);
	MDELAY(100);
	SET_GPIO_OUT(LCD_LDO2V8_GPIO_PIN , 0);

	LCM_DEBUG("nt35516_2nd lcm_suspend end----------\n");
}
static void lcm_resume(void)
{
    LCM_DEBUG("[LCM************]: lcm_resume. \n"); 
//#ifndef  MTK_CTA_SUPPORT   //gionee chenqiang add for
#if 0
    LCDSPI_InitCMD(0x11);
    MDELAY(20);
    LCDSPI_InitCMD(0x29);//Sleep in
    MDELAY(120);
#else
    init_lcm_registers();
#endif
}
static void lcm_init(void)
{
    LCM_DEBUG("[LCM************]: lcm_init. \n");

    SET_RESET_PIN(1);
    MDELAY(10);
    SET_RESET_PIN(0);
    MDELAY(10);
    SET_RESET_PIN(1);
    MDELAY(100);
    config_gpio();
    init_lcm_registers();
}
static unsigned int lcm_esd_check(void)
{
    unsigned int ret[3]={0};
    unsigned char buffer[3];
    unsigned int data_array[16];


    data_array[0] = 0x00013700;// read id return 1 byte
    dsi_set_cmdq(&data_array, 1, 1);

    read_reg_v2(0x05, buffer, 1);
    ret[0]= buffer[0];

    data_array[0] = 0x00013700;// read id return 1 byte
    dsi_set_cmdq(&data_array, 1, 1);

    read_reg_v2(0x0A, buffer, 1);
    ret[1]= buffer[0];

    data_array[0] = 0x00013700;// read id return 1 byte
    dsi_set_cmdq(&data_array, 1, 1);

    read_reg_v2(0x0E, buffer, 1);
    ret[2]= buffer[0];

    LCM_DEBUG("LCM REG 0x05,0x0A,0x0E is 0x%x,0x%x,0x%x\n",ret[0],ret[1],ret[2]);

    if(ret[0]!=0||ret[1]!=0x1c)
    {
        LCM_DEBUG("lCM esd\n");
        return 1;

    }
    else
        return 0;
}
 //this function only for test for the function have bug,do not call this 
void ssd2825_read_s6e8aa_reg(void)
{
	int id=0,i;
	int temp=0;

	//F0
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00BC);
	Write_register(0x0002);
	Write_com(0x00BF);
	Write_register(0x00B0);
	
	Write_com(0x00B7);
	Write_register(0x0782);
	
	Write_com(0x00C4);
	Write_register(0x0001);

	Write_com(0x00C1);
	Write_register(0x0004);
	
	Write_com(0x00BC);
	Write_register(0x0001);
	
	Write_com(0x00BF);
	Write_register(0x00FA);

	
	Write_com(0x00C6);
	temp=Read_register();
	while(!(temp&0x1))
	{
		Write_com(0x00C6);
		temp=Read_register();
	}
	Write_com(0x00FF);

	for(i=0;i<2;i++)
	{
	 id=Read_register();
     LCM_DEBUG("Read_register--data%d id is: %x\n",i,id);
   
	}

}
static void lcm_suspend(void)
{
    LCM_DEBUG("[LCM************]: lcm_suspend. \n"); 
//#ifndef  MTK_CTA_SUPPORT   //gionee chenqiang add for
#if 0
    LCDSPI_InitCMD(0x28);
    MDELAY(20);
    LCDSPI_InitCMD(0x10);//Sleep in
    MDELAY(120);
#else
    SET_RESET_PIN(1);
    MDELAY(10);
    SET_RESET_PIN(0);
    MDELAY(10);
    SET_RESET_PIN(1);
    MDELAY(120);
#endif
}
Beispiel #16
0
static void lcm_setbacklight (unsigned int level)
{
    int i;
    static int old_level = -1;

    LCM_DEBUG("%s backlight level: %d\n", __func__, level); // leibo


    if(level < 0 || level > 255)
        return -1;

    level = level / 12;  /* 0 <= level <= 20*/
    if(level > (ARRAY_OF(gamma_backlight)-1 ))
        level = ARRAY_OF(gamma_backlight) -1;

    if (old_level == level) { /* no need update */
        return;
    }

    if (level == 0) {
        Write_com(0x28);
    } else {
        /* disable gamma update. */
        Write_com(0xfa);
        Write_register(0x02);

        /* write gamma data setting. */
        for (i = 0 ; i < GAMMA_DATA_COUNT; i++) {
            Write_register(gamma_backlight[level][i]);
        }

        /* update gamma table. */
        Write_com(0xfa);
        Write_register(0x03);

        if(!old_level) {
            /*when send 0x11 since now,process scheduling speed time is 250ms,so it's not nedd MDELAY anymore*/
            //MDELAY(120);
            Write_com(0x29);
        }
    }

    old_level = level;
}
static void lcm_setbacklight(unsigned int level)
{
    unsigned int default_level = 52;
    unsigned int mapped_level = 0;
	
    if(level > 255) 
        mapped_level = 255;
    else if(level >= 5) 
      mapped_level= level;
    else
      mapped_level = 0;

    LCDSPI_InitCMD(0xB9); //B9h
    LCDSPI_InitDAT(0x01);
    LCDSPI_InitDAT(mapped_level);
    LCDSPI_InitDAT(0x00);       //gionee yanggy 2012-05-21 modify     //0x03=>0x00
    LCDSPI_InitDAT(0x08);
     
    LCM_DEBUG("[LCM_set_back_light]: =%d. \n",mapped_level);
}
static void config_gpio_for_read(void)
{
    LCM_DEBUG("[LCM_gionee: config_gpio_for read. \n");

	const unsigned int USED_GPIOS[] = 
    {
        LSDI_GPIO_PIN,
        LSCE_GPIO_PIN,
        LSCK_GPIO_PIN,
        LSDA_GPIO_PIN,
    };

    unsigned int i;

    for (i = 0; i < ARY_SIZE(USED_GPIOS); ++i)
    {   	
        lcm_util.set_gpio_mode(USED_GPIOS[i],GPIO_MODE_00);
        lcm_util.set_gpio_dir(USED_GPIOS[i], 1);
    }
   	
    lcm_util.set_gpio_dir(LSDI_GPIO_PIN, 0); 
    lcm_util.set_gpio_pull_enable(USED_GPIOS[i], 0);  	
}
static void lcm_suspend(void)
{

#ifdef BUILD_UBOOT
	g_resume_flag=1;
#endif
	Write_com(0x00b7); 
	Write_register(0x034B);  
	Write_com(0x00b8); 
	Write_register(0x0000);  
	Write_com(0x00bc); 
	Write_register(0x0000);  
	Write_com(0x0028); 
	MDELAY(10);
	Write_com(0x0010); 
	MDELAY(150);
	Write_com(0x00b7); 
	Write_register(0x0344);  
	Write_com(0x00b9);
	Write_register(0x0000); 
	LCM_DEBUG("lcm_suspend\n");
	MDELAY(120);
}
int lcd_f9_register_write(const char * buf)
{
    int n_idx;
    int max_nu=0;
    int max_np=0;
    int max_no=0;
    int num_n=0;
    int num_q=0;
    const char *p = buf ; 
    char qq[2];
    char num[25];
    while( (*p++ != '{' )&&( max_nu++ <= 200));    
    {
        if(max_nu>200)       
			return -1;
    }
    for(num_n=0;num_n<=24;num_n++)
	{       
		for(num_q=0;num_q<=1;num_q++)
		{
			max_np=0;
			while( (*(p) == 32)&&(max_np++ <= 20) )
			{
				p++;
				if(max_np>20)      
					return -1;
			}
			if( (*p>='0') && (*p <='9'))
				qq[num_q]=(*p++ -'0');
			else if( (*p>='A') && (*p <='F'))
				qq[num_q]=(*p++ -'A' + 10);
			else if( (*p>='a') && (*p <='f'))
				qq[num_q]=(*p++ -'a' + 10);
			else
			 	return -1;
		}
		num[num_n]=qq[0]*16 + qq[1];
	}
    while( (*p++!= '}' )&&( max_no++ <= 20));    
    {
        if(max_no>20)     
			return -1;
    }
	for(num_n =0;num_n<=24;num_n++)
	{
		LCM_DEBUG("register lcd_f9_register_write num[%d]=%d\n", num_n,num[num_n]);
	}
   //0xF7
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x0002);
	Write_com(0x00BF);
	Write_register(0x00F7);

    //FA
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x001A);
	Write_com(0x00BF);
	Write_register((num[0]<<8)|0xFA);
	Write_register((num[2]<<8)|(num[1]));
	Write_register((num[4]<<8)|(num[3]));
	Write_register((num[6]<<8)|(num[5]));
	Write_register((num[8]<<8)|(num[7]));
	Write_register((num[10]<<8)|(num[9]));
	Write_register((num[12]<<8)|(num[11]));
	Write_register((num[14]<<8)|(num[13]));
	Write_register((num[16]<<8)|(num[15]));
	Write_register((num[18]<<8)|(num[17]));
	Write_register((num[20]<<8)|(num[19]));
	Write_register((num[22]<<8)|(num[21]));
	Write_register((num[24]<<8)|(num[23]));
	
    //0xF7
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x0002);
	Write_com(0x00BF);
	Write_register(0x03F7);
		
	//0x29  display on
	Write_com(0x00B7);
	Write_register(0x034b);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x0001);
	Write_com(0x00BF);
	Write_register(0x0029);
    return 0;
}
static void lcm_setbacklight(unsigned int level)   //back_light setting 
{

    int index,div;
    div = 245*10/(ARRAY_OF(gamma_table)+1);
	index = level*10/div-2; 
	if(index>=ARRAY_OF(gamma_table))
	{
		index = ARRAY_OF(gamma_table) -1;
	}
	else if(index<0)
	{
		index = 0;
	}
    if(g_last_Backlight_level == index)
	{
        return;
    }
    g_last_Backlight_level = index;
    if(level == 0)
	{
		
        Write_com(0x00B7);
		Write_register(0x034b);
		Write_com(0x00B8);
		Write_register(0x0000);
		Write_com(0x00BC);
		Write_register(0x0001);
		Write_com(0x00BF);
		Write_register(0x0028);//display off
		
    }
	else
    {
    	//0xF7
		Write_com(0x00B7);
		Write_register(0x034B);
		Write_com(0x00B8);
		Write_register(0x0000);
		Write_com(0x00BC);
		Write_register(0x0002);
		Write_com(0x00BF);
		Write_register(0x00F7);
    
        setGammaBacklight(index);
        setDynamicElvss(index);

		//0xF7
		Write_com(0x00B7);
		Write_register(0x034B);
		Write_com(0x00B8);
		Write_register(0x0000);
		Write_com(0x00BC);
		Write_register(0x0002);
		Write_com(0x00BF);
		Write_register(0x03F7);

		MDELAY(120);
		 //0x29  display on
  		Write_com(0x00B7);
  		Write_register(0x034b);
		Write_com(0x00B8);
		Write_register(0x0000);
  		Write_com(0x00BC);
  		Write_register(0x0001);
  		Write_com(0x00BF);
  		Write_register(0x0029);
		
    }
    LCM_DEBUG("lcd-backlight  level=%d, index=%d\n", level,index);
}
static void lcm_set_util_funcs(const LCM_UTIL_FUNCS *util)
{
    memcpy(&lcm_util, util, sizeof(LCM_UTIL_FUNCS));
    LCM_DEBUG("[LCM************]: lcm_set_util_funcs. \n");
}
static void lcm_get_params(LCM_PARAMS *params)
{
    LCM_DEBUG("[LCM************]: lcm_get_params. \n");

    memset(params, 0, sizeof(LCM_PARAMS));
    params->type   = LCM_TYPE_DPI;
#ifdef GN_MTK_BSP_LCD_SW_SPI
    params->ctrl   = LCM_CTRL_GPIO;
#else
    params->ctrl   = LCM_CTRL_SERIAL_DBI;
#endif
    params->width  = FRAME_WIDTH;
    params->height = FRAME_HEIGHT;
    params->io_select_mode = 0;    


    params->dbi.port	= 0;
    params->dbi.data_width		   = LCM_DBI_DATA_WIDTH_8BITS; 
    params->dbi.cpu_write_bits		   = LCM_DBI_CPU_WRITE_8_BITS;
    params->dbi.io_driving_current	   = LCM_DRIVING_CURRENT_2MA;
   

    params->dbi.serial.css = 15;
    params->dbi.serial.csh = 15;	
    params->dbi.serial.rd_1st = 2;
    params->dbi.serial.rd_2nd = 2;
    params->dbi.serial.wr_1st = 15;
    params->dbi.serial.wr_2nd = 15;

   
    params->dbi.serial.sif_3wire 	= 1;
    params->dbi.serial.sif_sdi 	    = 1; //0
    params->dbi.serial.sif_sck_def 	= 1;
    params->dbi.serial.sif_1st_pol	= 0;
    params->dbi.serial.sif_div2 	= 1;//0;
#ifdef GN_MTK_BSP_LCD_SW_SPI
    params->dbi.serial.sif_hw_cs 	= 0;
#else
    params->dbi.serial.sif_hw_cs 	= 1;	
#endif

    /* RGB interface configurations */
    
    params->dpi.mipi_pll_clk_ref  = 0;
    params->dpi.mipi_pll_clk_div1 = 48;      //42;  add by chenqiang for CR00614711
    params->dpi.mipi_pll_clk_div2 = 10;
    params->dpi.dpi_clk_div       = 2;
    params->dpi.dpi_clk_duty      = 1;

    params->dpi.clk_pol           = LCM_POLARITY_RISING;
    params->dpi.de_pol            = LCM_POLARITY_FALLING;
    params->dpi.vsync_pol         = LCM_POLARITY_FALLING;
    params->dpi.hsync_pol         = LCM_POLARITY_FALLING;

    params->dpi.hsync_pulse_width = 10;
    params->dpi.hsync_back_porch  = 10;
    params->dpi.hsync_front_porch = 120;
    params->dpi.vsync_pulse_width =  2; 
    params->dpi.vsync_back_porch  = 14; 
    params->dpi.vsync_front_porch = 12;
    
    params->dpi.format            = LCM_DPI_FORMAT_RGB888;
    params->dpi.rgb_order         = LCM_COLOR_ORDER_RGB;
    params->dpi.is_serial_output  = 0;

    params->dpi.intermediat_buffer_num = 2;

    params->dpi.io_driving_current = LCM_DRIVING_CURRENT_4MA;
}
static void init_lcm_registers(void)
{
	LCM_DEBUG("[LCM************]: init_lcm_registers. \n");
	
    Write_com(0x00B1);
	Write_register(0x0102);
	Write_com(0x00B2);
	Write_register(0x040E); //VBP from 3 to 4 for solomon 
	Write_com(0x00B3);
	Write_register(0x0D40);
	Write_com(0x00B4);
	Write_register(0x02D0);
	Write_com(0x00B5);
	Write_register(0x0500);
	Write_com(0x00B6);
	Write_register(0x000B); //from Non-burst(0x0007)  to burst mode(0x000B)

	MDELAY(2);
	Write_com(0x00DE);
	Write_register(0x0003);
	Write_com(0x00D6);
	Write_register(0x0004);
	Write_com(0x00B9);
	Write_register(0x0000);

	Write_com(0x00BA);
	Write_register(0x801F);

	Write_com(0x00BB);
	Write_register(0x0009);
	Write_com(0x00B9);
	Write_register(0x0001);
	Write_com(0x00B8);
	Write_register(0x0000);

	//F0
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x0003);
	Write_com(0x00BF);
	Write_register(0x5AF0);
	Write_register(0x005A);
	//F1
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x0003);
	Write_com(0x00BF);
	Write_register(0x5AF1);
	Write_register(0x005A);

	//0x11
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x0001);
	Write_com(0x00BF);
	Write_register(0x0011);
    MDELAY(100);
	//F8
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x0027);
	Write_com(0x00BF);
	Write_register(0x2DF8);
	Write_register(0x0035);
	Write_register(0x0000);
	Write_register(0x0093);
	Write_register(0x7D3C);
	Write_register(0x2708);
	Write_register(0x3f7d);
	Write_register(0x0000);
	Write_register(0x2000);
	Write_register(0x0804);
	Write_register(0x006E);
	Write_register(0x0000);
	Write_register(0x0802);
	Write_register(0x2308);
	Write_register(0xC023);
	Write_register(0x08C8);
	Write_register(0xC148);
	Write_register(0xC100);
	Write_register(0xFFFF);
	Write_register(0x00C8);

	//F2
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x0004);
	Write_com(0x00BF);
	Write_register(0x80F2);
	Write_register(0x0D04);  //0x0D03 HD720 VBP
	
	//F6
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x0003);
	Write_com(0x00BF);
	Write_register(0x00F6);
	Write_register(0x0002);

	
	//B6
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x000A);
	Write_com(0x00BF);
	Write_register(0x0CB6);
	Write_register(0x0302);
	Write_register(0xFF32);
	Write_register(0x4444);
	Write_register(0x00C0);
	 
	//D9
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x000F);
	Write_com(0x00BF);
	Write_register(0x14D9);
	Write_register(0x0C40);
	Write_register(0xCECB);
	Write_register(0xC46E);
	Write_register(0x4007);
	Write_register(0xCB41);
	Write_register(0x6000);
	Write_register(0x0019);

	//E1
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x0006);
	Write_com(0x00BF);
	Write_register(0x10E1);
	Write_register(0x171C);
	Write_register(0x1D08);
	
	//E2
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x0007);
	Write_com(0x00BF);
	Write_register(0xEDE2);
	Write_register(0xC307);
	Write_register(0x0D13);
	Write_register(0x0003);

	//E3
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x0002);
	Write_com(0x00BF);
	Write_register(0x40E3);
	
	//E4
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x0008);
	Write_com(0x00BF);
	Write_register(0x00E4);
	Write_register(0x1400);
	Write_register(0x0080);
	Write_register(0x0000);
	
	//F4
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x0008);
	Write_com(0x00BF);
	Write_register(0xCFF4);
	Write_register(0x120A);
	Write_register(0x1E10);
	Write_register(0x0233);

	//0xF7
	/*Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00BC);
	Write_register(0x0002);
	Write_com(0x00BF);
	Write_register(0x00F7);*/

    setGammaBacklight(GAMMA_TABLE_MAX_INDEX);
    setDynamicElvss(GAMMA_TABLE_MAX_INDEX);

	//0xF7
	Write_com(0x00B7);
	Write_register(0x034B);
	Write_com(0x00B8);
	Write_register(0x0000);
	Write_com(0x00BC);
	Write_register(0x0002);
	Write_com(0x00BF);
	Write_register(0x03F7);
	
}
 static void init_lcm_registers(void)
 {
	 LCM_DEBUG("[LCM************]: init_lcm_registers. \n");
	 
	 Write_com(0x00B1);
	 Write_register(0x0102);
	 Write_com(0x00B2);
	 Write_register(0x040E); //0x030E , a white line displays on the top of the screen
	 Write_com(0x00B3);
	 Write_register(0x0D40); //0x2940
	 Write_com(0x00B4);
	 Write_register(0x02D0);
	 Write_com(0x00B5);
	 Write_register(0x0500);
	 Write_com(0x00B6);
	 Write_register(0x008B); //0x0007---0x008B	,CABC out of control
	 //MDELAY(2);
 
	 Write_com(0x00DE);
	 Write_register(0x0003);
	 Write_com(0x00D6);
	 Write_register(0x0004);
	 Write_com(0x00B9);
	 Write_register(0x0000);
 
	 Write_com(0x00BA);
	 Write_register(0x801F);
 
	 Write_com(0x00BB);
	 Write_register(0x0009);
	 Write_com(0x00B9);
	 Write_register(0x0001);
	 Write_com(0x00B8);
	 Write_register(0x0000);
 
	 //F0
	 Write_com(0x00B7);
	 Write_register(0x034B);
	 Write_com(0x00B8);
	 Write_register(0x0000);
	 Write_com(0x00BC);
	 Write_register(0x0003);
	 Write_com(0x00BF);
	 Write_register(0x5AF0);
	 Write_register(0x005A);
	 //F1
	 Write_com(0x00B7);
	 Write_register(0x034B);
	 Write_com(0x00B8);
	 Write_register(0x0000);
	 Write_com(0x00BC);
	 Write_register(0x0003);
	 Write_com(0x00BF);
	 Write_register(0x5AF1);
	 Write_register(0x005A);
 
	 //0x11
	 Write_com(0x00B7);
	 Write_register(0x034B);
	 Write_com(0x00B8);
	 Write_register(0x0000);
	 Write_com(0x00BC);
	 Write_register(0x0001);
	 Write_com(0x00BF);
	 Write_register(0x0011);
	 MDELAY(5);  //100
 
	 //F8
	 Write_com(0x00B7);
	 Write_register(0x034B);
	 Write_com(0x00B8);
	 Write_register(0x0000);
	 Write_com(0x00BC);
	 Write_register(0x0027);
	 Write_com(0x00BF);
	 Write_register(0x2DF8);
	 Write_register(0x0035);
	 Write_register(0x0000);
	 Write_register(0x0093);
	 Write_register(0x7D3C);
	 Write_register(0x2708);
	 Write_register(0x3f7d);
	 Write_register(0x0000);
	 Write_register(0x2000);
	 Write_register(0x0804);
	 Write_register(0x006E);
	 Write_register(0x0000);
	 Write_register(0x0802);
	 Write_register(0x2308);
	 Write_register(0xC023);
	 Write_register(0x08C8);
	 Write_register(0xC148);
	 Write_register(0xC100);
	 Write_register(0xFFFF);
	 Write_register(0x00C8);
 
	 //F2
	 Write_com(0x00B7);
	 Write_register(0x034B);
	 Write_com(0x00B8);
	 Write_register(0x0000);
	 Write_com(0x00BC);
	 Write_register(0x0004);
	 Write_com(0x00BF);
	 Write_register(0x80F2);
	 Write_register(0x0D04); //0x0D03, a white line displays on the top of the screen
	 
	 //F6
	 Write_com(0x00B7);
	 Write_register(0x034B);
	 Write_com(0x00B8);
	 Write_register(0x0000);
	 Write_com(0x00BC);
	 Write_register(0x0003);
	 Write_com(0x00BF);
	 Write_register(0x00F6);
	 Write_register(0x0002);
 
	 
	 //B6
	 Write_com(0x00B7);
	 Write_register(0x034B);
	 Write_com(0x00B8);
	 Write_register(0x0000);
	 Write_com(0x00BC);
	 Write_register(0x000A);
	 Write_com(0x00BF);
	 Write_register(0x0CB6);
	 Write_register(0x0302);
	 Write_register(0xFF32);
	 Write_register(0x4444);
	 Write_register(0x00C0);
	  
	 //D9
	 Write_com(0x00B7);
	 Write_register(0x034B);
	 Write_com(0x00B8);
	 Write_register(0x0000);
	 Write_com(0x00BC);
	 Write_register(0x000F);
	 Write_com(0x00BF);
	 Write_register(0x14D9);
	 Write_register(0x0C40);
	 Write_register(0xCECB);
	 Write_register(0xC46E);
	 Write_register(0x4007);
	 Write_register(0xCB41);
	 Write_register(0x6000);
	 Write_register(0x0019);
 
	 //E1
	 Write_com(0x00B7);
	 Write_register(0x034B);
	 Write_com(0x00B8);
	 Write_register(0x0000);
	 Write_com(0x00BC);
	 Write_register(0x0006);
	 Write_com(0x00BF);
	 Write_register(0x10E1);
	 Write_register(0x171C);
	 Write_register(0x1D08);
	 
	 //E2
	 Write_com(0x00B7);
	 Write_register(0x034B);
	 Write_com(0x00B8);
	 Write_register(0x0000);
	 Write_com(0x00BC);
	 Write_register(0x0007);
	 Write_com(0x00BF);
	 Write_register(0xEDE2);
	 Write_register(0xC307);
	 Write_register(0x0D13);
	 Write_register(0x0003);
 
	 //E3
	 Write_com(0x00B7);
	 Write_register(0x034B);
	 Write_com(0x00B8);
	 Write_register(0x0000);
	 Write_com(0x00BC);
	 Write_register(0x0002);
	 Write_com(0x00BF);
	 Write_register(0x40E3);
	 
	 //E4
	 Write_com(0x00B7);
	 Write_register(0x034B);
	 Write_com(0x00B8);
	 Write_register(0x0000);
	 Write_com(0x00BC);
	 Write_register(0x0008);
	 Write_com(0x00BF);
	 Write_register(0x00E4);
	 Write_register(0x1400);
	 Write_register(0x0080);
	 Write_register(0x0000);
	 
	 //F4
	 Write_com(0x00B7);
	 Write_register(0x034B);
	 Write_com(0x00B8);
	 Write_register(0x0000);
	 Write_com(0x00BC);
	 Write_register(0x0008);
	 Write_com(0x00BF);
	 Write_register(0xCFF4);
	 Write_register(0x120A);
	 Write_register(0x1E10);
	 Write_register(0x0233);
 }