diff options
author | sl47.kim <sl47.kim@samsung.com> | 2010-10-24 14:15:22 -0700 |
---|---|---|
committer | Arve Hjønnevåg <arve@android.com> | 2011-11-17 17:51:36 -0800 |
commit | d9ad4d14c342e15c2bc5ee606060c7c79274cfb7 (patch) | |
tree | aeb03136a0e12871b4c27c417f01f49409ddec8d | |
parent | 525b81bf17e6cccb0a1c9a5ddb04654511f7b683 (diff) | |
download | kernel_samsung_crespo-d9ad4d14c342e15c2bc5ee606060c7c79274cfb7.zip kernel_samsung_crespo-d9ad4d14c342e15c2bc5ee606060c7c79274cfb7.tar.gz kernel_samsung_crespo-d9ad4d14c342e15c2bc5ee606060c7c79274cfb7.tar.bz2 |
S5PC11X: LCD: Remove the wrong gamma values in s6e63m0_SEQ_SETTING
Remove the wrong gamma values for setting the correct brightness value after sleep/wakeup
Change-Id: Ib278f389cdd0669105e0903dbc59650be50f33cc
Signed-off-by: sl47.kim <sl47.kim@samsung.com>
-rw-r--r-- | drivers/video/samsung/s3cfb_tl2796.c | 77 |
1 files changed, 35 insertions, 42 deletions
diff --git a/drivers/video/samsung/s3cfb_tl2796.c b/drivers/video/samsung/s3cfb_tl2796.c index 6f8cc97..c3781c4 100644 --- a/drivers/video/samsung/s3cfb_tl2796.c +++ b/drivers/video/samsung/s3cfb_tl2796.c @@ -37,6 +37,7 @@ struct s5p_lcd{ int ldi_enable; + int bl; struct device *dev; struct spi_device *g_spi; struct backlight_device *bl_dev; @@ -63,7 +64,7 @@ const u16 s6e63m0_SEQ_STANDBY_OFF[] = { ENDDEF, 0x0000 }; -const u16 s6e63m0_SEQ_SETTING[] = { +const u16 s6e63m0_SEQ_DISPLAY_SETTING[] = { SLEEPMSEC, 120, 0x0F8, 0x101, 0x127, @@ -80,31 +81,10 @@ const u16 s6e63m0_SEQ_SETTING[] = { 0x0F7, 0x103, 0x100, 0x100, - 0x0FA, - 0x102, - 0x118, - 0x108, - 0x124, - 0x15F, - 0x150, - 0x12D, - 0x1B6, - 0x1B9, - 0x1A7, - 0x1AD, - 0x1B1, - 0x19F, - 0x1BE, - 0x1C0, - 0x1B5, - 0x100, - 0x1A0, - 0x100, - 0x1A4, - 0x100, - 0x1DB, - 0x0FA, - 0x103, + ENDDEF, 0x0000 +}; + +const u16 s6e63m0_SEQ_ETC_SETTING[] = { 0x0F6, 0x100, 0x18C, 0x107, @@ -257,14 +237,14 @@ static u32 gamma_lookup(u8 brightness, u32 val, int c) pr_debug("%s: looking for %3d %08x c %d, %08x, " "found %08x:%08x, v %7d:%7d, ret %7d\n", __func__, brightness, val, c, b, bl, bh, vl, vh, ret); - + return ret; } static void setup_gamma_regs(u16 gamma_regs[], u8 brightness) { int c, i; - for(c = 0; c < 3; c++) { + for (c = 0; c < 3; c++) { u32 adj; u32 v0 = gamma_lookup(brightness, BV_0, c); u32 vx[6]; @@ -361,12 +341,31 @@ static void s6e63m0_panel_send_sequence(struct s5p_lcd *lcd, } } } + +static void update_brightness(struct s5p_lcd *lcd) +{ + u16 gamma_regs[27]; + + gamma_regs[0] = 0x0FA; + gamma_regs[1] = 0x102; + gamma_regs[23] = 0x0FA; + gamma_regs[24] = 0x103; + gamma_regs[25] = ENDDEF; + gamma_regs[26] = 0x0000; + + setup_gamma_regs(gamma_regs + 2, lcd->bl); + s6e63m0_panel_send_sequence(lcd, gamma_regs); +} + static void tl2796_ldi_enable(struct s5p_lcd *lcd) { - s6e63m0_panel_send_sequence(lcd, s6e63m0_SEQ_SETTING); - s6e63m0_panel_send_sequence(lcd, s6e63m0_SEQ_STANDBY_OFF); + s6e63m0_panel_send_sequence(lcd, s6e63m0_SEQ_DISPLAY_SETTING); + update_brightness(lcd); + s6e63m0_panel_send_sequence(lcd, s6e63m0_SEQ_ETC_SETTING); + lcd->ldi_enable = 1; } + static void tl2796_ldi_disable(struct s5p_lcd *lcd) { s6e63m0_panel_send_sequence(lcd, s6e63m0_SEQ_STANDBY_ON); @@ -378,27 +377,21 @@ static int s5p_bl_update_status(struct backlight_device *bd) struct s5p_lcd *lcd = bl_get_data(bd); int bl = bd->props.brightness; - u16 gamma_regs[] = { - [0] = 0x0FA, - [1] = 0x102, - [23] = 0x0FA, - [24] = 0x103, - [25] = ENDDEF, - [26] = 0x0000, - }; pr_debug("\nupdate status brightness %d\n", bd->props.brightness); - if (!lcd->ldi_enable) - return 0; if (bl < 0 || bl > 255) return -EINVAL; + lcd->bl = bl; + + if (!lcd->ldi_enable) + return 0; + pr_debug("\n bl :%d\n", bl); - setup_gamma_regs(gamma_regs + 2, bl); - s6e63m0_panel_send_sequence(lcd, gamma_regs); + update_brightness(lcd); return 0; } |