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; }
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); }