s5pc1xx: p1p2: Change AMOLED panel driver to auto sequence
authorDonghwa Lee <dh09.lee@samsung.com>
Fri, 27 Nov 2009 03:23:52 +0000 (12:23 +0900)
committerDonghwa Lee <dh09.lee@samsung.com>
Fri, 27 Nov 2009 03:23:52 +0000 (12:23 +0900)
drivers/video/Makefile
drivers/video/ams701ka.c
drivers/video/s5p-fb.c

index 60ba708..f8cb6d1 100644 (file)
@@ -38,6 +38,7 @@ COBJS-$(CONFIG_VIDEO_SM501) += sm501.o
 COBJS-$(CONFIG_VIDEO_SMI_LYNXEM) += smiLynxEM.o
 COBJS-$(CONFIG_VIDEO_VCXK) += bus_vcxk.o
 COBJS-$(CONFIG_S5PC1XXFB) += s5p-fb.o s5p-fimd.o s6e63m0.o
+#COBJS-$(CONFIG_S5PC1XXFB) += s5p-fb.o s5p-fimd.o ams701ka.o
 #COBJS-$(CONFIG_S5PC1XXFB) += s5p-fb.o s5p_fimd_aquila.o tl2796_aquila.o
 
 #COBJS-$(CONFIG_S5PC1XXFB) += s5p-dualfb.o s5p-dualfimd.o tl2796_dual.o
index 44784b8..d44a5fe 100644 (file)
@@ -42,6 +42,62 @@ struct s5pc110_gpio *gpio = (struct s5pc110_gpio *) S5PC110_GPIO_BASE;
 
 #define S5PCFB_C110_SDO_READ   gpio_get_value(&gpio->gpio_mp0_4, 4)
 
+const unsigned short SEQ_DISPLAY_ON[] = {
+       0x12, 0x00df,
+       SLEEPMSEC, 1,
+       0x2e, 0x0605,
+       SLEEPMSEC, 1,
+       0x30, 0x2307,
+       0x31, 0x161E,
+       0xf4, 0x0003,
+       ENDDEF, 0x0000
+};
+
+const unsigned short SEQ_MANUAL_DISPLAY_ON[] = {
+       0x12, 0x0001,
+       SLEEPMSEC, 1,
+       0x12, 0x0003,
+       SLEEPMSEC, 1,
+       0x12, 0x0007,
+       SLEEPMSEC, 1,
+       0x2e, 0x0605,
+       SLEEPMSEC, 1,
+       0x30, 0x2307,
+       0x31, 0x161E,
+       SLEEPMSEC, 5,
+       0x12, 0x000f,
+       SLEEPMSEC, 10,
+       0x12, 0x001f,
+       SLEEPMSEC, 10,
+
+       0xf4, 0x0003,
+
+       ENDDEF, 0x0000
+};
+
+const unsigned short SEQ_DISPLAY_OFF[] = {
+       0x12, 0x000f,
+       0x12, 0x0007,
+       SLEEPMSEC, 1,   /* FIXME */
+       0x12, 0x0001,
+       0x12, 0x0000,
+       SLEEPMSEC, 1,   /* FIXME */
+       ENDDEF, 0x0000
+};
+
+const unsigned short SEQ_STANDBY_ON[] = {
+       0x02, 0x2301,
+
+       ENDDEF, 0x0000
+};
+
+const unsigned short SEQ_STANDBY_OFF[] = {
+       0x02, 0x2300,
+
+       ENDDEF, 0x0000
+};
+
+
 const unsigned short GAMMA_SETTING[] = {
        0x3f, 0x0000,   /* gamma setting : ams701ka */
 
@@ -64,25 +120,6 @@ const unsigned short GAMMA_SETTING[] = {
        0x4b, 0x00C7,
 
 #if 0
-       /* Low Red Gamma */
-       0x4c, 0x005f,
-       0x4d, 0x0001,
-       0x4e, 0x0009,
-       0x4f, 0x0063,
-
-       /* Low Green Gamma */
-       0x50, 0x007f,
-       0x51, 0x005f,
-       0x52, 0x0005,
-       0x53, 0x005f,
-
-       /* Low Blue Gamma */
-       0x54, 0x0002,
-       0x55, 0x0002,
-       0x56, 0x0002,
-       0x57, 0x0002,
-#endif
-
        0xb0, 0x0002,
        0xb1, 0x0068,
        0xb2, 0x007f,
@@ -106,74 +143,48 @@ const unsigned short GAMMA_SETTING[] = {
        0xc2, 0x0005,
        0xc3, 0x005f,
        0xc4, 0x0002,
+#endif
 
        ENDDEF, 0x0000
-
-
-};
-
-const unsigned short SEQ_SLEEP_OUT[] = {
-       0x02, 0x2300,   /* Sleep Out */
-       SLEEPMSEC, 1,
-       ENDDEF, 0x0000
 };
-
 const unsigned short MANUAL_POWER_ON_SETTING[] = {
-       0x06, 0x4000,
-       0x12, 0x0040,
-       ENDDEF, 0x0000
-};
-
-
-const unsigned short MANUAL_LTPS_SETTING[] = {
        0x06, 0x0000,
+       
+       SLEEPMSEC, 30,  /* FIXME */
        0x06, 0x0001,
-       SLEEPMSEC, 1,
-       0x06, 0x0003,
-       SLEEPMSEC, 5,
+#if 1
+       SLEEPMSEC, 30,  /* FIXME */
+       0x06, 0x0005,
+       SLEEPMSEC, 30,  /* FIXME */
        0x06, 0x0007,
-       SLEEPMSEC, 10,
+       SLEEPMSEC, 30,  /* FIXME */
        0x06, 0x000f,
-       SLEEPMSEC, 50,
+       SLEEPMSEC, 30,  /* FIXME */
        0x06, 0x001f,
-       SLEEPMSEC, 5,
+       SLEEPMSEC, 30,  /* FIXME */
        0x06, 0x003f,
-       SLEEPMSEC, 5,
+       SLEEPMSEC, 30,  /* FIXME */
        0x06, 0x007f,
-       SLEEPMSEC, 5,
+       SLEEPMSEC, 30,  /* FIXME */
        0x06, 0x00ff,
-       SLEEPMSEC, 5,
+       SLEEPMSEC, 30,  /* FIXME */
        0x06, 0x08ff,
-       SLEEPMSEC, 10,
+       SLEEPMSEC, 30,  /* FIXME */
 
        0x03, 0x134A,   /* ETC Register setting */
-       0x04, 0x86a4,   /* LTPS Power on setting VCIR=2.7V */
-       0x32, 0x0002,
-       0x3f, 0x0004,
+//     0x04, 0x86a4,   /* LTPS Power on setting VCIR=2.7V Display is not clean */
+       0x04, 0x8664,   /* LTPS Power on setting VCIR=2.5V */
 
        0x14, 0x0808,   /* VFP, VBP Register setting */
        0x15, 0x3090,   /* HSW,HFP,HBP Register setting */
+#endif
        ENDDEF, 0x0000
 
 };
 
-const unsigned short SEQ_MANUAL_DISPLAY_ON[] = {
-       0x12, 0x0001,
-       SLEEPMSEC, 1,
-       0x12, 0x0003,
-       SLEEPMSEC, 1,
-       0x12, 0x0007,
-       SLEEPMSEC, 1,
-       0x12, 0x000f,
-       SLEEPMSEC, 1,
-       0x2e, 0x0605,
-       SLEEPMSEC, 1,
-       0x30, 0x0f11,
-       0x31, 0x0709,
-       SLEEPMSEC, 5,
-       0x12, 0x001f,
-       SLEEPMSEC, 10,
-
+const unsigned short SEQ_SLEEP_OUT[] = {
+       0x02, 0x2300,           /* Sleep Out */
+       SLEEPMSEC, 1,   /* FIXME */
        ENDDEF, 0x0000
 };
 
@@ -195,55 +206,6 @@ const unsigned short ACL_ON_WINDOW_SETTING[] = {
        ENDDEF, 0x0000
 };
 
-const unsigned short SEQ_MANUAL_DISPLAY_OFF[] = {
-       0x12, 0x000f,
-       SLEEPMSEC, 1,
-       0x2e, 0x0604,
-       SLEEPMSEC, 1,
-       0x12, 0x0001,
-       SLEEPMSEC, 1,
-       0x12, 0x0000,
-       SLEEPMSEC, 2,
-
-       ENDDEF, 0x0000
-};
-
-const unsigned short SEQ_STANDBY_ON[] = {
-       0x02, 0x2301,
-
-       ENDDEF, 0x0000
-};
-
-const unsigned short SEQ_STANDBY_OFF[] = {
-       0x02, 0x2300,
-
-       ENDDEF, 0x0000
-};
-
-const unsigned short SEQ_MANUAL_LTPS_OFF[] = {
-       0x06, 0x08ff,
-       SLEEPMSEC, 1,
-       0x06, 0x03ff,
-       SLEEPMSEC, 5,
-       0x06, 0x007f,
-       SLEEPMSEC, 5,
-       0x06, 0x003f,
-       SLEEPMSEC, 5,
-       0x06, 0x001f,
-       SLEEPMSEC, 5,
-       0x06, 0x000f,
-       SLEEPMSEC, 5,
-       0x06, 0x0007,
-       SLEEPMSEC, 5,
-       0x06, 0x0003,
-       SLEEPMSEC, 5,
-       0x06, 0x0001,
-       SLEEPMSEC, 5,
-       0x06, 0x0000,
-
-       ENDDEF, 0x0000
-
-};
 static void ams701ka_c110_spi_write_byte(unsigned char address, unsigned short command)
 {
        int     j;
@@ -359,13 +321,8 @@ static void ams701ka_panel_send_sequence(const unsigned short *wbuf)
        }
 }
 
-/* test */
-
-
 void lcd_panel_power_on(void)
 {
-       /* set gpio data for MLCD_ON to HIGH */
-
        /* set gpio data for MLCD_RST to HIGH */
        gpio_set_value(&gpio->gpio_mp0_5, 5, 1);
        gpio_set_value(&gpio->gpio_mp0_5, 5, 0);
@@ -376,16 +333,12 @@ void lcd_panel_power_on(void)
        gpio_set_value(&gpio->gpio_j1, 3, 1);
        udelay(100000);
 
-       udelay(10000);
 
 
        ams701ka_panel_send_sequence(GAMMA_SETTING);
-       ams701ka_panel_send_sequence(MANUAL_POWER_ON_SETTING);
        ams701ka_panel_send_sequence(SEQ_SLEEP_OUT);
-       ams701ka_panel_send_sequence(MANUAL_LTPS_SETTING);
-       ams701ka_panel_send_sequence(SEQ_MANUAL_DISPLAY_ON);
-
-       udelay(90000);
+       ams701ka_panel_send_sequence(MANUAL_POWER_ON_SETTING);
+       ams701ka_panel_send_sequence(SEQ_DISPLAY_ON);
        ams701ka_panel_send_sequence(ACL_ON_DISPLAY_SETTING);
 }
 
@@ -403,12 +356,12 @@ static inline void ams701ka_c110_panel_hw_reset(void)
 
 void lcd_panel_enable(void)
 {
-       ams701ka_panel_send_sequence(SEQ_MANUAL_DISPLAY_ON);
+       ams701ka_panel_send_sequence(SEQ_DISPLAY_ON);
 }
 
 static void ams701ka_panel_disable(void)
 {
-       ams701ka_panel_send_sequence(SEQ_MANUAL_DISPLAY_OFF);
+       ams701ka_panel_send_sequence(SEQ_DISPLAY_OFF);
 }
 
 
index 656f477..48e0e4d 100644 (file)
 #define PANEL_WIDTH            480
 #define PANEL_HEIGHT           800
 #define S5P_LCD_BPP            32
-
+/* AMOLED Panel 
+#define PANEL_WIDTH            480
+#define PANEL_HEIGHT           800
+#define S5P_LCD_BPP            32
+*/
 extern void tl2796_panel_power_on(void);
 extern void tl2796_panel_enable(void);
 extern void tl2796_panel_init(void);
@@ -126,6 +130,15 @@ vidinfo_t panel_info = {
                .vl_bfw         = 8,
                .vl_efw         = 8,
                */
+               /* AMS701KA AMOLED Panel 
+               .vl_hpw         = 30,
+               .vl_blw         = 114,
+               .vl_elw         = 48,
+
+               .vl_vpw         = 2,
+               .vl_bfw         = 6,
+               .vl_efw         = 8,
+               */
 };
 
 static void s5pc_lcd_init_mem(void *lcdbase, vidinfo_t *vid)