LCD: support another s6e8ax0 panel type
authorDonghwa Lee <dh09.lee@samsung.com>
Thu, 26 Apr 2012 18:52:26 +0000 (18:52 +0000)
committerAnatolij Gustschin <agust@denx.de>
Fri, 25 May 2012 07:15:09 +0000 (09:15 +0200)
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>
arch/arm/include/asm/arch-exynos/mipi_dsim.h
board/samsung/trats/trats.c
drivers/video/s6e8ax0.c

index ef6a3d112372d0a3329c95caaa71bc5226db083e..9a7cbeb599057b9285754489ac35d8c7ad472471 100644 (file)
@@ -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;
index 3085de1a145064aa1338ca2d4cc0f4be908abb0f..25f5cafc49c09803946085c4965d70bdb03233f7 100644 (file)
@@ -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;
index 02c5ccff5f7e454bcefb021212b22c9ea116e542..176c5187af8588d4296f52eb8cc30bb0c658a83b 100644 (file)
@@ -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)