diff options
author | Donghwa Lee <dh09.lee@samsung.com> | 2012-04-26 18:52:26 +0000 |
---|---|---|
committer | Anatolij Gustschin <agust@denx.de> | 2012-05-25 09:15:09 +0200 |
commit | 3d02408665b1622ef50518637e36ac4c53750c08 (patch) | |
tree | 8b105ebda61e46ea81795e7bf7e0c73f3d48c448 | |
parent | 8ecb4c6473e5f88ae343c621c3b5bac513f5a797 (diff) | |
download | u-boot-imx-3d02408665b1622ef50518637e36ac4c53750c08.zip u-boot-imx-3d02408665b1622ef50518637e36ac4c53750c08.tar.gz u-boot-imx-3d02408665b1622ef50518637e36ac4c53750c08.tar.bz2 |
LCD: support another s6e8ax0 panel type
s6e8ax0 panel has many panel of types. This patch support another panel
on TIZEN lunchbox board(HWREVISION 2). This panel has reversed panel
display type. So, I had added necessary command.
Signed-off-by: Donghwa Lee <dh09.lee@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Acked-by: Minkyu Kang <mk7.kang@samsung.com>
Signed-off-by: Anatolij Gustschin <agust@denx.de>
-rw-r--r-- | arch/arm/include/asm/arch-exynos/mipi_dsim.h | 1 | ||||
-rw-r--r-- | board/samsung/trats/trats.c | 8 | ||||
-rw-r--r-- | drivers/video/s6e8ax0.c | 17 |
3 files changed, 25 insertions, 1 deletions
diff --git a/arch/arm/include/asm/arch-exynos/mipi_dsim.h b/arch/arm/include/asm/arch-exynos/mipi_dsim.h index ef6a3d1..9a7cbeb 100644 --- a/arch/arm/include/asm/arch-exynos/mipi_dsim.h +++ b/arch/arm/include/asm/arch-exynos/mipi_dsim.h @@ -329,6 +329,7 @@ struct mipi_dsim_lcd_device { char *name; int id; int bus_id; + int reverse_panel; struct mipi_dsim_device *master; void *platform_data; diff --git a/board/samsung/trats/trats.c b/board/samsung/trats/trats.c index 3085de1..25f5caf 100644 --- a/board/samsung/trats/trats.c +++ b/board/samsung/trats/trats.c @@ -53,6 +53,11 @@ u32 get_board_rev(void) static void check_hw_revision(void); +static int hwrevision(int rev) +{ + return (board_rev & 0xf) == rev; +} + int board_init(void) { gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100; @@ -492,6 +497,9 @@ void init_panel_info(vidinfo_t *vid) vid->interface_mode = FIMD_RGB_INTERFACE; vid->mipi_enabled = 1; + if (hwrevision(2)) + mipi_lcd_device.reverse_panel = 1; + strcpy(s6e8ax0_platform_data.lcd_panel_name, mipi_lcd_device.name); s6e8ax0_platform_data.lcd_power = lcd_power; s6e8ax0_platform_data.mipi_power = mipi_power; diff --git a/drivers/video/s6e8ax0.c b/drivers/video/s6e8ax0.c index 02c5ccf..176c518 100644 --- a/drivers/video/s6e8ax0.c +++ b/drivers/video/s6e8ax0.c @@ -28,6 +28,7 @@ static void s6e8ax0_panel_cond(struct mipi_dsim_device *dsim_dev) { struct mipi_dsim_master_ops *ops = dsim_dev->master_ops; + int reverse = dsim_dev->dsim_lcd_dev->reverse_panel; const unsigned char data_to_send[] = { 0xf8, 0x3d, 0x35, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x4c, 0x6e, 0x10, 0x27, 0x7d, 0x3f, 0x10, 0x00, 0x00, 0x20, @@ -36,8 +37,22 @@ static void s6e8ax0_panel_cond(struct mipi_dsim_device *dsim_dev) 0xff, 0xff, 0xc8 }; - ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE, + const unsigned char data_to_send_reverse[] = { + 0xf8, 0x19, 0x35, 0x00, 0x00, 0x00, 0x93, 0x00, 0x3c, + 0x7d, 0x08, 0x27, 0x7d, 0x3f, 0x00, 0x00, 0x00, 0x20, + 0x04, 0x08, 0x6e, 0x00, 0x00, 0x00, 0x02, 0x08, 0x08, + 0x23, 0x23, 0xc0, 0xc1, 0x01, 0x41, 0xc1, 0x00, 0xc1, + 0xf6, 0xf6, 0xc1 + }; + + if (reverse) { + ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE, + (unsigned int)data_to_send_reverse, + ARRAY_SIZE(data_to_send_reverse)); + } else { + ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE, (unsigned int)data_to_send, ARRAY_SIZE(data_to_send)); + } } static void s6e8ax0_display_cond(struct mipi_dsim_device *dsim_dev) |