void tovis_qvga_esd_recovery(void) { static struct timeval last; unsigned long elapsed_time = 0; struct timeval now; unsigned short reg1, reg2 = 0; do_gettimeofday(&now); elapsed_time = 1000000 * (now.tv_sec - last.tv_sec) + now.tv_usec - last.tv_usec; /* if elapsed 1 second */ if (elapsed_time > 1000000) { EBI2_WRITE16C(DISP_CMD_PORT, 0xa); EBI2_READ16(DISP_DATA_PORT); /* dummy read */ reg1 = EBI2_READ16(DISP_DATA_PORT); EBI2_WRITE16C(DISP_CMD_PORT, 0xc); EBI2_READ16(DISP_DATA_PORT); /* dummy read */ reg2 = EBI2_READ16(DISP_DATA_PORT); if (reg1 == 0x8 && reg2 == 0x66) { printk("tovis_qvga_esd_recovery lcd reset detected!!! -> send initial code\n"); do_tovis_init(); } last = now; } }
static int ilitek_qvga_disp_off(struct platform_device *pdev) { /* LGE_CHANGE_S: E0 [email protected] [2011-11-22] : BL control error fix */ #if 1 struct msm_panel_ilitek_pdata *pdata = tovis_qvga_panel_pdata; #endif /* LGE_CHANGE_E: E0 [email protected] [2011-11-22] : BL control error fix */ printk("%s: display off...\n", __func__); if (!disp_initialized) tovis_qvga_disp_init(pdev); #ifndef CONFIG_ARCH_MSM7X27A pm_qos_update_request(tovis_pm_qos_req, PM_QOS_DEFAULT_VALUE); #endif EBI2_WRITE16C(DISP_CMD_PORT, 0x28); msleep(50); EBI2_WRITE16C(DISP_CMD_PORT, 0x10); // SPLIN msleep(120); /* LGE_CHANGE_S: E0 [email protected] [2011-11-22] : BL control error fix */ #if 1 if(pdata->gpio) gpio_set_value(pdata->gpio, 0); #endif /* LGE_CHANGE_E: E0 [email protected] [2011-11-22] : BL control error fix */ msm_fb_ebi2_power_save(0); display_on = FALSE; return 0; }
static int ilitek_qvga_disp_off(struct platform_device *pdev) { if (!disp_initialized) tovis_qvga_disp_init(pdev); if (display_on) { // perform lcd deep sleep instead of power off EBI2_WRITE16C(DISP_CMD_PORT, 0x28); mdelay(50); EBI2_WRITE16C(DISP_CMD_PORT, 0x10); // SPLIN mdelay(120); /* TEST */ msm_fb_ebi2_power_save(0); display_on = FALSE; } return 0; }
static void ilitek_qvga_disp_set_rect(int x, int y, int xres, int yres) // xres = width, yres - height { if (!disp_initialized) return; DISP_SET_RECT(x, x+xres-1, y, y+yres-1); EBI2_WRITE16C(DISP_CMD_PORT,0x2c); // Write memory start }
static int tovis_qvga_disp_off(struct platform_device *pdev) { if (!disp_initialized) tovis_qvga_disp_init(pdev); if (display_on) { // (b) -> (a) EBI2_WRITE16C(DISP_CMD_PORT, 0x28); // Display Off mdelay(20); EBI2_WRITE16C(DISP_CMD_PORT, 0x10); // AMP Off mdelay(120); msm_fb_ebi2_power_save(0); display_on = FALSE; } return 0; }
static void ilitek_qvga_disp_set_rect(int x, int y, int xres, int yres) // xres = width, yres - height { if (!disp_initialized) return; EBI2_WRITE16C(DISP_CMD_PORT, 0x2a); // Set_Column address EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0xef); // 4 EBI2_WRITE16C(DISP_CMD_PORT, 0x2b); // Set_Page address EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x3f); // 4 EBI2_WRITE16C(DISP_CMD_PORT,0x2c); // Write memory start }
static int ilitek_qvga_disp_off(struct platform_device *pdev) { if (!disp_initialized) tovis_qvga_disp_init(pdev); if (display_on) { EBI2_WRITE16C(DISP_CMD_PORT, 0x28); mdelay(50); msm_fb_ebi2_power_save(0); display_on = FALSE; } return 0; }
static int tovis_qvga_disp_off(struct platform_device *pdev) { if (!disp_initialized) tovis_qvga_disp_init(pdev); pm_qos_update_requirement(PM_QOS_SYSTEM_BUS_FREQ, "ebi2_lcd", PM_QOS_DEFAULT_VALUE); if (display_on) { // (b) -> (a) EBI2_WRITE16C(DISP_CMD_PORT, 0x28); // ScreenOff mdelay(20); EBI2_WRITE16C(DISP_CMD_PORT, 0x10); // AMP Off mdelay(120); // (a) -> (d) EBI2_WRITE16C(DISP_CMD_PORT, 0xb1); EBI2_WRITE16D(DISP_DATA_PORT,0x01); display_on = FALSE; } return 0; }
static int ilitek_qvga_disp_off(struct platform_device *pdev) { struct msm_panel_ilitek_pdata *pdata = tovis_qvga_panel_pdata; printk("%s: display off...", __func__); if (!disp_initialized) tovis_qvga_disp_init(pdev); pm_qos_update_request(tovis_pm_qos_req, PM_QOS_DEFAULT_VALUE); EBI2_WRITE16C(DISP_CMD_PORT, 0x28); mdelay(50); EBI2_WRITE16C(DISP_CMD_PORT, 0x10); // SPLIN mdelay(120); if(pdata->gpio) gpio_set_value(pdata->gpio, 0); msm_fb_ebi2_power_save(0); display_on = FALSE; return 0; }
static void do_ilitek_init() { int x, y; EBI2_WRITE16C(DISP_CMD_PORT, 0xc0); EBI2_WRITE16D(DISP_DATA_PORT,0x27); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xc1); EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xc2); EBI2_WRITE16D(DISP_DATA_PORT,0x80); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xc5); EBI2_WRITE16D(DISP_DATA_PORT,0x34); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x49); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0x13); EBI2_WRITE16C(DISP_CMD_PORT, 0x36); EBI2_WRITE16D(DISP_DATA_PORT,0x48); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0x3a); EBI2_WRITE16D(DISP_DATA_PORT,0x05); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xb1); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x17); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xb4); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xb5); EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x06); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x14); // 4 EBI2_WRITE16C(DISP_CMD_PORT, 0xb6); EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x02); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x27); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 4 EBI2_WRITE16C(DISP_CMD_PORT, 0x35); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0x44); // Tearing effect Control EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0xe2); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xe0); // Positive Gamma Correction EBI2_WRITE16D(DISP_DATA_PORT,0x0d); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x2c); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x27); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x0c); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x10); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x07); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x4f); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x55); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0x3b); // 9 EBI2_WRITE16D(DISP_DATA_PORT,0x04); // 10 EBI2_WRITE16D(DISP_DATA_PORT,0x10); // 11 EBI2_WRITE16D(DISP_DATA_PORT,0x02); // 12 EBI2_WRITE16D(DISP_DATA_PORT,0x17); // 13 EBI2_WRITE16D(DISP_DATA_PORT,0x12); // 14 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 15 EBI2_WRITE16C(DISP_CMD_PORT, 0xe1); // Negative Gamma Correction EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x15); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x1a); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x02); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x0d); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x03); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x32); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x44); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0x46); // 9 EBI2_WRITE16D(DISP_DATA_PORT,0x06); // 10 EBI2_WRITE16D(DISP_DATA_PORT,0x0d); // 11 EBI2_WRITE16D(DISP_DATA_PORT,0x0c); // 12 EBI2_WRITE16D(DISP_DATA_PORT,0x2a); // 13 EBI2_WRITE16D(DISP_DATA_PORT,0x2f); // 14 EBI2_WRITE16D(DISP_DATA_PORT,0x0f); // 15 EBI2_WRITE16C(DISP_CMD_PORT,0x2a); // Set_column_address EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0xef); // 4 EBI2_WRITE16C(DISP_CMD_PORT,0x2b); // Set_Page_address EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x3f); // 4 EBI2_WRITE16C(DISP_CMD_PORT,0xe8); // Charge Sharing Control EBI2_WRITE16D(DISP_DATA_PORT,0x89); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x08); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x79); // 3 EBI2_WRITE16C(DISP_CMD_PORT,0x11); // Exit Sleep mdelay(80); /*-- bootlogo is displayed at oemsbl EBI2_WRITE16C(DISP_CMD_PORT,0x2c); // Write memory start for(y = 0; y < 320; y++) { int pixel = 0x0; for(x= 0; x < 240; x++) { EBI2_WRITE16D(DISP_DATA_PORT,pixel); // 1 } } mdelay(50); */ EBI2_WRITE16C(DISP_CMD_PORT,0x29); // Display On }
static void do_tovis_init() { int x, y; EBI2_WRITE16C(DISP_CMD_PORT,0xb0); // Manufacturer command access protect EBI2_WRITE16D(DISP_DATA_PORT,0x0); EBI2_WRITE16C(DISP_CMD_PORT,0xb1); // Low power mode control EBI2_WRITE16D(DISP_DATA_PORT,0x0); EBI2_WRITE16C(DISP_CMD_PORT,0xb3); // frame memory & I/F setting EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x01); EBI2_WRITE16C(DISP_CMD_PORT,0xb4); // Display mode & frame memory write mode setting EBI2_WRITE16D(DISP_DATA_PORT,0x0); /* EBI2_WRITE16C(DISP_CMD_PORT,0xb8); // Back Light Control(1) EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x1f); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x1f); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x3f); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x3f); // 7 EBI2_WRITE16D(DISP_DATA_PORT,0xff); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0xff); // 9 EBI2_WRITE16D(DISP_DATA_PORT,0x08); // 10 EBI2_WRITE16D(DISP_DATA_PORT,0x08); // 11 EBI2_WRITE16D(DISP_DATA_PORT,0x10); // 12 EBI2_WRITE16D(DISP_DATA_PORT,0x10); // 13 EBI2_WRITE16D(DISP_DATA_PORT,0xff); // 14 EBI2_WRITE16D(DISP_DATA_PORT,0xff); // 15 EBI2_WRITE16D(DISP_DATA_PORT,0xff); // 16 EBI2_WRITE16D(DISP_DATA_PORT,0xff); // 17 EBI2_WRITE16D(DISP_DATA_PORT,0xff); // 18 EBI2_WRITE16D(DISP_DATA_PORT,0xff); // 19 EBI2_WRITE16D(DISP_DATA_PORT,0xff); // 20 EBI2_WRITE16C(DISP_CMD_PORT,0xb9); // Back Light Control(2) EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x1d); // 4 */ EBI2_WRITE16C(DISP_CMD_PORT,0xc0); // Panel driving setting EBI2_WRITE16D(DISP_DATA_PORT,0x03); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x4f); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 7 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 8 EBI2_WRITE16C(DISP_CMD_PORT,0xc1); // Display timing setting for normal mode EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x19); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x05); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x07); // 5 EBI2_WRITE16C(DISP_CMD_PORT,0xc3); // Display timing setting for idle mode EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x19); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x05); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x07); // 5 EBI2_WRITE16C(DISP_CMD_PORT,0xc4); // Source/Vcom/gate driving time setting EBI2_WRITE16D(DISP_DATA_PORT,0x11); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x43); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 4 EBI2_WRITE16C(DISP_CMD_PORT,0xc8); // Gamma Set A (Blue) EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x0A); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x15); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0xde); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x09); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x13); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x14); // 7 EBI2_WRITE16D(DISP_DATA_PORT,0x05); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 9 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 10 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 11 EBI2_WRITE16D(DISP_DATA_PORT,0x14); // 12 EBI2_WRITE16D(DISP_DATA_PORT,0x13); // 13 EBI2_WRITE16D(DISP_DATA_PORT,0xd9); // 14 EBI2_WRITE16D(DISP_DATA_PORT,0x0e); // 15 EBI2_WRITE16D(DISP_DATA_PORT,0x15); // 16 EBI2_WRITE16D(DISP_DATA_PORT,0x0A); // 17 EBI2_WRITE16D(DISP_DATA_PORT,0x05); // 18 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 19 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 20 EBI2_WRITE16C(DISP_CMD_PORT,0xc9); // Gamma Set B (Green) EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x0A); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x15); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0xde); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x09); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x13); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x14); // 7 EBI2_WRITE16D(DISP_DATA_PORT,0x05); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 9 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 10 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 11 EBI2_WRITE16D(DISP_DATA_PORT,0x14); // 12 EBI2_WRITE16D(DISP_DATA_PORT,0x13); // 13 EBI2_WRITE16D(DISP_DATA_PORT,0xd9); // 14 EBI2_WRITE16D(DISP_DATA_PORT,0x0e); // 15 EBI2_WRITE16D(DISP_DATA_PORT,0x15); // 16 EBI2_WRITE16D(DISP_DATA_PORT,0x0A); // 17 EBI2_WRITE16D(DISP_DATA_PORT,0x05); // 18 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 19 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 20 EBI2_WRITE16C(DISP_CMD_PORT,0xca); // Gamma Set C (Red) EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x0A); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x15); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0xde); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x09); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x13); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x14); // 7 EBI2_WRITE16D(DISP_DATA_PORT,0x05); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 9 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 10 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 11 EBI2_WRITE16D(DISP_DATA_PORT,0x14); // 12 EBI2_WRITE16D(DISP_DATA_PORT,0x13); // 13 EBI2_WRITE16D(DISP_DATA_PORT,0xd9); // 14 EBI2_WRITE16D(DISP_DATA_PORT,0x0e); // 15 EBI2_WRITE16D(DISP_DATA_PORT,0x15); // 16 EBI2_WRITE16D(DISP_DATA_PORT,0x0A); // 17 EBI2_WRITE16D(DISP_DATA_PORT,0x05); // 18 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 19 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 20 EBI2_WRITE16C(DISP_CMD_PORT,0xd0); // Power setting(common) EBI2_WRITE16D(DISP_DATA_PORT,0x07); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0xc6); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0xdd); // 3 EBI2_WRITE16C(DISP_CMD_PORT,0xd1); // Vcom setting EBI2_WRITE16D(DISP_DATA_PORT,0x67); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x0d); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x02); // 3 EBI2_WRITE16C(DISP_CMD_PORT,0xd2); // Power setting for normal mode EBI2_WRITE16D(DISP_DATA_PORT,0x63); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x24); // 2 EBI2_WRITE16C(DISP_CMD_PORT,0xd4); // Power setting for idle mode EBI2_WRITE16D(DISP_DATA_PORT,0x63); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x24); // 2 /* EBI2_WRITE16C(DISP_CMD_PORT,0xd7); // Test Register EBI2_WRITE16D(DISP_DATA_PORT,0x06); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x16); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x88); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x07); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0xaa); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0xca); // 7 EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0x0c); // 9 EBI2_WRITE16C(DISP_CMD_PORT,0xd8); // Sequencer Control EBI2_WRITE16D(DISP_DATA_PORT,0x77); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x77); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x33); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x75); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x11); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x91); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 7 EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0x09); // 9 EBI2_WRITE16C(DISP_CMD_PORT, 0xd9); // Test Register1 EBI2_WRITE16D(DISP_DATA_PORT,0xfb); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x9f); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xe0); // NVM Access Control EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xe4); // Test Register2 EBI2_WRITE16D(DISP_DATA_PORT,0x11); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x11); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xe5); // Test Register3 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16C(DISP_CMD_PORT,0xfa); // Test Register4 EBI2_WRITE16D(DISP_DATA_PORT,0x04); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 3 EBI2_WRITE16C(DISP_CMD_PORT,0xfc); // Test Register5 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 7 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 9 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 10 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 11 EBI2_WRITE16C(DISP_CMD_PORT,0xfd); // Test Register6 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x0c); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 7 EBI2_WRITE16C(DISP_CMD_PORT,0xfe); // Test Register7 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x21); // 4 */ EBI2_WRITE16C(DISP_CMD_PORT,0x35); // Set_tear on EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16C(DISP_CMD_PORT,0x36); // Set_address_mode EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16C(DISP_CMD_PORT,0x3a); // Set_pixel_format EBI2_WRITE16D(DISP_DATA_PORT,0x05); // 1 /* EBI2_WRITE16C(DISP_CMD_PORT,0x44); // Set_tear_scanline EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0xb8); // 2 */ EBI2_WRITE16C(DISP_CMD_PORT,0x2a); // Set_column_address EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0xef); // 4 EBI2_WRITE16C(DISP_CMD_PORT,0x2b); // Set_Page_address EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x3f); // 4 /*-- bootlogo is displayed at oemsbl EBI2_WRITE16C(DISP_CMD_PORT,0x2c); // Write memory start for(y = 0; y < 320; y++) { int pixel = 0x0; for(x= 0; x < 240; x++) { EBI2_WRITE16D(DISP_DATA_PORT,pixel); // 1 } } */ EBI2_WRITE16C(DISP_CMD_PORT,0x11); // Exit_sleep_mode mdelay(50); //mdelay(120); EBI2_WRITE16C(DISP_CMD_PORT,0x29); // Display On mdelay(15); }
static void do_lgd_init(struct platform_device *pdev) { EBI2_WRITE16C(DISP_CMD_PORT, 0x11); EBI2_WRITE16C(DISP_CMD_PORT, 0x35); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0x36); EBI2_WRITE16D(DISP_DATA_PORT,mactl); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0x3a); EBI2_WRITE16D(DISP_DATA_PORT,0x05); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xb1); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x17); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xb4); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xb6); EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x02); // 2 /* Power Control 1 */ EBI2_WRITE16C(DISP_CMD_PORT, 0xc0); EBI2_WRITE16D(DISP_DATA_PORT,0x12); // 1 /* Power Control 2 */ EBI2_WRITE16C(DISP_CMD_PORT, 0xc1); EBI2_WRITE16D(DISP_DATA_PORT,0x11); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xc5); EBI2_WRITE16D(DISP_DATA_PORT,0x22); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x33); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xc7); EBI2_WRITE16D(DISP_DATA_PORT,0xcf); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xcb); EBI2_WRITE16D(DISP_DATA_PORT,0x39); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x2c); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x35); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x06); // 5 EBI2_WRITE16C(DISP_CMD_PORT, 0xcf); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0xba); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0xb0); // 3 EBI2_WRITE16C(DISP_CMD_PORT, 0xe8); EBI2_WRITE16D(DISP_DATA_PORT,0x89); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x7b); // 3 EBI2_WRITE16C(DISP_CMD_PORT, 0xea); EBI2_WRITE16D(DISP_DATA_PORT,0x10); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xf6); EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x30); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 3 EBI2_WRITE16C(DISP_CMD_PORT, 0xf7); EBI2_WRITE16D(DISP_DATA_PORT,0x20); // 1 /* Gamma Setting(Positive) */ EBI2_WRITE16C(DISP_CMD_PORT, 0xe0); EBI2_WRITE16D(DISP_DATA_PORT,0x0f); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x22); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x30); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x0f); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x13); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x0e); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x50); // 7 EBI2_WRITE16D(DISP_DATA_PORT,0x55); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0x2c); // 9 EBI2_WRITE16D(DISP_DATA_PORT,0x06); // 10 EBI2_WRITE16D(DISP_DATA_PORT,0x14); // 11 EBI2_WRITE16D(DISP_DATA_PORT,0x04); // 12 EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 13 EBI2_WRITE16D(DISP_DATA_PORT,0x08); // 14 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 15 /* Gamma Setting(Negative) */ EBI2_WRITE16C(DISP_CMD_PORT, 0xe1); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x0e); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x0f); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x0c); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x02); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x2e); // 7 EBI2_WRITE16D(DISP_DATA_PORT,0x25); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0x49); // 9 EBI2_WRITE16D(DISP_DATA_PORT,0x05); // 10 EBI2_WRITE16D(DISP_DATA_PORT,0x0c); // 11 EBI2_WRITE16D(DISP_DATA_PORT,0x0b); // 12 EBI2_WRITE16D(DISP_DATA_PORT,0x35); // 13 EBI2_WRITE16D(DISP_DATA_PORT,0x38); // 14 EBI2_WRITE16D(DISP_DATA_PORT,0x0f); // 15 EBI2_WRITE16C(DISP_CMD_PORT, 0x29); }
static void do_ilitek_init(struct platform_device *pdev) { #if defined (CONFIG_MACH_MSM7X27_JUMP) EBI2_WRITE16C(DISP_CMD_PORT, 0xc0); EBI2_WRITE16D(DISP_DATA_PORT,0x23); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xc1); EBI2_WRITE16D(DISP_DATA_PORT,0x13); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xc5); EBI2_WRITE16D(DISP_DATA_PORT,0x3b); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x50); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xcb); EBI2_WRITE16D(DISP_DATA_PORT,0x39); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x2c); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x34); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x02); // 5 EBI2_WRITE16C(DISP_CMD_PORT, 0xcf); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x81); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x30); // 3 EBI2_WRITE16C(DISP_CMD_PORT, 0xe8); EBI2_WRITE16D(DISP_DATA_PORT,0x85); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x78); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xea); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 /* Power on sequence control */ EBI2_WRITE16C(DISP_CMD_PORT, 0xed); EBI2_WRITE16D(DISP_DATA_PORT,0x64); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x03); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x12); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x81); // 4 /* Pump ratio control */ EBI2_WRITE16C(DISP_CMD_PORT, 0xf7); EBI2_WRITE16D(DISP_DATA_PORT,0x20); // 1 /* Display mode setting */ EBI2_WRITE16C(DISP_CMD_PORT, 0x13); /* Memory access control */ EBI2_WRITE16C(DISP_CMD_PORT, 0x36); EBI2_WRITE16D(DISP_DATA_PORT,mactl); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0x3a); EBI2_WRITE16D(DISP_DATA_PORT,0x05); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xb1); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x1b); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xb4); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xb5); EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x0f); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x14); // 4 EBI2_WRITE16C(DISP_CMD_PORT, 0xb6); EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x82); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x27); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 4 EBI2_WRITE16C(DISP_CMD_PORT, 0x35); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0x44); // Tearing effect Control EBI2_WRITE16D(DISP_DATA_PORT,te_lines >> 8); // 1 EBI2_WRITE16D(DISP_DATA_PORT,te_lines & 0xFF); // 2 /* Positive Gamma Correction */ EBI2_WRITE16C(DISP_CMD_PORT, 0xe0); EBI2_WRITE16D(DISP_DATA_PORT,0x06); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x24); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x1f); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x0f); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x15); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x0f); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x4e); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x08); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0x3f); // 9 EBI2_WRITE16D(DISP_DATA_PORT,0x0b); // 10 EBI2_WRITE16D(DISP_DATA_PORT,0x10); // 11 EBI2_WRITE16D(DISP_DATA_PORT,0x03); // 12 EBI2_WRITE16D(DISP_DATA_PORT,0x03); // 13 EBI2_WRITE16D(DISP_DATA_PORT,0x02); // 14 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 15 /* Negative Gamma Correction */ EBI2_WRITE16C(DISP_CMD_PORT, 0xe1); EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x1d); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x25); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x06); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x11); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x33); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x02); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0x44); // 9 EBI2_WRITE16D(DISP_DATA_PORT,0x05); // 10 EBI2_WRITE16D(DISP_DATA_PORT,0x15); // 11 EBI2_WRITE16D(DISP_DATA_PORT,0x0f); // 12 EBI2_WRITE16D(DISP_DATA_PORT,0x36); // 13 EBI2_WRITE16D(DISP_DATA_PORT,0x37); // 14 EBI2_WRITE16D(DISP_DATA_PORT,0x0f); // 15 EBI2_WRITE16C(DISP_CMD_PORT,0x2a); // Set_column_address EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0xef); // 4 EBI2_WRITE16C(DISP_CMD_PORT,0x2b); // Set_Page_address EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x3f); // 4 EBI2_WRITE16C(DISP_CMD_PORT,0xe8); // Charge Sharing Control EBI2_WRITE16D(DISP_DATA_PORT,0x85); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x78); // 3 EBI2_WRITE16C(DISP_CMD_PORT,0x11); // Exit Sleep mdelay(120); /*-- bootlogo is displayed at oemsbl EBI2_WRITE16C(DISP_CMD_PORT,0x2c); // Write memory start for(y = 0; y < 320; y++) { int pixel = 0x0; for(x= 0; x < 240; x++) { EBI2_WRITE16D(DISP_DATA_PORT,pixel); // 1 } } mdelay(50); */ EBI2_WRITE16C(DISP_CMD_PORT,0x29); // Display On #else EBI2_WRITE16C(DISP_CMD_PORT, 0xc0); EBI2_WRITE16D(DISP_DATA_PORT,0x23); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xc1); EBI2_WRITE16D(DISP_DATA_PORT,0x11); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xc5); EBI2_WRITE16D(DISP_DATA_PORT,0x2f); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x50); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xcb); EBI2_WRITE16D(DISP_DATA_PORT,0x39); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x2c); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x34); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x02); // 5 EBI2_WRITE16C(DISP_CMD_PORT, 0xcf); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x89); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x30); // 3 EBI2_WRITE16C(DISP_CMD_PORT, 0xe8); EBI2_WRITE16D(DISP_DATA_PORT,0x85); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x78); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xea); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 /* Power on sequence control */ EBI2_WRITE16C(DISP_CMD_PORT, 0xed); EBI2_WRITE16D(DISP_DATA_PORT,0x64); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x03); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x12); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x81); // 4 /* Pump ratio control */ EBI2_WRITE16C(DISP_CMD_PORT, 0xf7); EBI2_WRITE16D(DISP_DATA_PORT,0x20); // 1 /* Display mode setting */ EBI2_WRITE16C(DISP_CMD_PORT, 0x13); /* Memory access control */ EBI2_WRITE16C(DISP_CMD_PORT, 0x36); EBI2_WRITE16D(DISP_DATA_PORT,mactl); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0x3a); EBI2_WRITE16D(DISP_DATA_PORT,0x05); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xb1); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x17); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xb4); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xb5); EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x0f); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x14); // 4 EBI2_WRITE16C(DISP_CMD_PORT, 0xb6); EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x02); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x27); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 4 EBI2_WRITE16C(DISP_CMD_PORT, 0x35); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0x44); // Tearing effect Control EBI2_WRITE16D(DISP_DATA_PORT,te_lines>>8); // 1 EBI2_WRITE16D(DISP_DATA_PORT,te_lines&0xFF); // 2 /* Positive Gamma Correction */ EBI2_WRITE16C(DISP_CMD_PORT, 0xe0); EBI2_WRITE16D(DISP_DATA_PORT,0x0f); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x34); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x2d); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x0d); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x0f); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x06); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x4b); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x65); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0x30); // 9 EBI2_WRITE16D(DISP_DATA_PORT,0x02); // 10 EBI2_WRITE16D(DISP_DATA_PORT,0x0c); // 11 EBI2_WRITE16D(DISP_DATA_PORT,0x02); // 12 EBI2_WRITE16D(DISP_DATA_PORT,0x0e); // 13 EBI2_WRITE16D(DISP_DATA_PORT,0x0b); // 14 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 15 /* Negative Gamma Correction */ EBI2_WRITE16C(DISP_CMD_PORT, 0xe1); EBI2_WRITE16D(DISP_DATA_PORT,0x08); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x0d); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x14); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x0e); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x04); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x36); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x34); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0x51); // 9 EBI2_WRITE16D(DISP_DATA_PORT,0x08); // 10 EBI2_WRITE16D(DISP_DATA_PORT,0x11); // 11 EBI2_WRITE16D(DISP_DATA_PORT,0x0c); // 12 EBI2_WRITE16D(DISP_DATA_PORT,0x33); // 13 EBI2_WRITE16D(DISP_DATA_PORT,0x36); // 14 EBI2_WRITE16D(DISP_DATA_PORT,0x17); // 15 EBI2_WRITE16C(DISP_CMD_PORT,0x2a); // Set_column_address EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0xef); // 4 EBI2_WRITE16C(DISP_CMD_PORT,0x2b); // Set_Page_address EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x3f); // 4 EBI2_WRITE16C(DISP_CMD_PORT,0xe8); // Charge Sharing Control EBI2_WRITE16D(DISP_DATA_PORT,0x85); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x78); // 3 EBI2_WRITE16C(DISP_CMD_PORT,0x11); // Exit Sleep mdelay(120); /*-- bootlogo is displayed at oemsbl EBI2_WRITE16C(DISP_CMD_PORT,0x2c); // Write memory start for(y = 0; y < 320; y++) { int pixel = 0x0; for(x= 0; x < 240; x++) { EBI2_WRITE16D(DISP_DATA_PORT,pixel); // 1 } } mdelay(50); */ EBI2_WRITE16C(DISP_CMD_PORT,0x29); // Display On #endif }
static void panel_lgdisplay_init(void) { /* SET EXTC */ EBI2_WRITE16C(DISP_CMD_PORT, 0xcf); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x21); /* Inversion Control */ EBI2_WRITE16C(DISP_CMD_PORT, 0xb4); EBI2_WRITE16D(DISP_DATA_PORT,0x02); /* Power control 1 */ EBI2_WRITE16C(DISP_CMD_PORT, 0xc0); EBI2_WRITE16D(DISP_DATA_PORT,0x14); EBI2_WRITE16D(DISP_DATA_PORT,0x0f); /* Power control 2*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xc1); EBI2_WRITE16D(DISP_DATA_PORT,0x04); /* Power control 3*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xc2); EBI2_WRITE16D(DISP_DATA_PORT,0x32); /* Vcom control 1*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xc5); EBI2_WRITE16D(DISP_DATA_PORT,0xfc); /* Interface control*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xf6); EBI2_WRITE16D(DISP_DATA_PORT,0x41); EBI2_WRITE16D(DISP_DATA_PORT,0x30); EBI2_WRITE16D(DISP_DATA_PORT,0x00); /* Entry Mode Set*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xb7); EBI2_WRITE16D(DISP_DATA_PORT,0x06); /* Frame Rate control*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xb1); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x1f); /* Memory Access control*/ EBI2_WRITE16C(DISP_CMD_PORT, 0x36); EBI2_WRITE16D(DISP_DATA_PORT,0x08); /* Blanking Porch control*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xb5); EBI2_WRITE16D(DISP_DATA_PORT,0x02); EBI2_WRITE16D(DISP_DATA_PORT,0x02); EBI2_WRITE16D(DISP_DATA_PORT,0x0a); EBI2_WRITE16D(DISP_DATA_PORT,0x14); /* Display Function control*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xb6); EBI2_WRITE16D(DISP_DATA_PORT,0x0a); EBI2_WRITE16D(DISP_DATA_PORT,0x02); EBI2_WRITE16D(DISP_DATA_PORT,0x27); EBI2_WRITE16D(DISP_DATA_PORT,0x04); /* Pixel Format */ EBI2_WRITE16C(DISP_CMD_PORT, 0x3a); EBI2_WRITE16D(DISP_DATA_PORT,0x55); /* Tearing Effect Line On */ EBI2_WRITE16C(DISP_CMD_PORT, 0x35); EBI2_WRITE16D(DISP_DATA_PORT,0x00); /* Tearing effect Control Parameter */ EBI2_WRITE16C(DISP_CMD_PORT, 0x44); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0xef); /* Positive Gamma Correction*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xe0); EBI2_WRITE16D(DISP_DATA_PORT,0x08); EBI2_WRITE16D(DISP_DATA_PORT,0x0e); EBI2_WRITE16D(DISP_DATA_PORT,0x12); EBI2_WRITE16D(DISP_DATA_PORT,0x04); EBI2_WRITE16D(DISP_DATA_PORT,0x0f); EBI2_WRITE16D(DISP_DATA_PORT,0x05); EBI2_WRITE16D(DISP_DATA_PORT,0x35); EBI2_WRITE16D(DISP_DATA_PORT,0x32); EBI2_WRITE16D(DISP_DATA_PORT,0x4f); EBI2_WRITE16D(DISP_DATA_PORT,0x03); EBI2_WRITE16D(DISP_DATA_PORT,0x0c); EBI2_WRITE16D(DISP_DATA_PORT,0x0a); EBI2_WRITE16D(DISP_DATA_PORT,0x2f); EBI2_WRITE16D(DISP_DATA_PORT,0x35); EBI2_WRITE16D(DISP_DATA_PORT,0x0f); /* Negative Gamma Correction*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xe1); EBI2_WRITE16D(DISP_DATA_PORT,0x08); EBI2_WRITE16D(DISP_DATA_PORT,0x0e); EBI2_WRITE16D(DISP_DATA_PORT,0x12); EBI2_WRITE16D(DISP_DATA_PORT,0x03); EBI2_WRITE16D(DISP_DATA_PORT,0x0e); EBI2_WRITE16D(DISP_DATA_PORT,0x03); EBI2_WRITE16D(DISP_DATA_PORT,0x35); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x4d); EBI2_WRITE16D(DISP_DATA_PORT,0x0a); EBI2_WRITE16D(DISP_DATA_PORT,0x12); EBI2_WRITE16D(DISP_DATA_PORT,0x0f); EBI2_WRITE16D(DISP_DATA_PORT,0x31); EBI2_WRITE16D(DISP_DATA_PORT,0x38); EBI2_WRITE16D(DISP_DATA_PORT,0x0f); /* Column address*/ EBI2_WRITE16C(DISP_CMD_PORT, 0x2a); // Set_column_address EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0xef); /* Page address*/ EBI2_WRITE16C(DISP_CMD_PORT, 0x2b); // Set_Page_address EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x01); EBI2_WRITE16D(DISP_DATA_PORT,0x3f); /* Charge Sharing control*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xe8); // Charge Sharing Control EBI2_WRITE16D(DISP_DATA_PORT,0x84); EBI2_WRITE16D(DISP_DATA_PORT,0x1a); EBI2_WRITE16D(DISP_DATA_PORT,0x38); /* Exit Sleep - This command should be only used at Power on sequence*/ EBI2_WRITE16C(DISP_CMD_PORT,0x11); // Exit Sleep msleep(120); EBI2_WRITE16C(DISP_CMD_PORT,0x2c); // Write memory start { int x, y; for(y = 0; y < QVGA_HEIGHT; y++) { for(x = 0; x < QVGA_WIDTH; x++) { EBI2_WRITE16D(DISP_DATA_PORT, 0); } } } msleep(80); EBI2_WRITE16C(DISP_CMD_PORT,0x29); // Display On }
static void do_ilitek_init(struct platform_device *pdev) { #if defined(CONFIG_MACH_MSM7X25A_E0EU) || defined(CONFIG_MACH_MSM7X25A_E1BR) int x,y; /* EXTC Option*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xcf); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x21); EBI2_WRITE16D(DISP_DATA_PORT,0x20); /* 3-Gamma Function Off */ EBI2_WRITE16C(DISP_CMD_PORT, 0xf2); EBI2_WRITE16D(DISP_DATA_PORT,0x02); /* Inversion Control -> 2Dot inversion*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xb4); EBI2_WRITE16D(DISP_DATA_PORT,0x02); /* Power control 1 */ EBI2_WRITE16C(DISP_CMD_PORT, 0xc0); EBI2_WRITE16D(DISP_DATA_PORT,0x15); EBI2_WRITE16D(DISP_DATA_PORT,0x15); /* Power control 2*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xc1); EBI2_WRITE16D(DISP_DATA_PORT,0x05); /* Power control 3*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xc2); EBI2_WRITE16D(DISP_DATA_PORT,0x32); /* Vcom control 1*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xc5); EBI2_WRITE16D(DISP_DATA_PORT,0xfc); /* V-core Setting */ EBI2_WRITE16C(DISP_CMD_PORT, 0xcb); EBI2_WRITE16D(DISP_DATA_PORT,0x31); EBI2_WRITE16D(DISP_DATA_PORT,0x24); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x34); /* Interface control*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xf6); EBI2_WRITE16D(DISP_DATA_PORT,0x41); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x00); /* Entry Mode Set*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xb7); EBI2_WRITE16D(DISP_DATA_PORT,0x06); /* Frame Rate control*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xb1); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x1b); /* Memory Access control*/ EBI2_WRITE16C(DISP_CMD_PORT, 0x36); EBI2_WRITE16D(DISP_DATA_PORT,0x08); /* Blanking Porch control*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xb5); EBI2_WRITE16D(DISP_DATA_PORT,0x02); EBI2_WRITE16D(DISP_DATA_PORT,0x02); EBI2_WRITE16D(DISP_DATA_PORT,0x0a); EBI2_WRITE16D(DISP_DATA_PORT,0x14); /* Display Function control*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xb6); EBI2_WRITE16D(DISP_DATA_PORT,0x02); EBI2_WRITE16D(DISP_DATA_PORT,0x82); EBI2_WRITE16D(DISP_DATA_PORT,0x27); EBI2_WRITE16D(DISP_DATA_PORT,0x00); /* Pixel Format --> DBI(5 = 16bit) */ EBI2_WRITE16C(DISP_CMD_PORT, 0x3a); EBI2_WRITE16D(DISP_DATA_PORT,0x05); /* Tearing Effect Line On */ EBI2_WRITE16C(DISP_CMD_PORT, 0x35); EBI2_WRITE16D(DISP_DATA_PORT,0x00); /* Tearing effect Control Parameter */ EBI2_WRITE16C(DISP_CMD_PORT, 0x44); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0xef); /* Positive Gamma Correction*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xe0); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x06); EBI2_WRITE16D(DISP_DATA_PORT,0x07); EBI2_WRITE16D(DISP_DATA_PORT,0x03); EBI2_WRITE16D(DISP_DATA_PORT,0x0a); EBI2_WRITE16D(DISP_DATA_PORT,0x0a); EBI2_WRITE16D(DISP_DATA_PORT,0x40); EBI2_WRITE16D(DISP_DATA_PORT,0x59); EBI2_WRITE16D(DISP_DATA_PORT,0x4d); EBI2_WRITE16D(DISP_DATA_PORT,0x0c); EBI2_WRITE16D(DISP_DATA_PORT,0x18); EBI2_WRITE16D(DISP_DATA_PORT,0x0f); EBI2_WRITE16D(DISP_DATA_PORT,0x22); EBI2_WRITE16D(DISP_DATA_PORT,0x1d); EBI2_WRITE16D(DISP_DATA_PORT,0x0f); /* Negative Gamma Correction*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xe1); EBI2_WRITE16D(DISP_DATA_PORT,0x06); EBI2_WRITE16D(DISP_DATA_PORT,0x23); EBI2_WRITE16D(DISP_DATA_PORT,0x24); EBI2_WRITE16D(DISP_DATA_PORT,0x01); EBI2_WRITE16D(DISP_DATA_PORT,0x0f); EBI2_WRITE16D(DISP_DATA_PORT,0x01); EBI2_WRITE16D(DISP_DATA_PORT,0x36); EBI2_WRITE16D(DISP_DATA_PORT,0x23); EBI2_WRITE16D(DISP_DATA_PORT,0x41); EBI2_WRITE16D(DISP_DATA_PORT,0x07); EBI2_WRITE16D(DISP_DATA_PORT,0x0f); EBI2_WRITE16D(DISP_DATA_PORT,0x0f); EBI2_WRITE16D(DISP_DATA_PORT,0x30); EBI2_WRITE16D(DISP_DATA_PORT,0x27); EBI2_WRITE16D(DISP_DATA_PORT,0x0e); /* Column address*/ EBI2_WRITE16C(DISP_CMD_PORT, 0x2a); // Set_column_address EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0xef); /* Page address*/ EBI2_WRITE16C(DISP_CMD_PORT, 0x2b); // Set_Page_address EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x01); EBI2_WRITE16D(DISP_DATA_PORT,0x3f); /* Charge Sharing control*/ EBI2_WRITE16C(DISP_CMD_PORT, 0xe8); // Charge Sharing Control EBI2_WRITE16D(DISP_DATA_PORT,0x84); EBI2_WRITE16D(DISP_DATA_PORT,0x1a); EBI2_WRITE16D(DISP_DATA_PORT,0x68); /* Exit Sleep - This command should be only used at Power on sequence*/ EBI2_WRITE16C(DISP_CMD_PORT,0x11); // Exit Sleep msleep(120); /* LGE_CHANGE_S: E0 [email protected] [2011-11-22] : BL control error fix */ #if 1 EBI2_WRITE16C(DISP_CMD_PORT,0x2c); // Write memory start for(y = 0; y < 320; y++) { int pixel = 0x0; for(x= 0; x < 240; x++) { EBI2_WRITE16D(DISP_DATA_PORT,pixel); } } msleep(30); #endif /* LGE_CHANGE_E: E0 [email protected] [2011-11-22] : BL control error fix */ EBI2_WRITE16C(DISP_CMD_PORT,0x29); // Display On #else EBI2_WRITE16C(DISP_CMD_PORT, 0xc0); EBI2_WRITE16D(DISP_DATA_PORT,0x1D); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xc1); EBI2_WRITE16D(DISP_DATA_PORT,0x11); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xc5); EBI2_WRITE16D(DISP_DATA_PORT,0x33); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x34); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xcb); EBI2_WRITE16D(DISP_DATA_PORT,0x39); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x2c); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x34); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x02); // 5 EBI2_WRITE16C(DISP_CMD_PORT, 0xcf); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x83); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x30); // 3 EBI2_WRITE16C(DISP_CMD_PORT, 0xe8); EBI2_WRITE16D(DISP_DATA_PORT,0x85); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x78); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xea); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 /* Power on sequence control */ EBI2_WRITE16C(DISP_CMD_PORT, 0xed); EBI2_WRITE16D(DISP_DATA_PORT,0x64); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x03); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x12); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x81); // 4 /* Pump ratio control */ EBI2_WRITE16C(DISP_CMD_PORT, 0xf7); EBI2_WRITE16D(DISP_DATA_PORT,0x20); // 1 /* Display mode setting */ EBI2_WRITE16C(DISP_CMD_PORT, 0x13); /* Memory access control */ EBI2_WRITE16C(DISP_CMD_PORT, 0x36); EBI2_WRITE16D(DISP_DATA_PORT,mactl); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0x3a); EBI2_WRITE16D(DISP_DATA_PORT,0x05); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xb1); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x1A); // 2 EBI2_WRITE16C(DISP_CMD_PORT, 0xb4); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0xb5); EBI2_WRITE16D(DISP_DATA_PORT,0x02); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x02); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x14); // 4 EBI2_WRITE16C(DISP_CMD_PORT, 0xb6); EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x82); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x27); // 3 //EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 4 EBI2_WRITE16C(DISP_CMD_PORT, 0x35); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16C(DISP_CMD_PORT, 0x44); // Tearing effect Control EBI2_WRITE16D(DISP_DATA_PORT,te_lines >> 8); // 1 EBI2_WRITE16D(DISP_DATA_PORT,te_lines & 0xFF); // 2 /* Positive Gamma Correction */ EBI2_WRITE16C(DISP_CMD_PORT, 0xe0); EBI2_WRITE16D(DISP_DATA_PORT,0x0F); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x2B); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x2A); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x0B); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x11); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x0B); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x57); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0xF2); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0x45); // 9 EBI2_WRITE16D(DISP_DATA_PORT,0x0A); // 10 EBI2_WRITE16D(DISP_DATA_PORT,0x15); // 11 EBI2_WRITE16D(DISP_DATA_PORT,0x05); // 12 EBI2_WRITE16D(DISP_DATA_PORT,0x0B); // 13 EBI2_WRITE16D(DISP_DATA_PORT,0x04); // 14 EBI2_WRITE16D(DISP_DATA_PORT,0x04); // 15 /* Negative Gamma Correction */ EBI2_WRITE16C(DISP_CMD_PORT, 0xe1); EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x18); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x19); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x0F); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x04); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x28); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x81); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0x3D); // 9 EBI2_WRITE16D(DISP_DATA_PORT,0x06); // 10 EBI2_WRITE16D(DISP_DATA_PORT,0x0B); // 11 EBI2_WRITE16D(DISP_DATA_PORT,0x0A); // 12 EBI2_WRITE16D(DISP_DATA_PORT,0x32); // 13 EBI2_WRITE16D(DISP_DATA_PORT,0x3A); // 14 EBI2_WRITE16D(DISP_DATA_PORT,0x0f); // 15 EBI2_WRITE16C(DISP_CMD_PORT,0x2a); // Set_column_address EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0xef); // 4 EBI2_WRITE16C(DISP_CMD_PORT,0x2b); // Set_Page_address EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x3f); // 4 EBI2_WRITE16C(DISP_CMD_PORT,0xe8); // Charge Sharing Control EBI2_WRITE16D(DISP_DATA_PORT,0x85); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x01); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x78); // 3 EBI2_WRITE16C(DISP_CMD_PORT,0x11); // Exit Sleep mdelay(120); /*-- bootlogo is displayed at oemsbl EBI2_WRITE16C(DISP_CMD_PORT,0x2c); // Write memory start for(y = 0; y < 320; y++) { int pixel = 0x0; for(x= 0; x < 240; x++) { EBI2_WRITE16D(DISP_DATA_PORT,pixel); // 1 } } mdelay(50); */ EBI2_WRITE16C(DISP_CMD_PORT,0x29); // Display On #endif }
static void do_AUO_init(struct platform_device *pdev) { int x,y; EBI2_WRITE16C(DISP_CMD_PORT,0x11); // Exit Sleep msleep(120); EBI2_WRITE16C(DISP_CMD_PORT, 0xb0); EBI2_WRITE16D(DISP_DATA_PORT,0x3f); EBI2_WRITE16D(DISP_DATA_PORT,0x3f); EBI2_WRITE16C(DISP_CMD_PORT, 0xb3); EBI2_WRITE16D(DISP_DATA_PORT,0x02); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x31); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16C(DISP_CMD_PORT, 0xb4); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16C(DISP_CMD_PORT, 0xc0); EBI2_WRITE16D(DISP_DATA_PORT,0x33); EBI2_WRITE16D(DISP_DATA_PORT,0x4f); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x10); EBI2_WRITE16D(DISP_DATA_PORT,0xa0); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x01); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16C(DISP_CMD_PORT, 0xc1); EBI2_WRITE16D(DISP_DATA_PORT,0x01); EBI2_WRITE16D(DISP_DATA_PORT,0x02); EBI2_WRITE16D(DISP_DATA_PORT,0x1a); EBI2_WRITE16D(DISP_DATA_PORT,0x60); EBI2_WRITE16D(DISP_DATA_PORT,0x60); msleep(25); EBI2_WRITE16C(DISP_CMD_PORT, 0xc3); EBI2_WRITE16D(DISP_DATA_PORT,0x01); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x28); EBI2_WRITE16D(DISP_DATA_PORT,0x08); EBI2_WRITE16D(DISP_DATA_PORT,0x08); msleep(25); EBI2_WRITE16C(DISP_CMD_PORT, 0xc4); EBI2_WRITE16D(DISP_DATA_PORT,0x11); EBI2_WRITE16D(DISP_DATA_PORT,0x01); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x00); //Gamma B EBI2_WRITE16C(DISP_CMD_PORT, 0xc8); //1 EBI2_WRITE16D(DISP_DATA_PORT,0x07); //2 EBI2_WRITE16D(DISP_DATA_PORT,0x19); //3 EBI2_WRITE16D(DISP_DATA_PORT,0x18); //4 EBI2_WRITE16D(DISP_DATA_PORT,0x14); //5 EBI2_WRITE16D(DISP_DATA_PORT,0x0c); //6 EBI2_WRITE16D(DISP_DATA_PORT,0x0b); //7 EBI2_WRITE16D(DISP_DATA_PORT,0x04); //8 EBI2_WRITE16D(DISP_DATA_PORT,0x03); //9 EBI2_WRITE16D(DISP_DATA_PORT,0x09); //10 EBI2_WRITE16D(DISP_DATA_PORT,0x0c); //11 EBI2_WRITE16D(DISP_DATA_PORT,0x00); //12 EBI2_WRITE16D(DISP_DATA_PORT,0x09); //13 EBI2_WRITE16D(DISP_DATA_PORT,0x03); //14 EBI2_WRITE16D(DISP_DATA_PORT,0x04); //15 EBI2_WRITE16D(DISP_DATA_PORT,0x0b); //16 EBI2_WRITE16D(DISP_DATA_PORT,0x0c); //17 EBI2_WRITE16D(DISP_DATA_PORT,0x14); //18 EBI2_WRITE16D(DISP_DATA_PORT,0x18); //19 EBI2_WRITE16D(DISP_DATA_PORT,0x19); //20 EBI2_WRITE16D(DISP_DATA_PORT,0x07); //21 EBI2_WRITE16D(DISP_DATA_PORT,0x00); //22 EBI2_WRITE16D(DISP_DATA_PORT,0x00); //23 //Gamma G EBI2_WRITE16C(DISP_CMD_PORT, 0xc9); //1 EBI2_WRITE16D(DISP_DATA_PORT,0x0b); //2 EBI2_WRITE16D(DISP_DATA_PORT,0x1a); //3 EBI2_WRITE16D(DISP_DATA_PORT,0x14); //4 EBI2_WRITE16D(DISP_DATA_PORT,0x14); //5 EBI2_WRITE16D(DISP_DATA_PORT,0x0c); //6 EBI2_WRITE16D(DISP_DATA_PORT,0x0a); //7 EBI2_WRITE16D(DISP_DATA_PORT,0x04); //8 EBI2_WRITE16D(DISP_DATA_PORT,0x03); //9 EBI2_WRITE16D(DISP_DATA_PORT,0x09); //10 EBI2_WRITE16D(DISP_DATA_PORT,0x0c); //11 EBI2_WRITE16D(DISP_DATA_PORT,0x00); //12 EBI2_WRITE16D(DISP_DATA_PORT,0x09); //13 EBI2_WRITE16D(DISP_DATA_PORT,0x03); //14 EBI2_WRITE16D(DISP_DATA_PORT,0x04); //15 EBI2_WRITE16D(DISP_DATA_PORT,0x0a); //16 EBI2_WRITE16D(DISP_DATA_PORT,0x0c); //17 EBI2_WRITE16D(DISP_DATA_PORT,0x14); //18 EBI2_WRITE16D(DISP_DATA_PORT,0x14); //19 EBI2_WRITE16D(DISP_DATA_PORT,0x1a); //20 EBI2_WRITE16D(DISP_DATA_PORT,0x0b); //21 EBI2_WRITE16D(DISP_DATA_PORT,0x00); //22 EBI2_WRITE16D(DISP_DATA_PORT,0x00); //23 //Gamma R EBI2_WRITE16C(DISP_CMD_PORT, 0xca); // 1 EBI2_WRITE16D(DISP_DATA_PORT,0x0b); // 2 EBI2_WRITE16D(DISP_DATA_PORT,0x1a); // 3 EBI2_WRITE16D(DISP_DATA_PORT,0x14); // 4 EBI2_WRITE16D(DISP_DATA_PORT,0x14); // 5 EBI2_WRITE16D(DISP_DATA_PORT,0x0c); // 6 EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 7 EBI2_WRITE16D(DISP_DATA_PORT,0x04); // 8 EBI2_WRITE16D(DISP_DATA_PORT,0x03); // 9 EBI2_WRITE16D(DISP_DATA_PORT,0x09); // 10 EBI2_WRITE16D(DISP_DATA_PORT,0x0c); // 11 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 12 EBI2_WRITE16D(DISP_DATA_PORT,0x09); // 13 EBI2_WRITE16D(DISP_DATA_PORT,0x03); // 14 EBI2_WRITE16D(DISP_DATA_PORT,0x04); // 15 EBI2_WRITE16D(DISP_DATA_PORT,0x0a); // 16 EBI2_WRITE16D(DISP_DATA_PORT,0x0c); // 17 EBI2_WRITE16D(DISP_DATA_PORT,0x14); // 18 EBI2_WRITE16D(DISP_DATA_PORT,0x14); // 19 EBI2_WRITE16D(DISP_DATA_PORT,0x1a); // 20 EBI2_WRITE16D(DISP_DATA_PORT,0x0b); // 21 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 22 EBI2_WRITE16D(DISP_DATA_PORT,0x00); // 23 EBI2_WRITE16D(DISP_CMD_PORT ,0xd0); EBI2_WRITE16D(DISP_DATA_PORT,0x23); EBI2_WRITE16D(DISP_DATA_PORT,0x53); EBI2_WRITE16D(DISP_DATA_PORT,0x02); EBI2_WRITE16D(DISP_DATA_PORT,0x38); EBI2_WRITE16D(DISP_DATA_PORT,0x30); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16C(DISP_CMD_PORT, 0xd2); EBI2_WRITE16D(DISP_DATA_PORT,0x01); EBI2_WRITE16D(DISP_DATA_PORT,0x22); EBI2_WRITE16C(DISP_CMD_PORT, 0x35); EBI2_WRITE16D(DISP_DATA_PORT,0x00); /* Tearing effect Control Parameter */ EBI2_WRITE16C(DISP_CMD_PORT, 0x44); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0xef); EBI2_WRITE16C(DISP_CMD_PORT, 0x36); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16C(DISP_CMD_PORT, 0x3a); EBI2_WRITE16D(DISP_DATA_PORT,0x55); EBI2_WRITE16C(DISP_CMD_PORT, 0x2a); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0xef); EBI2_WRITE16C(DISP_CMD_PORT, 0x2b); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x00); EBI2_WRITE16D(DISP_DATA_PORT,0x01); EBI2_WRITE16D(DISP_DATA_PORT,0x3f); //EBI2_WRITE16C(DISP_CMD_PORT,0x11); // Exit Sleep msleep(120); /* LGE_CHANGE_S: E0 [email protected] [2011-11-22] : BL control error fix */ #if 1 EBI2_WRITE16C(DISP_CMD_PORT,0x2c); // Write memory start for(y = 0; y < 320; y++) { int pixel = 0x0; for(x= 0; x < 240; x++) { EBI2_WRITE16D(DISP_DATA_PORT,pixel); } } msleep(30); #endif EBI2_WRITE16C(DISP_CMD_PORT,0x29); // Display On }