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; }
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 }
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 }
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); } } }
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 }
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 }
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; }
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); }
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); } } }
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 }
static void lcm_setbacklight(unsigned int level) { if(level > 255) level = 255; send_ctrl_cmd(0x51); send_data_cmd(level); }
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); }
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 } }
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); }
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); }
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; }
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); }
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); } } }
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); }