예제 #1
0
static void  lcm_update_black(unsigned int x, unsigned int y,unsigned int width, unsigned int height, unsigned short data)
{
    unsigned int x0 = x;
    unsigned int y0 = y;
    unsigned int x1 = x0 + width;
    unsigned int y1 = y0 + height + 2;
    unsigned int k, i;

	send_ctrl_cmd(0x2A);
	send_data_cmd(HIGH_BYTE(x0));
	send_data_cmd(LOW_BYTE(x0));
	send_data_cmd(HIGH_BYTE(x1));
	send_data_cmd(LOW_BYTE(x1));

	send_ctrl_cmd(0x2B);
	send_data_cmd(HIGH_BYTE(y0));
	send_data_cmd(LOW_BYTE(y0));
	send_data_cmd(HIGH_BYTE(y1));
	send_data_cmd(LOW_BYTE(y1));
	send_ctrl_cmd(0x2C);

	for (i = x0; i < x1; i++)
	{
		for (k = y0; k < y1; k++)
		{
			send_data_cmd(data);
			send_data_cmd(data);
		}
	}
	
}
static unsigned int lcm_compare_id(void)
{

    unsigned int    id1 = 0;
    unsigned int    id2 = 0;
    unsigned int    id = 0;

    //unsigned char data[4];
    
//#ifdef BUILD_LK
    //unsigned int    lcm_idpin_value = 0;
   // lcm_idpin_value = lcm_check_idpin_adc(ADC_CHECK_COUNT);
//#endif
    config_gpio();//config gpio before use spi
    MDELAY(1);
    SET_RESET_PIN(1);
    MDELAY(10);
    SET_RESET_PIN(0);
    MDELAY(50);
    SET_RESET_PIN(1);
    MDELAY(120);

    send_ctrl_cmd(0xb0);
    //send_data_cmd(0x83);//bit7=7,sdo disable,sdo/sdi use the same pin
    send_data_cmd(0x03);//bit7=0,sdo en

    send_ctrl_cmd(0xfb);
    send_data_cmd(0x12);

    id1=spi_get_data(0xd3);

    send_ctrl_cmd(0xfb);
    send_data_cmd(0x13);
    id2=spi_get_data(0xd3);

    id = (id1<<8)|id2;//ic id
    
#ifdef BUILD_LK
    printf("by35hh_lcd_id=0x%x \r\n",id);
    //printf("by35hp_lcd_id data=0x%x,0x%x,0x%x,0x%x \r\n",data[0],data[1],data[2],data[3]);
#else
    printk("by35hh_lcd_id=0x%x\r\n",id);
#endif


//#ifdef BUILD_LK
   // if(/*(LCM_ID == id) || */( lcm_idpin_value >= 190))//id pin voltage is about 2.0v
//#else       
    if(LCM_ID == id)
//#endif
    {
        return 1;
    }
    else
    {
        return 0;
    }
    //return (LCM_ID == id)?1:0;

}
예제 #3
0
static void lcm_resume(void)
{
	#if 1
	send_ctrl_cmd(0x1100);
	MDELAY(120);	
	send_ctrl_cmd(0x2900);
	MDELAY(50);
	#else
	unsigned int lcd_id = 0;
	
	SET_RESET_PIN(1);
	MDELAY(5);
    SET_RESET_PIN(0);
    MDELAY(50);  
    SET_RESET_PIN(1);
    MDELAY(100);  // 400

	send_ctrl_cmd(0xB9); 
	send_data_cmd(0xFF); 
	send_data_cmd(0x83); 
	send_data_cmd(0x63); 
	UDELAY(10);
	
	lcd_id = get_lcd_id_n(LCM_ID_REG, 2) & 0xFF;
	LCD_PRINT(LCM_NAME"lcm_resume: lcd_id = 0x%x\n", lcd_id);

    init_lcm_registers();
	#endif
}
예제 #4
0
static unsigned int lcm_compare_id(void)
{	
	unsigned int lcd_id = 0;

	SET_RESET_PIN(1);
	MDELAY(5);
    SET_RESET_PIN(0);
    MDELAY(50);  
    SET_RESET_PIN(1);
    MDELAY(120);

	send_ctrl_cmd(0xF000);send_data_cmd(0x55);
	send_ctrl_cmd(0xF001);send_data_cmd(0xAA);
	send_ctrl_cmd(0xF002);send_data_cmd(0x52);
	send_ctrl_cmd(0xF003);send_data_cmd(0x08);
	send_ctrl_cmd(0xF004);send_data_cmd(0x01);
	UDELAY(10);

	lcd_id = get_lcd_id_r(LCM_ID_REG) & 0xFF;
	lcd_id = (lcd_id << 8) | (get_lcd_id_r(LCM_ID_REG + 1) & 0xFF);

	LCD_PRINT(LCM_NAME"lcm_compare_id: lcd_id = 0x%x\n", lcd_id);

		
    return (LCM_ID == lcd_id)?1:0;
}
static void lcm_resume(void)
{
	#if 1
	send_ctrl_cmd(0x11);
	MDELAY(120);
	send_ctrl_cmd(0x29);
	MDELAY(50);
	#else
	unsigned int lcd_id = 0;
	
	SET_RESET_PIN(1);
	MDELAY(5);
    SET_RESET_PIN(0);
    MDELAY(20);  
    SET_RESET_PIN(1);
    MDELAY(20);  // 400

	send_ctrl_cmd(0xB9);
	send_data_cmd(0xFF);
	send_data_cmd(0x83);
	send_data_cmd(0x57);

	UDELAY(10);

	lcd_id = get_lcd_id_n(LCMID_REG, 2);
	LCD_PRINT("[JINCHI35_HX8357C]lcm_resume: lcd_id = 0x%x\n", lcd_id);

#if 0//ndef BUILD_UBOOT
	print_lcm_registers();
#endif

	init_lcm_registers();	
	#endif
}
예제 #6
0
static void  lcm_update_black(unsigned int x, unsigned int y,unsigned int width, unsigned int height, unsigned short data)
{
    unsigned int x0 = x;
    unsigned int y0 = y;
    unsigned int x1 = x0 + width;
    unsigned int y1 = y0 + height + 2;
    unsigned int k, i;

	set_lcm_register(0x2A00, HIGH_BYTE(x0),  0);
	set_lcm_register(0x2A01, LOW_BYTE(x0),  0);
	set_lcm_register(0x2A02, HIGH_BYTE(x1),  0);
	set_lcm_register(0x2A03, LOW_BYTE(x1),  0);
	set_lcm_register(0x2B00, HIGH_BYTE(y0),  0);
	set_lcm_register(0x2B01, LOW_BYTE(y0),  0);
	set_lcm_register(0x2B02, HIGH_BYTE(y1),  0);  
	set_lcm_register(0x2B03, LOW_BYTE(y1),  0);

	send_ctrl_cmd(0x2C00);

	for (i = x0; i < x1; i++)
	{
		for (k = y0; k < y1; k++)
		{
			send_data_cmd(data);
			send_data_cmd(data);
		}
	}
	
}
예제 #7
0
static void lcm_resume(void)
{
	#if 1
	send_ctrl_cmd(0x1100);
	MDELAY(120);	
	send_ctrl_cmd(0x2900);
	MDELAY(50);
	#else
	unsigned int lcd_id = 0;
	
	SET_RESET_PIN(1);
	MDELAY(5);
    SET_RESET_PIN(0);
    MDELAY(50);  
    SET_RESET_PIN(1);
    MDELAY(100);  // 400

	send_ctrl_cmd(0xF000);send_data_cmd(0x55);
	send_ctrl_cmd(0xF001);send_data_cmd(0xAA);
	send_ctrl_cmd(0xF002);send_data_cmd(0x52);
	send_ctrl_cmd(0xF003);send_data_cmd(0x08);
	send_ctrl_cmd(0xF004);send_data_cmd(0x01);
	UDELAY(10);
	
	lcd_id = get_lcd_id_r(LCM_ID_REG) & 0xFF;
	lcd_id = (lcd_id << 8) | (get_lcd_id_r(LCM_ID_REG + 1) & 0xFF);

	LCD_PRINT(LCM_NAME"lcm_resume: lcd_id = 0x%x\n", lcd_id);

    init_lcm_registers();
	#endif
}
static unsigned int lcm_compare_id(void)
{	
	 unsigned int id = 0,ID_PIN =2;
    send_ctrl_cmd(0xB9);  // SET password
	send_data_cmd(0xFF);  
	send_data_cmd(0x83);  
	send_data_cmd(0x69);
    send_ctrl_cmd(0xC3);
	send_data_cmd(0xFF);

	send_ctrl_cmd(0xF4);
	read_data_cmd();
	id = read_data_cmd();
#if defined(BUILD_LK)
	printf("xxxxx MYCAT hx8369_p908 READ ID = 0x%x\n", id);
#else
	printk("xxxxx MYCAT hx8369_p908 READ ID = 0x%x\n", id);
#endif
	mt_set_gpio_mode(GPIO_LCD_ID_PIN,0);
	mt_set_gpio_dir(GPIO_LCD_ID_PIN,0);
	mt_set_gpio_pull_enable(GPIO_LCD_ID_PIN,1);
	mt_set_gpio_pull_select(GPIO_LCD_ID_PIN,1);
	MDELAY(1);
	
	ID_PIN=mt_get_gpio_in(GPIO_LCD_ID_PIN);
#if defined(BUILD_LK)
	printf("xxxxx MYCAT ID_PIN = 0x%x\n", ID_PIN);
#else
	printk("xxxxx MYCAT ID_PIN = 0x%x\n", ID_PIN);
#endif
//    return ((LCM_ID == id)&&(ID_PIN==0))?1:0;
    return (LCM_ID == id)?1:0;
}
static void lcm_init(void)
{
	//unsigned int lcd_id = 0;
	
	SET_RESET_PIN(1);
	MDELAY(10);
	SET_RESET_PIN(0);
	MDELAY(100);
	SET_RESET_PIN(1);

    // Advises that should hold high level for about 120 ms as for HX... series lcd ic
    MDELAY(120);
	//MDELAY(50);

	//lcd_id = get_lcd_id_n(LCMID_REG, 2);
	//LCD_PRINT("[XXD35_ILI9486L]lcm_init: lcd_id = 0x%x\n", lcd_id);

	init_lcm_registers();
	lcm_update_black(0, 0, FRAME_WIDTH, FRAME_HEIGHT, 0x00);

    #if 0
    //Set TE register
	send_ctrl_cmd(0x35);
	send_data_cmd(0x00);

    send_ctrl_cmd(0X0044);  // Set TE signal delay scanline
    send_data_cmd(0X0000);  // Set as 0-th scanline
    send_data_cmd(0X0000);
	//sw_clear_panel(0);
    #endif
}
예제 #10
0
static unsigned int lcm_compare_id(void)
{

    unsigned int    id1 = 0;
    unsigned int    id2 = 0;
    unsigned int    id = 0;
#ifdef BUILD_LK
    unsigned int    lcm_idpin_value = 0;
    lcm_idpin_value = lcm_check_idpin_adc(ADC_CHECK_COUNT);
#endif
    config_gpio();
    SET_RESET_PIN(1);
    MDELAY(1);
    SET_RESET_PIN(0);
    MDELAY(20);
    SET_RESET_PIN(1);
    MDELAY(120);

    //send_ctrl_cmd(0xb0);

    send_ctrl_cmd(0xb0);
    //send_data_cmd(0x83);//bit7=7,sdo disable,sdo/sdi use the same pin
    send_data_cmd(0x03);//bit7=0,sdo en

    send_ctrl_cmd(0xfb);
    send_data_cmd(0x12);
#if 0
    id=spi_get_data(0xdb);//vendor id
#else
    id1=spi_get_data(0xd3);

    send_ctrl_cmd(0xfb);
    send_data_cmd(0x13);
    id2=spi_get_data(0xd3);

    id = (id1<<8)|id2;//ic id
#endif
#ifdef BUILD_LK
    printf("TXD9487_lcd_id1=0x%x,lcd_id2=0x%x,lcd_id=0x%x  \r\n",id1,id2,id);
#else
    printk("TXD9487_lcd_id1=0x%x,lcd_id2=0x%x,lcd_id=0x%x  \r\n",id1,id2,id);
#endif


#ifdef BUILD_LK
    if(/*(LCM_ID == id) || */( lcm_idpin_value > 140) && ( lcm_idpin_value <190))//id pin voltage is about 1.5v
#else       
    if(LCM_ID == id)
#endif
    {
        return 1;
    }
    else
    {
        return 0;
    }
    //return (LCM_ID == id)?1:0;

}
static unsigned int lcm_compare_id(void)
{

    unsigned int    id = 0;

    //unsigned char data[4];
    
//#ifdef BUILD_LK
   // unsigned int    lcm_idpin_value = 0;
   // lcm_idpin_value = lcm_check_idpin_adc(ADC_CHECK_COUNT);
//#endif
    config_gpio();//config gpio before use spi
    MDELAY(1);
    SET_RESET_PIN(1);
    MDELAY(10);
    SET_RESET_PIN(0);
    MDELAY(50);
    SET_RESET_PIN(1);
    MDELAY(120);

    send_ctrl_cmd(0xB9); //EXTC
    send_data_cmd(0xFF); //EXTC
    send_data_cmd(0x83); //EXTC
    send_data_cmd(0x57); //EXTC
    MDELAY(15);

    send_ctrl_cmd(0xB3);
    send_data_cmd(0xC3);	
    //for himax8357C
    send_ctrl_cmd(0xFE);
    send_data_cmd(0xD0);
    MDELAY(20);
    id=spi_get_data(0xff);
    //id=spi_get_bytes(0xff,data);
    
#ifdef BUILD_LK
    printf("by35hp_lcd_id=0x%x \r\n",id);
    //printf("by35hp_lcd_id data=0x%x,0x%x,0x%x,0x%x \r\n",data[0],data[1],data[2],data[3]);
#else
    printk("by35hp_lcd_id=0x%x\r\n",id);
#endif


//#ifdef BUILD_LK
    //if(/*(LCM_ID == id) || */( lcm_idpin_value >= 190))//id pin voltage is about 2.0v
//#else       
    if(LCM_ID == id)
//#endif
    {
        return 1;
    }
    else
    {
        return 0;
    }
    //return (LCM_ID == id)?1:0;

}
static void lcm_set_pwm(unsigned int divider)
{
#if 0
 send_ctrl_cmd(0xBE);
 send_data_cmd(0xFF);

 send_ctrl_cmd(0xBF);
 send_data_cmd(0x07);
#endif
}
static unsigned int lcm_compare_id(void)
{

    unsigned int    id = 0;

    //unsigned char data[4];
    
#ifdef BUILD_LK
    unsigned int    lcm_idpin_value = 0;
    lcm_idpin_value = lcm_check_idpin_adc(ADC_CHECK_COUNT);
#endif
    SET_RESET_PIN(1);
    MDELAY(10);
    SET_RESET_PIN(0);
    MDELAY(50);
    SET_RESET_PIN(1);
    MDELAY(120);

    send_ctrl_cmd(0xB9); //EXTC
    send_data_cmd(0xFF); //EXTC
    send_data_cmd(0x83); //EXTC
    send_data_cmd(0x57); //EXTC
    MDELAY(15);

    send_ctrl_cmd(0xB3);
    send_data_cmd(0xC3);	
    //for himax8357C
    send_ctrl_cmd(0xFE);
    send_data_cmd(0xD0);
    MDELAY(20);
    id=spi_get_data(0xff);
    //id=spi_get_bytes(0xff,data);
    
#ifdef BUILD_LK
    printf("jmo4861_lcd_id=0x%x \r\n",id);
    //printf("jmo4861_lcd_id data=0x%x,0x%x,0x%x,0x%x \r\n",data[0],data[1],data[2],data[3]);
#else
    printk("jmo4861_lcd_id=0x%x\r\n",id);
#endif

#ifdef BUILD_LK
    if(/*(LCM_ID == id) || */( lcm_idpin_value > 140) && ( lcm_idpin_value <190))//id pin voltage is about 1.5v
#else       
    if(LCM_ID == id)
#endif
    {
        return 1;
    }
    else
    {
        return 0;
    }
    //return (LCM_ID == id)?1:0;

}
static void lcm_setbacklight(unsigned int level)
{
	if(level > 255) level = 255;
#if 0
	send_ctrl_cmd(0x51);
	send_data_cmd(level);
#else
    send_ctrl_cmd(0xBE);
    send_data_cmd(0x0F);
#endif
}
예제 #15
0
static unsigned int lcm_compare_id(void)
{	
    send_ctrl_cmd(0xB9);  // SET password
	send_data_cmd(0xFF);  
	send_data_cmd(0x83);  
	send_data_cmd(0x69);
    send_ctrl_cmd(0xC3);
	send_data_cmd(0xFF);

	send_ctrl_cmd(0xF4);
	read_data_cmd();
    return (LCM_ID == read_data_cmd())?1:0;
}
예제 #16
0
static void lcm_update(unsigned int x, unsigned int y, unsigned int width, unsigned int height)
{
	unsigned short x0, y0, x1, y1;
	unsigned short h_X_start, l_X_start, h_X_end, l_X_end, h_Y_start, l_Y_start, h_Y_end, l_Y_end;

	x0 = (unsigned short)x;
	y0 = (unsigned short)y;
	x1 = (unsigned short)x + width - 1;
	y1 = (unsigned short)y + height - 1;

	h_X_start = (x0 & 0xFF00) >> 8;
	l_X_start = x0 & 0x00FF;
	h_X_end = (x1 & 0xFF00) >> 8;
	l_X_end = x1 & 0x00FF;

	h_Y_start = (y0 & 0xFF00) >> 8;
	l_Y_start = y0 & 0x00FF;
	h_Y_end = (y1 & 0xFF00) >> 8;
	l_Y_end = y1 & 0x00FF;

	send_ctrl_cmd(0x2A);
	send_data_cmd(h_X_start);
	send_data_cmd(l_X_start);
	send_data_cmd(h_X_end);
	send_data_cmd(l_X_end);

	send_ctrl_cmd(0x2B);
	send_data_cmd(h_Y_start);
	send_data_cmd(l_Y_start);
	send_data_cmd(h_Y_end);
	send_data_cmd(l_Y_end);

	send_ctrl_cmd(0x2C);
}
예제 #17
0
static void sw_clear_panel(unsigned int color)
{
    unsigned int x0 = 0;
    unsigned int y0 = 0;
    unsigned int x1 = x0 + FRAME_WIDTH - 1;
    unsigned int y1 = y0 + FRAME_HEIGHT - 1;

    unsigned int x, y;

    send_ctrl_cmd(0x2A); 
    send_data_cmd(HIGH_BYTE(x0));
  	send_data_cmd(LOW_BYTE(x0));
    send_data_cmd(HIGH_BYTE(x1));
  	send_data_cmd(LOW_BYTE(x1));

  	send_ctrl_cmd(0x2B); 
    send_data_cmd(HIGH_BYTE(y0));
  	send_data_cmd(LOW_BYTE(y0));
    send_data_cmd(HIGH_BYTE(y1));
  	send_data_cmd(LOW_BYTE(y1));

	send_ctrl_cmd(0x2C);    // send DDRAM set

    // 18-bit mode (256K color) coding
    for (y = y0; y <= y1; ++ y) {
        for (x = x0; x <= x1; ++ x) {
            lcm_util.send_data(color);
        }
    }
}
예제 #18
0
static void lcm_resume(void)
{
#if 1
    // truely's patch for BT UART noise issue
    send_ctrl_cmd(0xD0);
    send_data_cmd(0x07);
    send_data_cmd(0x42);
    send_data_cmd(0x1D);
	MDELAY(200);
#endif

	send_ctrl_cmd(0x11);
	MDELAY(120);
	send_ctrl_cmd(0x29);
	MDELAY(100);            // wait for LCM is stable to show
}
예제 #19
0
static void lcm_setbacklight(unsigned int level)
{
   if(level > 255) level = 255;

   send_ctrl_cmd(0x51);
   send_data_cmd(level);	
}
예제 #20
0
static void lcm_suspend(void)
{
	send_ctrl_cmd(0x28);

#if 1
    // truely's patch for BT UART noise issue
    send_ctrl_cmd(0xD0);
    send_data_cmd(0x05);
    send_data_cmd(0x47);
    send_data_cmd(0x1D);
	MDELAY(200);
#endif

	send_ctrl_cmd(0x10);
	MDELAY(10);
}
예제 #21
0
void lcm_read_fb(unsigned char *buffer)
{	  
    int i =0;
    short  x0, y0, x1, y1;
    short  h_X_start,l_X_start,h_X_end,l_X_end,h_Y_start,l_Y_start,h_Y_end,l_Y_end;
    unsigned int readData;
    
    x0 = 0;
    y0 = 0;
    x1 = FRAME_WIDTH-1;
    y1 = FRAME_HEIGHT-1;
    
    h_X_start=((x0&0x0300)>>8);
    l_X_start=(x0&0x00FF);
    h_X_end=((x1&0x0300)>>8);
    l_X_end=(x1&0x00FF);
    
    h_Y_start=((y0&0x0300)>>8);
    l_Y_start=(y0&0x00FF);
    h_Y_end=((y1&0x0300)>>8);
    l_Y_end=(y1&0x00FF);
    
    send_ctrl_cmd( 0x2A00 );
    send_data_cmd( h_X_start);
    send_ctrl_cmd( 0x2A01 );
    send_data_cmd( l_X_start);
    send_ctrl_cmd( 0x2A02);
    send_data_cmd( h_X_end );
    send_ctrl_cmd( 0x2A03);
    send_data_cmd( l_X_end );
    send_ctrl_cmd( 0x2B00 );
    send_data_cmd( h_Y_start);
    send_ctrl_cmd( 0x2B01 );
    send_data_cmd( l_Y_start);
    send_ctrl_cmd( 0x2B02);
    send_data_cmd( h_Y_end );
    send_ctrl_cmd( 0x2B03);
    send_data_cmd( l_Y_end );    
    send_ctrl_cmd( 0x2E00 );
    
    MDELAY(20);
    
    //Dummy Read
    readData = read_data_cmd();
    
    for(i=0; i<60; i+=3)
    {
      readData = read_data_cmd();      
      LCM_PRINT("Read data: 0x%08x \n", readData);
      MDELAY(20);
      
      buffer[i]  =(readData&0x00FF0000)>>16;   //R
      buffer[i+1]=(readData&0x0000FF00)>>8;    //G
      buffer[i+2]=(readData&0x000000FF);       //B
    }
}
예제 #22
0
static void lcm_init(void)
{
	SET_RESET_PIN(0);
	MDELAY(25);
	SET_RESET_PIN(1);
	MDELAY(50);
	init_lcm_registers();

    //Set TE register
	send_ctrl_cmd(0x35);
	send_data_cmd(0x00);

    send_ctrl_cmd(0X0044);  // Set TE signal delay scanline
    send_data_cmd(0X0000);  // Set as 0-th scanline
    send_data_cmd(0X0000);
	//sw_clear_panel(0);
}
예제 #23
0
static __inline void set_lcm_register(unsigned int regIndex, unsigned int regData, unsigned int uiDelay)
{
	send_ctrl_cmd(regIndex);
    send_data_cmd(regData);

	if (uiDelay > 0)
		MDELAY(uiDelay);
}
static __inline void set_lcm_register(unsigned int regIndex,
                                      unsigned int regData)
{
  LCM_PRINT_FUNC();    

    send_ctrl_cmd(regIndex);
    send_data_cmd(regData);
}
static void init_lcm_registers(void)
{
    send_ctrl_cmd(0x29);
    send_ctrl_cmd(0x11);
    MDELAY(120);
    send_ctrl_cmd(0x36);
    send_data_cmd(0x00); // 0x1010     
    MDELAY(4);
    send_ctrl_cmd(0x3A);    
    send_data_cmd(0x70); // 0x1C1E 123e
    MDELAY(4);
    send_ctrl_cmd(0xB0);    
    send_data_cmd(0x00); // 0x0C0E    
    MDELAY(4);
    send_ctrl_cmd(0xB8);    
    send_data_cmd(0x00); // 0x0280
    //send_data_cmd(0x01); // 0x0280
    MDELAY(4);
    send_ctrl_cmd(0xB9);    
    send_data_cmd(0x01); // 0x03C0     
    send_data_cmd(0xFF); // 0x03C0     
    MDELAY(4);
    send_ctrl_cmd(0xB0);    
    send_data_cmd(0x03); // 0x0C0E
    MDELAY(4);
}
예제 #26
0
static void lcm_init(void)
{
    SET_RESET_PIN(0);
    MDELAY(40);
    SET_RESET_PIN(1);
    MDELAY(100);

    init_lcm_registers();

    send_ctrl_cmd(0X0035);  // Enable Tearing Control Signal
    send_data_cmd(0X0001);  // Set as mode 1

    send_ctrl_cmd(0X0044);  // Set TE signal delay scanline
    send_data_cmd(0X0000);  // Set as 0-th scanline
    send_data_cmd(0X0000);

    sw_clear_panel(0x0);    // Clean panel as black
}
static unsigned int lcm_compare_id(void)
{	
	 unsigned int id = 0,ID_PIN =2;

#ifdef BUILD_LK
			pmic_config_interface(0x0532,5,0x7,5);//add by libo for VGP2 POWER ON
			pmic_config_interface(0x050C,1,0x1,15);
#else
			//hwPowerOn(MT6323_POWER_LDO_VGP2,VOL_2800,"LCM");
#endif
			MDELAY(100);
	
		SET_RESET_PIN(1);
		MDELAY(20);
		SET_RESET_PIN(0);
		MDELAY(50);
		SET_RESET_PIN(1);
		MDELAY(120);
	 
    send_ctrl_cmd(0xB9);  // SET password
	send_data_cmd(0xFF);  
	send_data_cmd(0x83);  
	send_data_cmd(0x69);
    send_ctrl_cmd(0xC3);
	send_data_cmd(0xFF);

	send_ctrl_cmd(0xF4);
	read_data_cmd();
	id = read_data_cmd();
#if defined(BUILD_LK)
	printf("xxxxx MYCAT hx8369_p908 READ ID = 0x%x\n", id);
#endif
	mt_set_gpio_mode(GPIO_LCD_ID_PIN,0);
	mt_set_gpio_dir(GPIO_LCD_ID_PIN,0);
	mt_set_gpio_pull_enable(GPIO_LCD_ID_PIN,1);
	mt_set_gpio_pull_select(GPIO_LCD_ID_PIN,1);
	MDELAY(1);
	
	ID_PIN=mt_get_gpio_in(GPIO_LCD_ID_PIN);
#if defined(BUILD_LK)
	printf("xxxxx MYCAT ID_PIN = 0x%x\n", ID_PIN);
#endif
    return ((LCM_ID == id)&&(ID_PIN==1))?1:0;
}
예제 #28
0
static void lcm_setpwm(unsigned int divider)
{
    send_ctrl_cmd(0xC9);

    send_data_cmd(0x3E);
	send_data_cmd(0x00);
    send_data_cmd(0x00);
	send_data_cmd(0x01);
	send_data_cmd(0x0F | (divider<<4));   
//	send_data_cmd(0x2F); 
	send_data_cmd(0x02);
	send_data_cmd(0x1E);   
	send_data_cmd(0x1E);
	send_data_cmd(0x00);
}
예제 #29
0
static void sw_clear_panel(unsigned int color)
{
    short  x0, y0, x1, y1, x, y;
	short   h_X_start,l_X_start,h_X_end,l_X_end,h_Y_start,l_Y_start,h_Y_end,l_Y_end;

		
    x0 = (short)0;
    y0 = (short)0;
    x1 = (short)FRAME_WIDTH-1;
    y1 = (short)FRAME_HEIGHT-1;

	h_X_start=((x0&0x0300)>>8);
	l_X_start=(x0&0x00FF);
	h_X_end=((x1&0x0300)>>8);
	l_X_end=(x1&0x00FF);

	h_Y_start=((y0&0x0300)>>8);
	l_Y_start=(y0&0x00FF);
	h_Y_end=((y1&0x0300)>>8);
	l_Y_end=(y1&0x00FF);

    send_ctrl_cmd( 0x2A00 );
    send_data_cmd( h_X_start);
    send_ctrl_cmd( 0x2A01 );
    send_data_cmd( l_X_start);
    send_ctrl_cmd( 0x2A02);
    send_data_cmd( h_X_end );
    send_ctrl_cmd( 0x2A03);
    send_data_cmd( l_X_end );
	send_ctrl_cmd( 0x2B00 );
    send_data_cmd( h_Y_start);
    send_ctrl_cmd( 0x2B01 );
    send_data_cmd( l_Y_start);
    send_ctrl_cmd( 0x2B02);
    send_data_cmd( h_Y_end );
    send_ctrl_cmd( 0x2B03);
    send_data_cmd( l_Y_end );
	send_ctrl_cmd(0x3601);  //enable HSM mode
	send_data_cmd(0x01);
    send_ctrl_cmd( 0x2C00 );

    // 18-bit mode (256K color) coding
    for (y = y0; y <= y1; ++ y) {
        for (x = x0; x <= x1; ++ x) {
            lcm_util.send_data(color);
        }
    }
}
예제 #30
0
static void lcm_setbacklight(unsigned int level)
{
	LCM_PRINT("lcm_setbacklight = %d\n", level);

	if (level > 255)
		level = 255;

	send_ctrl_cmd(0x51);
	send_data_cmd(level);
}