mirror of
https://github.com/armbian/linux.git
synced 2026-01-06 10:13:00 -08:00
rk30 phone loquat: modify lcd init registers
This commit is contained in:
@@ -27,7 +27,7 @@
|
||||
/* Base */
|
||||
#define OUT_TYPE SCREEN_RGB
|
||||
|
||||
#define OUT_FACE OUT_D888_P666 //OUT_P888
|
||||
#define OUT_FACE OUT_D888_P666// OUT_D888_P666 //OUT_P888
|
||||
|
||||
|
||||
#define OUT_CLK 50000000 //50MHz
|
||||
@@ -40,7 +40,7 @@
|
||||
#define H_FP 130
|
||||
|
||||
#define V_PW 3
|
||||
#define V_BP 23
|
||||
#define V_BP 20//23
|
||||
#define V_VD 960
|
||||
#define V_FP 12
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
#define bits_9
|
||||
#ifdef bits_9 //9bits
|
||||
#define Write_ADDR(cmd) spi_write_9bit(0, cmd)
|
||||
#define Write_DATA(dat) spi_write_9bit(1, dat)
|
||||
#define Write_DATA(dat) spi_write_9bit(0x100, dat)
|
||||
#else //16bits
|
||||
#define Write_ADDR(cmd) spi_write_16bit(0, cmd)
|
||||
#define Write_DATA(dat) spi_write_16bit(1, dat)
|
||||
@@ -100,8 +100,6 @@
|
||||
#endif
|
||||
|
||||
|
||||
#define DRVDelayUs(i) udelay(i)
|
||||
|
||||
static struct rk29lcd_info *gLcd_info = NULL;
|
||||
int lcd_init(void);
|
||||
int lcd_standby(u8 enable);
|
||||
@@ -110,27 +108,24 @@ int lcd_standby(u8 enable);
|
||||
/* spi write a data frame,type mean command or data */
|
||||
int spi_write_9bit(u32 type, u32 value)
|
||||
{
|
||||
u32 i = 0;
|
||||
|
||||
if(type != 0 && type != 1)
|
||||
return -1;
|
||||
|
||||
// if(type != 0 && type != 1)
|
||||
// return -1;
|
||||
/*make a data frame of 9 bits,the 8th bit 0:mean command,1:mean data*/
|
||||
value &= 0xff;
|
||||
value |= (type << 8);
|
||||
|
||||
value |= type;
|
||||
type = 9;
|
||||
CS_CLR();
|
||||
DRVDelayUs(2);
|
||||
for(i = 0; i < 9; i++) //reg
|
||||
{
|
||||
//udelay(2);
|
||||
while(type--) {
|
||||
CLK_CLR();
|
||||
if(value & (1 << (8-i)))
|
||||
if(value & 0x100)
|
||||
TXD_SET();
|
||||
else
|
||||
TXD_CLR();
|
||||
DRVDelayUs(2);
|
||||
value <<= 1;
|
||||
//udelay(2);
|
||||
CLK_SET();
|
||||
DRVDelayUs(2);
|
||||
//udelay(2);
|
||||
}
|
||||
CS_SET();
|
||||
TXD_SET();
|
||||
@@ -145,17 +140,18 @@ int lcd_init(void)
|
||||
gLcd_info->io_init();
|
||||
|
||||
printk("lcd hj050a_06a...\n");
|
||||
|
||||
#if 1
|
||||
gpio_direction_output(LCD_RST_PORT, 0);
|
||||
usleep_range(1*1000, 3*1000);
|
||||
usleep_range(2*1000, 3*1000);
|
||||
gpio_set_value(LCD_RST_PORT, 1);
|
||||
usleep_range(5*1000, 7*1000);
|
||||
usleep_range(7*1000, 7*1000);
|
||||
#endif
|
||||
|
||||
Write_ADDR(0x0001); // Software Reset
|
||||
mdelay(10);
|
||||
// Write_ADDR(0x0001); // Software Reset
|
||||
// msleep(100);
|
||||
|
||||
Write_ADDR(0x0011); // Sleep Out
|
||||
mdelay(60);
|
||||
msleep(60);
|
||||
|
||||
//<<<<<<<<<<<<<<<MANUFACTURE COMMAND ACCESS PROTECT>>>>>>>>>>>>>>>
|
||||
Write_ADDR(0x00B0); //Manufacture Command Access Protect
|
||||
@@ -172,6 +168,19 @@ int lcd_init(void)
|
||||
Write_DATA(0x0045);
|
||||
Write_DATA(0x0000);
|
||||
|
||||
//<<<<<<<<<<<<BACK LIGHT CONTROL SET>>>>>>>>>>>>
|
||||
Write_ADDR(0x00B8); //Back Light Control(1)
|
||||
Write_DATA(0x0000); //P1: CABCON = 0;
|
||||
Write_DATA(0x001A); //P2: SSD_THRE = 1A;
|
||||
Write_DATA(0x0018); //P3: SD_THRE = 18;
|
||||
Write_DATA(0x0002); //P4: IPK_INTPO = 02;
|
||||
Write_DATA(0x0040); //P5: IPK_TRANS = 40;
|
||||
|
||||
Write_ADDR(0x00BB); //Back Light Control(1)
|
||||
Write_DATA(0x0000); //LEDPWME[3] = 1,PWMWM[1] = 0,PWMON[0] = 0;
|
||||
Write_DATA(0x00FF); //BDCV = FF;
|
||||
Write_DATA(0x0001); //PWMDIC=1
|
||||
|
||||
//<<<<<<<<<<<<PANEL DRIVING SETTING>>>>>>>>>>>>
|
||||
Write_ADDR(0x00C0); //PANEL DRIVING SETTING 1 (36h=00)
|
||||
Write_DATA(0x000B); //BLREV[5:4];REV[3];UD[2]=0:forward;BGR[1]=1:RGB->BGR;SS=1:S1920->S1
|
||||
@@ -184,11 +193,11 @@ int lcd_init(void)
|
||||
|
||||
Write_ADDR(0x00C1); //PANEL DRIVING SETTING 2
|
||||
Write_DATA(0x0000); //GDS_MODE = 0 : GIP Ctrl(single scan)
|
||||
Write_DATA(0x0050); //LINEINV[6:4]:2 Line inversion; MFPOL[1]:No Phase inversion; PNSER[0]:Spatial mode1
|
||||
Write_DATA(0x0003); //SEQMODE[7]:Source Pre-charge Mode; SEQGND[3:0]: GND Pre-charge 3clk
|
||||
Write_DATA(0x0022); //SEQVN[7:4]:VCL pre-charge 2clk ;SEQVP[3:0]:VCL pre-charge 2clk
|
||||
Write_DATA(0x0012); //DPM[7:6]: ;GEQ2W[5:3]/GEQ1W[2:0]:Gate pre-charge
|
||||
Write_DATA(0x0008); //SDT[5:0] = 8 : Source output delay
|
||||
Write_DATA(0x0010); //LINEINV[6:4]:2 Line inversion; MFPOL[1]:No Phase inversion; PNSER[0]:Spatial mode1
|
||||
Write_DATA(0x0004); //SEQMODE[7]:Source Pre-charge Mode; SEQGND[3:0]: GND Pre-charge 3clk
|
||||
Write_DATA(0x0088); //SEQVN[7:4]:VCL pre-charge 2clk ;SEQVP[3:0]:VCL pre-charge 2clk
|
||||
Write_DATA(0x001B); //DPM[7:6]: ;GEQ2W[5:3]/GEQ1W[2:0]:Gate pre-charge
|
||||
Write_DATA(0x0001); //SDT[5:0] = 8 : Source output delay
|
||||
Write_DATA(0x0060); //PSEUDO_EN = 0;
|
||||
Write_DATA(0x0001); //GEM
|
||||
|
||||
@@ -210,46 +219,75 @@ int lcd_init(void)
|
||||
Write_DATA(0x00FE); //GOFF_R[15:8]
|
||||
Write_DATA(0x0003); //GOFF_R[17:16]
|
||||
|
||||
//<<<<<<<<<<TCON Unusual Operation Setting>>>>>>>>>>
|
||||
Write_ADDR(0x00C7); //TCON Unusual Operation Setting
|
||||
Write_DATA(0x0000); //P1:
|
||||
Write_DATA(0x0000); //P2:
|
||||
Write_DATA(0x0000); //P3:
|
||||
Write_DATA(0x0000); //P4:
|
||||
Write_DATA(0x0000); //P5:
|
||||
Write_DATA(0x0000); //P6:
|
||||
Write_DATA(0x0000); //P7:
|
||||
Write_DATA(0x0000); //P8:
|
||||
Write_DATA(0x0000); //P9:
|
||||
Write_DATA(0x0000); //P10:
|
||||
Write_DATA(0x0000); //P11:
|
||||
Write_DATA(0x0000); //P12:
|
||||
Write_DATA(0x0000); //P13:
|
||||
Write_DATA(0x0000); //P14:
|
||||
|
||||
//<<<<<<<<<<Gamma Setting>>>>>>>>>>
|
||||
Write_ADDR(0x00C8); //Gamma Setting
|
||||
Write_DATA(0x0000);
|
||||
Write_DATA(0x0008);
|
||||
Write_DATA(0x0010);
|
||||
Write_DATA(0x0003);
|
||||
Write_DATA(0x000F);
|
||||
Write_DATA(0x0015);
|
||||
Write_DATA(0x0018);
|
||||
Write_DATA(0x001A);
|
||||
Write_DATA(0x0023);
|
||||
Write_DATA(0x0026);
|
||||
Write_DATA(0x0026);
|
||||
Write_DATA(0x0023);
|
||||
Write_DATA(0x001A);
|
||||
Write_DATA(0x0012);
|
||||
Write_DATA(0x000C);
|
||||
Write_DATA(0x0006);
|
||||
Write_DATA(0x0000);
|
||||
Write_DATA(0x0008);
|
||||
Write_DATA(0x0010);
|
||||
Write_DATA(0x001A);
|
||||
Write_DATA(0x0023);
|
||||
Write_DATA(0x0026);
|
||||
Write_DATA(0x0026);
|
||||
Write_DATA(0x0023);
|
||||
Write_DATA(0x001A);
|
||||
Write_DATA(0x0012);
|
||||
Write_DATA(0x000C);
|
||||
Write_DATA(0x0006);
|
||||
Write_DATA(0x0025);
|
||||
Write_DATA(0x0024);
|
||||
Write_DATA(0x0021);
|
||||
Write_DATA(0x001E);
|
||||
Write_DATA(0x0015);
|
||||
Write_DATA(0x000A);
|
||||
|
||||
//<<<<<<<<<<<TIG Mode Setting>>>>>>>>>>>
|
||||
Write_ADDR(0x00CA); //TIG Mode Setting
|
||||
Write_DATA(0x00FF); //P1:
|
||||
Write_DATA(0x0007); //P2:
|
||||
Write_DATA(0x0003);
|
||||
Write_DATA(0x000F);
|
||||
Write_DATA(0x0015);
|
||||
Write_DATA(0x0018);
|
||||
Write_DATA(0x001A);
|
||||
Write_DATA(0x0023);
|
||||
Write_DATA(0x0025);
|
||||
Write_DATA(0x0024);
|
||||
Write_DATA(0x0021);
|
||||
Write_DATA(0x001E);
|
||||
Write_DATA(0x0015);
|
||||
Write_DATA(0x000A);
|
||||
|
||||
//<<<<<<<<<<COLOR ENHANCEMENT SETTING>>>>>>>>>>
|
||||
Write_ADDR(0x00C9); //COLOR ENHANCEMENT SETTING
|
||||
Write_DATA(0x0000); //CE_ON = 0;
|
||||
Write_DATA(0x0080);
|
||||
Write_DATA(0x0080);
|
||||
Write_DATA(0x0080);
|
||||
Write_DATA(0x0080);
|
||||
Write_DATA(0x0080);
|
||||
Write_DATA(0x0080);
|
||||
Write_DATA(0x0080);
|
||||
Write_DATA(0x0080);
|
||||
Write_DATA(0x0000);
|
||||
Write_DATA(0x0000);
|
||||
Write_DATA(0x0002);
|
||||
Write_DATA(0x0080);
|
||||
|
||||
//<<<<<<<<<<<<<<<<<<<<POWER SETTING>>>>>>>>>>>>>>>>>>>
|
||||
Write_ADDR(0x00D0); //POWER SETTING(CHARGE PUMP)
|
||||
Write_DATA(0x0074); //P1:VC1 = 7; DC23 = 4
|
||||
Write_DATA(0x0029); //P2:BT3 = 2; BT2 = 1
|
||||
Write_DATA(0x00FF); //P3:VLMT1M = D; VLMT1 = D
|
||||
Write_DATA(0x00BB); //P4:VC3 = B; VC2 =B
|
||||
Write_DATA(0x0010); //P5:VLMT2B = 0; VLMT2 = 0A
|
||||
Write_DATA(0x002F); //P6:VLMT3B = 0; VLMT3 = 0F
|
||||
Write_DATA(0x0054); //P1:VC1 = 7; DC23 = 4
|
||||
Write_DATA(0x0019); //P2:BT3 = 2; BT2 = 1 09
|
||||
Write_DATA(0x00DD); //P3:VLMT1M = D; VLMT1 = D
|
||||
Write_DATA(0x0016); //P4:VC3 = B; VC2 =B 3B
|
||||
Write_DATA(0x0092); //P5:VLMT2B = 0; VLMT2 = 0A
|
||||
Write_DATA(0x00A1); //P6:VLMT3B = 0; VLMT3 = 0F A1
|
||||
Write_DATA(0x0000); //P7:VBSON = 0; VBS = 00
|
||||
Write_DATA(0x00C0); //P8:VGGON = 0; LVGLON = 0; VC6 = 0
|
||||
Write_DATA(0x00CC); //P9:DC56 = ?
|
||||
@@ -266,8 +304,8 @@ int lcd_init(void)
|
||||
|
||||
//<<<<<<<<<<<<<<<VPLVL/VNLVL SETTING>>>>>>>>>>>>>>>
|
||||
Write_ADDR(0x00D5); //VPLVL/VNLVL SETTING
|
||||
Write_DATA(0x002A); //P1:PVH = 24
|
||||
Write_DATA(0x002A); //P2:NVH = 24
|
||||
Write_DATA(0x0020); //P1:PVH = 24
|
||||
Write_DATA(0x0020); //P2:NVH = 24
|
||||
|
||||
//<<<<<<<<<<<<<<<DSI Setting>>>>>>>>>>>>>>>>
|
||||
Write_ADDR(0x00D6);
|
||||
@@ -276,21 +314,22 @@ int lcd_init(void)
|
||||
//<<<<<<<<<<<<<<<VCOMDC SETTING>>>>>>>>>>>>>>>
|
||||
Write_ADDR(0x00DE); //VCOMDC SETTING
|
||||
Write_DATA(0x0003); //P1:WCVDCB.[1] = 1; WCVDCF.[0] = 1
|
||||
Write_DATA(0x0090);
|
||||
Write_DATA(0x0090);
|
||||
Write_DATA(0x005A); //P2:VDCF.[7:0] = ? //57
|
||||
Write_DATA(0x005A); //P3:VDCB.[7:0] = ? //57
|
||||
|
||||
|
||||
//<<<<<<<<<<<<<<<MANUFACTURE COMMAND ACCESS PROTECT>>>>>>>>>>>>>>>
|
||||
Write_ADDR(0x00B0); //MANUFACTURE COMMAND ACCESS PROTECT
|
||||
Write_DATA(0x0003); //
|
||||
mdelay(50);
|
||||
msleep(17);
|
||||
|
||||
Write_ADDR(0x0036); //
|
||||
Write_DATA(0x0000); //
|
||||
mdelay(17);
|
||||
Write_ADDR(0x003A); //Set Pixel_Format
|
||||
Write_DATA(0x0077); //
|
||||
mdelay(17);
|
||||
Write_ADDR(0x0029); // Display On
|
||||
msleep(17);
|
||||
Write_ADDR(0x003A); //
|
||||
Write_DATA(0x0060); //
|
||||
msleep(17);
|
||||
Write_ADDR(0x0029); //
|
||||
|
||||
if(gLcd_info)
|
||||
gLcd_info->io_deinit();
|
||||
@@ -316,8 +355,9 @@ int lcd_standby(u8 enable)
|
||||
Write_ADDR(0x00b1);
|
||||
Write_DATA(0x0001);
|
||||
msleep(1); //wait at least 1ms
|
||||
#endif
|
||||
gpio_direction_output(LCD_RST_PORT, 0);
|
||||
#endif
|
||||
|
||||
if(gLcd_info)
|
||||
gLcd_info->io_deinit();
|
||||
|
||||
@@ -376,6 +416,5 @@ void set_lcd_info(struct rk29fb_screen *screen, struct rk29lcd_info *lcd_info )
|
||||
gpio_free(LCD_RST_PORT);
|
||||
printk("%s: request LCD_RST_PORT error\n", __func__);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user