Пример #1
0
static int __init lcdc_panel_probe(struct platform_device *pdev)
{
	struct msm_panel_info *pinfo;
	int ret;
	
	if(pdev->id == 0) {
		lcdc_himax_pdata = pdev->dev.platform_data;
		lcdc_himax_pdata->panel_config_gpio(1);
		spi_init();	
		gpio_lcd_emuspi_read_one_para(0x00,&gpio_ic_himax);
		printk(KERN_INFO "lcd panel ic number :gpio_ic_himax %d,gpio_ic_lead %d!\n",gpio_ic_himax,gpio_ic_lead);
		
			/* use the gpio to identify which ic is used */
			///ZTE_LCD_LUYA_20100221_001,ZTE_LCD_LUYA_20100221_001,ZTE_LCD_LUYA_20091226_001, if nopanel,register himax
		 if(gpio_ic_himax != 0x47){
				printk("Fail to register this himax driver!~\n");
				lcdc_himax_regist = 0;
				return -ENODEV;
		}
		 else{
		 		 LcdPanleID=(u32)LCD_PANEL_P726_HX8347D;   //ZTE_LCD_LHT_20100611_001
				 pinfo = &lcdc_himax_panel_data.panel_info;
				 pinfo->xres = 240;
				 pinfo->yres = 320;
				 pinfo->type = LCDC_PANEL;
				 pinfo->pdest = DISPLAY_1;
				 pinfo->wait_cycle = 0;
				 pinfo->bpp = 18;
				 pinfo->fb_num = 2;
			 /*  pinfo->clk_rate = 8192000; */
				 pinfo->clk_rate = 6144000;
				 
		 
				 pinfo->lcdc.h_back_porch = 4;
				 pinfo->lcdc.h_front_porch = 4;
				 pinfo->lcdc.h_pulse_width = 4;
				 pinfo->lcdc.v_back_porch = 3;
				 pinfo->lcdc.v_front_porch = 3;
				 pinfo->lcdc.v_pulse_width = 1;
				 pinfo->lcdc.border_clr = 0; /* blk */
				 pinfo->lcdc.underflow_clr = 0xff;	 /* blue */
				 pinfo->lcdc.hsync_skew = 0;

				ret = platform_device_register(&this_device);	
				return 0;
		 	}
	}
	msm_fb_add_device(pdev);

	return 0;
}
Пример #2
0
static void lcdc_himax_n_init(void)
{
unsigned int id;
	gpio_direction_output(himax_reset, 1);
	msleep(5);
	gpio_direction_output(himax_reset, 0);
	msleep(10);
	gpio_direction_output(himax_reset, 1);
	msleep(20);

	gpio_direction_output(spi_cs, 1);
	gpio_direction_output(spi_sdo, 1);
	gpio_direction_output(spi_sclk, 1);
	msleep(20);
	//**********************Start initial squence******************
	gpio_lcd_emuspi_read_one_para(0x00,&id);
      //Start initial Sequence
       	msleep(10); 
	// Function setting
        gpio_lcd_emuspi_write_one_para(0xE2,0x15); 
        gpio_lcd_emuspi_write_one_para(0xE5,0x18);
        gpio_lcd_emuspi_write_one_para(0xE7,0x18);
        gpio_lcd_emuspi_write_one_para(0xE8,0x64);
        gpio_lcd_emuspi_write_one_para(0xEC,0x08);
        gpio_lcd_emuspi_write_one_para(0xED,0x47);
        gpio_lcd_emuspi_write_one_para(0xEE,0x20);
		gpio_lcd_emuspi_write_one_para(0xEF,0x50);
        // Power on Setting
        
        gpio_lcd_emuspi_write_one_para(0x23,0x83);
        gpio_lcd_emuspi_write_one_para(0x24,0x79);
        gpio_lcd_emuspi_write_one_para(0x25,0x4F);
        gpio_lcd_emuspi_write_one_para(0x29,0x00);
        gpio_lcd_emuspi_write_one_para(0x2B,0x03);
        gpio_lcd_emuspi_write_one_para(0x1B,0x1E);
        
        // Power on sequence
		
        gpio_lcd_emuspi_write_one_para(0x01,0x00);
        gpio_lcd_emuspi_write_one_para(0x1C,0x03);
        gpio_lcd_emuspi_write_one_para(0x19,0x01);
        msleep(5);
        gpio_lcd_emuspi_write_one_para(0x1F,0x90);
 		msleep(10);
        gpio_lcd_emuspi_write_one_para(0x1F,0xd4);
        msleep(10);
        msleep(5);
       
       // Gamma Setting

        gpio_lcd_emuspi_write_one_para(0x40,0x00);
        gpio_lcd_emuspi_write_one_para(0x41,0x29);
        gpio_lcd_emuspi_write_one_para(0x42,0x26);
        gpio_lcd_emuspi_write_one_para(0x43,0x3E);
        gpio_lcd_emuspi_write_one_para(0x44,0x3D);
        gpio_lcd_emuspi_write_one_para(0x45,0x3F);        
       	gpio_lcd_emuspi_write_one_para(0x46,0x1b);  
       	gpio_lcd_emuspi_write_one_para(0x47,0x68);        
       	gpio_lcd_emuspi_write_one_para(0x48,0x04);        
       	gpio_lcd_emuspi_write_one_para(0x49,0x05);        
       	gpio_lcd_emuspi_write_one_para(0x4A,0x06);        
       	gpio_lcd_emuspi_write_one_para(0x4B,0x0c);      
       	gpio_lcd_emuspi_write_one_para(0x4C,0x17);       
        gpio_lcd_emuspi_write_one_para(0x50,0x00);
        gpio_lcd_emuspi_write_one_para(0x51,0x02);
        gpio_lcd_emuspi_write_one_para(0x52,0x01);
        gpio_lcd_emuspi_write_one_para(0x53,0x19);
        gpio_lcd_emuspi_write_one_para(0x54,0x16);
        gpio_lcd_emuspi_write_one_para(0x55,0x3F);        
       	gpio_lcd_emuspi_write_one_para(0x56,0x17);   
       	gpio_lcd_emuspi_write_one_para(0x57,0x64);        
       	gpio_lcd_emuspi_write_one_para(0x58,0x08);        
       	gpio_lcd_emuspi_write_one_para(0x59,0x13);        
       	gpio_lcd_emuspi_write_one_para(0x5A,0x19);        
       	gpio_lcd_emuspi_write_one_para(0x5B,0x1a);
       	gpio_lcd_emuspi_write_one_para(0x5C,0x1b);
		gpio_lcd_emuspi_write_one_para(0x5D,0xFF);
 

       	gpio_lcd_emuspi_write_one_para(0x28,0x20);
		msleep(40);   
		gpio_lcd_emuspi_write_one_para(0x28,0x38);
       	msleep(40);  
       	gpio_lcd_emuspi_write_one_para(0x28,0x3C);
   		gpio_lcd_emuspi_write_one_para(0x17,0x05); //05  
       	gpio_lcd_emuspi_write_one_para(0x16,0x49);  
	

		gpio_lcd_emuspi_write_one_para(0x31,0x02);  
		gpio_lcd_emuspi_write_one_para(0x32,0x0e); 
		gpio_lcd_emuspi_write_cmd(0x22,0x83);
		msleep(200);

}