瀏覽代碼

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>
Donghwa Lee 13 年之前
父節點
當前提交
3d02408665
共有 3 個文件被更改,包括 25 次插入1 次删除
  1. 1 0
      arch/arm/include/asm/arch-exynos/mipi_dsim.h
  2. 8 0
      board/samsung/trats/trats.c
  3. 16 1
      drivers/video/s6e8ax0.c

+ 1 - 0
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;

+ 8 - 0
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;

+ 16 - 1
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)