dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] Fix up the boe-tv101wum-nl6 panel driver
@ 2023-06-15 20:21 Linus Walleij
  2023-06-15 20:21 ` [PATCH 1/2] drm/panel: boe-tv101wum-nl6: Drop macros and open code sequences Linus Walleij
  2023-06-15 20:21 ` [PATCH 2/2] drm/panel: boe-tv101wum-nl6: Drop surplus prepare tracking Linus Walleij
  0 siblings, 2 replies; 6+ messages in thread
From: Linus Walleij @ 2023-06-15 20:21 UTC (permalink / raw)
  To: Ruihai Zhou, Stephen Boyd, yangcong, Jitao Shi, Neil Armstrong,
	Sam Ravnborg, David Airlie, Daniel Vetter
  Cc: linux-kernel, dri-devel

This is two patches fixing things I would normally complain about
in reviews, but alas I missed this one, so I go in and fix it up
myself.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
Linus Walleij (2):
      drm/panel: boe-tv101wum-nl6: Drop macros and open code sequences
      drm/panel: boe-tv101wum-nl6: Drop surplus prepare tracking

 drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c | 2420 ++++++++++++------------
 1 file changed, 1193 insertions(+), 1227 deletions(-)
---
base-commit: ac9a78681b921877518763ba0e89202254349d1b
change-id: 20230615-fix-boe-tv101wum-nl6-6aa3fab22b44

Best regards,
-- 
Linus Walleij <linus.walleij@linaro.org>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/2] drm/panel: boe-tv101wum-nl6: Drop macros and open code sequences
  2023-06-15 20:21 [PATCH 0/2] Fix up the boe-tv101wum-nl6 panel driver Linus Walleij
@ 2023-06-15 20:21 ` Linus Walleij
  2023-06-15 22:10   ` kernel test robot
  2023-06-16 16:42   ` Sam Ravnborg
  2023-06-15 20:21 ` [PATCH 2/2] drm/panel: boe-tv101wum-nl6: Drop surplus prepare tracking Linus Walleij
  1 sibling, 2 replies; 6+ messages in thread
From: Linus Walleij @ 2023-06-15 20:21 UTC (permalink / raw)
  To: Ruihai Zhou, Stephen Boyd, yangcong, Jitao Shi, Neil Armstrong,
	Sam Ravnborg, David Airlie, Daniel Vetter
  Cc: linux-kernel, dri-devel

The boe-tv101wum-nl6 is reinventing the mechanism to send command
sequences that we usually nix during review, but I missed this one
so fixing it up myself.

Also use the explicit function calls to mipi_dsi_dcs_exit_sleep_mode()
and mipi_dsi_dcs_set_display_on() instead of reimplementing them
with homegrown sequences.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c | 2408 ++++++++++++------------
 1 file changed, 1193 insertions(+), 1215 deletions(-)

diff --git a/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c b/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c
index 783234ae0f57..d19d30e134dd 100644
--- a/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c
+++ b/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c
@@ -33,7 +33,7 @@ struct panel_desc {
 
 	unsigned long mode_flags;
 	enum mipi_dsi_pixel_format format;
-	const struct panel_init_cmd *init_cmds;
+	int (*init)(struct mipi_dsi_device *dsi);
 	unsigned int lanes;
 	bool discharge_on_disable;
 };
@@ -54,1224 +54,1200 @@ struct boe_panel {
 	bool prepared;
 };
 
-enum dsi_cmd_type {
-	INIT_DCS_CMD,
-	DELAY_CMD,
-};
+static int boe_tv110c9m_init(struct mipi_dsi_device *dsi)
+{
+	int ret;
 
-struct panel_init_cmd {
-	enum dsi_cmd_type type;
-	size_t len;
-	const char *data;
-};
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x20);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x05, 0xD9);
+	mipi_dsi_dcs_write_seq(dsi, 0x07, 0x78);
+	mipi_dsi_dcs_write_seq(dsi, 0x08, 0x5A);
+	mipi_dsi_dcs_write_seq(dsi, 0x0D, 0x63);
+	mipi_dsi_dcs_write_seq(dsi, 0x0E, 0x91);
+	mipi_dsi_dcs_write_seq(dsi, 0x0F, 0x73);
+	mipi_dsi_dcs_write_seq(dsi, 0x95, 0xE6);
+	mipi_dsi_dcs_write_seq(dsi, 0x96, 0xF0);
+	mipi_dsi_dcs_write_seq(dsi, 0x30, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x6D, 0x66);
+	mipi_dsi_dcs_write_seq(dsi, 0x75, 0xA2);
+	mipi_dsi_dcs_write_seq(dsi, 0x77, 0x3B);
 
-#define _INIT_DCS_CMD(...) { \
-	.type = INIT_DCS_CMD, \
-	.len = sizeof((char[]){__VA_ARGS__}), \
-	.data = (char[]){__VA_ARGS__} }
-
-#define _INIT_DELAY_CMD(...) { \
-	.type = DELAY_CMD,\
-	.len = sizeof((char[]){__VA_ARGS__}), \
-	.data = (char[]){__VA_ARGS__} }
-
-static const struct panel_init_cmd boe_tv110c9m_init_cmd[] = {
-	_INIT_DCS_CMD(0xFF, 0x20),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0x05, 0xD9),
-	_INIT_DCS_CMD(0x07, 0x78),
-	_INIT_DCS_CMD(0x08, 0x5A),
-	_INIT_DCS_CMD(0x0D, 0x63),
-	_INIT_DCS_CMD(0x0E, 0x91),
-	_INIT_DCS_CMD(0x0F, 0x73),
-	_INIT_DCS_CMD(0x95, 0xE6),
-	_INIT_DCS_CMD(0x96, 0xF0),
-	_INIT_DCS_CMD(0x30, 0x00),
-	_INIT_DCS_CMD(0x6D, 0x66),
-	_INIT_DCS_CMD(0x75, 0xA2),
-	_INIT_DCS_CMD(0x77, 0x3B),
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x89, 0x00, 0xA1, 0x00, 0xB6, 0x00, 0xC9);
+	mipi_dsi_dcs_write_seq(dsi, 0xB1, 0x00, 0xDA, 0x01, 0x13, 0x01, 0x3C, 0x01, 0x7E, 0x01, 0xAB, 0x01, 0xF7, 0x02, 0x2F, 0x02, 0x31);
+	mipi_dsi_dcs_write_seq(dsi, 0xB2, 0x02, 0x67, 0x02, 0xA6, 0x02, 0xD1, 0x03, 0x08, 0x03, 0x2E, 0x03, 0x5B, 0x03, 0x6B, 0x03, 0x7B);
+	mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x03, 0x8E, 0x03, 0xA2, 0x03, 0xB7, 0x03, 0xE7, 0x03, 0xFD, 0x03, 0xFF);
 
-	_INIT_DCS_CMD(0xB0, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x89, 0x00, 0xA1, 0x00, 0xB6, 0x00, 0xC9),
-	_INIT_DCS_CMD(0xB1, 0x00, 0xDA, 0x01, 0x13, 0x01, 0x3C, 0x01, 0x7E, 0x01, 0xAB, 0x01, 0xF7, 0x02, 0x2F, 0x02, 0x31),
-	_INIT_DCS_CMD(0xB2, 0x02, 0x67, 0x02, 0xA6, 0x02, 0xD1, 0x03, 0x08, 0x03, 0x2E, 0x03, 0x5B, 0x03, 0x6B, 0x03, 0x7B),
-	_INIT_DCS_CMD(0xB3, 0x03, 0x8E, 0x03, 0xA2, 0x03, 0xB7, 0x03, 0xE7, 0x03, 0xFD, 0x03, 0xFF),
-
-	_INIT_DCS_CMD(0xB4, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x89, 0x00, 0xA1, 0x00, 0xB6, 0x00, 0xC9),
-	_INIT_DCS_CMD(0xB5, 0x00, 0xDA, 0x01, 0x13, 0x01, 0x3C, 0x01, 0x7E, 0x01, 0xAB, 0x01, 0xF7, 0x02, 0x2F, 0x02, 0x31),
-	_INIT_DCS_CMD(0xB6, 0x02, 0x67, 0x02, 0xA6, 0x02, 0xD1, 0x03, 0x08, 0x03, 0x2E, 0x03, 0x5B, 0x03, 0x6B, 0x03, 0x7B),
-	_INIT_DCS_CMD(0xB7, 0x03, 0x8E, 0x03, 0xA2, 0x03, 0xB7, 0x03, 0xE7, 0x03, 0xFD, 0x03, 0xFF),
-	_INIT_DCS_CMD(0xB8, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x89, 0x00, 0xA1, 0x00, 0xB6, 0x00, 0xC9),
-	_INIT_DCS_CMD(0xB9, 0x00, 0xDA, 0x01, 0x13, 0x01, 0x3C, 0x01, 0x7E, 0x01, 0xAB, 0x01, 0xF7, 0x02, 0x2F, 0x02, 0x31),
-	_INIT_DCS_CMD(0xBA, 0x02, 0x67, 0x02, 0xA6, 0x02, 0xD1, 0x03, 0x08, 0x03, 0x2E, 0x03, 0x5B, 0x03, 0x6B, 0x03, 0x7B),
-	_INIT_DCS_CMD(0xBB, 0x03, 0x8E, 0x03, 0xA2, 0x03, 0xB7, 0x03, 0xE7, 0x03, 0xFD, 0x03, 0xFF),
-
-	_INIT_DCS_CMD(0xFF, 0x21),
-	_INIT_DCS_CMD(0xFB, 0x01),
-
-	_INIT_DCS_CMD(0xB0, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xAE, 0x00, 0xC1),
-	_INIT_DCS_CMD(0xB1, 0x00, 0xD2, 0x01, 0x0B, 0x01, 0x34, 0x01, 0x76, 0x01, 0xA3, 0x01, 0xEF, 0x02, 0x27, 0x02, 0x29),
-	_INIT_DCS_CMD(0xB2, 0x02, 0x5F, 0x02, 0x9E, 0x02, 0xC9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73),
-
-	_INIT_DCS_CMD(0xB3, 0x03, 0x86, 0x03, 0x9A, 0x03, 0xAF, 0x03, 0xDF, 0x03, 0xF5, 0x03, 0xE0),
-	_INIT_DCS_CMD(0xB4, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xAE, 0x00, 0xC1),
-	_INIT_DCS_CMD(0xB5, 0x00, 0xD2, 0x01, 0x0B, 0x01, 0x34, 0x01, 0x76, 0x01, 0xA3, 0x01, 0xEF, 0x02, 0x27, 0x02, 0x29),
-	_INIT_DCS_CMD(0xB6, 0x02, 0x5F, 0x02, 0x9E, 0x02, 0xC9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73),
-	_INIT_DCS_CMD(0xB7, 0x03, 0x86, 0x03, 0x9A, 0x03, 0xAF, 0x03, 0xDF, 0x03, 0xF5, 0x03, 0xE0),
-
-	_INIT_DCS_CMD(0xB8, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xAE, 0x00, 0xC1),
-	_INIT_DCS_CMD(0xB9, 0x00, 0xD2, 0x01, 0x0B, 0x01, 0x34, 0x01, 0x76, 0x01, 0xA3, 0x01, 0xEF, 0x02, 0x27, 0x02, 0x29),
-	_INIT_DCS_CMD(0xBA, 0x02, 0x5F, 0x02, 0x9E, 0x02, 0xC9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73),
-
-	_INIT_DCS_CMD(0xBB, 0x03, 0x86, 0x03, 0x9A, 0x03, 0xAF, 0x03, 0xDF, 0x03, 0xF5, 0x03, 0xE0),
-	_INIT_DCS_CMD(0xFF, 0x24),
-	_INIT_DCS_CMD(0xFB, 0x01),
-
-	_INIT_DCS_CMD(0x00, 0x00),
-	_INIT_DCS_CMD(0x01, 0x00),
-
-	_INIT_DCS_CMD(0x02, 0x1C),
-	_INIT_DCS_CMD(0x03, 0x1C),
-
-	_INIT_DCS_CMD(0x04, 0x1D),
-	_INIT_DCS_CMD(0x05, 0x1D),
-
-	_INIT_DCS_CMD(0x06, 0x04),
-	_INIT_DCS_CMD(0x07, 0x04),
-
-	_INIT_DCS_CMD(0x08, 0x0F),
-	_INIT_DCS_CMD(0x09, 0x0F),
-
-	_INIT_DCS_CMD(0x0A, 0x0E),
-	_INIT_DCS_CMD(0x0B, 0x0E),
-
-	_INIT_DCS_CMD(0x0C, 0x0D),
-	_INIT_DCS_CMD(0x0D, 0x0D),
-
-	_INIT_DCS_CMD(0x0E, 0x0C),
-	_INIT_DCS_CMD(0x0F, 0x0C),
-
-	_INIT_DCS_CMD(0x10, 0x08),
-	_INIT_DCS_CMD(0x11, 0x08),
-
-	_INIT_DCS_CMD(0x12, 0x00),
-	_INIT_DCS_CMD(0x13, 0x00),
-	_INIT_DCS_CMD(0x14, 0x00),
-	_INIT_DCS_CMD(0x15, 0x00),
-
-	_INIT_DCS_CMD(0x16, 0x00),
-	_INIT_DCS_CMD(0x17, 0x00),
-
-	_INIT_DCS_CMD(0x18, 0x1C),
-	_INIT_DCS_CMD(0x19, 0x1C),
-
-	_INIT_DCS_CMD(0x1A, 0x1D),
-	_INIT_DCS_CMD(0x1B, 0x1D),
-
-	_INIT_DCS_CMD(0x1C, 0x04),
-	_INIT_DCS_CMD(0x1D, 0x04),
-
-	_INIT_DCS_CMD(0x1E, 0x0F),
-	_INIT_DCS_CMD(0x1F, 0x0F),
-
-	_INIT_DCS_CMD(0x20, 0x0E),
-	_INIT_DCS_CMD(0x21, 0x0E),
-
-	_INIT_DCS_CMD(0x22, 0x0D),
-	_INIT_DCS_CMD(0x23, 0x0D),
-
-	_INIT_DCS_CMD(0x24, 0x0C),
-	_INIT_DCS_CMD(0x25, 0x0C),
-
-	_INIT_DCS_CMD(0x26, 0x08),
-	_INIT_DCS_CMD(0x27, 0x08),
-
-	_INIT_DCS_CMD(0x28, 0x00),
-	_INIT_DCS_CMD(0x29, 0x00),
-	_INIT_DCS_CMD(0x2A, 0x00),
-	_INIT_DCS_CMD(0x2B, 0x00),
-
-	_INIT_DCS_CMD(0x2D, 0x20),
-	_INIT_DCS_CMD(0x2F, 0x0A),
-	_INIT_DCS_CMD(0x30, 0x44),
-	_INIT_DCS_CMD(0x33, 0x0C),
-	_INIT_DCS_CMD(0x34, 0x32),
-
-	_INIT_DCS_CMD(0x37, 0x44),
-	_INIT_DCS_CMD(0x38, 0x40),
-	_INIT_DCS_CMD(0x39, 0x00),
-	_INIT_DCS_CMD(0x3A, 0x5D),
-	_INIT_DCS_CMD(0x3B, 0x60),
-	_INIT_DCS_CMD(0x3D, 0x42),
-	_INIT_DCS_CMD(0x3F, 0x06),
-	_INIT_DCS_CMD(0x43, 0x06),
-	_INIT_DCS_CMD(0x47, 0x66),
-	_INIT_DCS_CMD(0x4A, 0x5D),
-	_INIT_DCS_CMD(0x4B, 0x60),
-	_INIT_DCS_CMD(0x4C, 0x91),
-	_INIT_DCS_CMD(0x4D, 0x21),
-	_INIT_DCS_CMD(0x4E, 0x43),
-	_INIT_DCS_CMD(0x51, 0x12),
-	_INIT_DCS_CMD(0x52, 0x34),
-	_INIT_DCS_CMD(0x55, 0x82, 0x02),
-	_INIT_DCS_CMD(0x56, 0x04),
-	_INIT_DCS_CMD(0x58, 0x21),
-	_INIT_DCS_CMD(0x59, 0x30),
-	_INIT_DCS_CMD(0x5A, 0x60),
-	_INIT_DCS_CMD(0x5B, 0x50),
-	_INIT_DCS_CMD(0x5E, 0x00, 0x06),
-	_INIT_DCS_CMD(0x5F, 0x00),
-	_INIT_DCS_CMD(0x65, 0x82),
-	_INIT_DCS_CMD(0x7E, 0x20),
-	_INIT_DCS_CMD(0x7F, 0x3C),
-	_INIT_DCS_CMD(0x82, 0x04),
-	_INIT_DCS_CMD(0x97, 0xC0),
-
-	_INIT_DCS_CMD(0xB6, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00),
-	_INIT_DCS_CMD(0x91, 0x44),
-	_INIT_DCS_CMD(0x92, 0xA9),
-	_INIT_DCS_CMD(0x93, 0x1A),
-	_INIT_DCS_CMD(0x94, 0x96),
-	_INIT_DCS_CMD(0xD7, 0x55),
-	_INIT_DCS_CMD(0xDA, 0x0A),
-	_INIT_DCS_CMD(0xDE, 0x08),
-	_INIT_DCS_CMD(0xDB, 0x05),
-	_INIT_DCS_CMD(0xDC, 0xA9),
-	_INIT_DCS_CMD(0xDD, 0x22),
-
-	_INIT_DCS_CMD(0xDF, 0x05),
-	_INIT_DCS_CMD(0xE0, 0xA9),
-	_INIT_DCS_CMD(0xE1, 0x05),
-	_INIT_DCS_CMD(0xE2, 0xA9),
-	_INIT_DCS_CMD(0xE3, 0x05),
-	_INIT_DCS_CMD(0xE4, 0xA9),
-	_INIT_DCS_CMD(0xE5, 0x05),
-	_INIT_DCS_CMD(0xE6, 0xA9),
-	_INIT_DCS_CMD(0x5C, 0x00),
-	_INIT_DCS_CMD(0x5D, 0x00),
-	_INIT_DCS_CMD(0x8D, 0x00),
-	_INIT_DCS_CMD(0x8E, 0x00),
-	_INIT_DCS_CMD(0xB5, 0x90),
-	_INIT_DCS_CMD(0xFF, 0x25),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0x05, 0x00),
-	_INIT_DCS_CMD(0x19, 0x07),
-	_INIT_DCS_CMD(0x1F, 0x60),
-	_INIT_DCS_CMD(0x20, 0x50),
-	_INIT_DCS_CMD(0x26, 0x60),
-	_INIT_DCS_CMD(0x27, 0x50),
-	_INIT_DCS_CMD(0x33, 0x60),
-	_INIT_DCS_CMD(0x34, 0x50),
-	_INIT_DCS_CMD(0x3F, 0xE0),
-	_INIT_DCS_CMD(0x40, 0x00),
-	_INIT_DCS_CMD(0x44, 0x00),
-	_INIT_DCS_CMD(0x45, 0x40),
-	_INIT_DCS_CMD(0x48, 0x60),
-	_INIT_DCS_CMD(0x49, 0x50),
-	_INIT_DCS_CMD(0x5B, 0x00),
-	_INIT_DCS_CMD(0x5C, 0x00),
-	_INIT_DCS_CMD(0x5D, 0x00),
-	_INIT_DCS_CMD(0x5E, 0xD0),
-	_INIT_DCS_CMD(0x61, 0x60),
-	_INIT_DCS_CMD(0x62, 0x50),
-	_INIT_DCS_CMD(0xF1, 0x10),
-	_INIT_DCS_CMD(0xFF, 0x2A),
-	_INIT_DCS_CMD(0xFB, 0x01),
-
-	_INIT_DCS_CMD(0x64, 0x16),
-	_INIT_DCS_CMD(0x67, 0x16),
-	_INIT_DCS_CMD(0x6A, 0x16),
-
-	_INIT_DCS_CMD(0x70, 0x30),
-
-	_INIT_DCS_CMD(0xA2, 0xF3),
-	_INIT_DCS_CMD(0xA3, 0xFF),
-	_INIT_DCS_CMD(0xA4, 0xFF),
-	_INIT_DCS_CMD(0xA5, 0xFF),
-
-	_INIT_DCS_CMD(0xD6, 0x08),
-
-	_INIT_DCS_CMD(0xFF, 0x26),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0x00, 0xA1),
-
-	_INIT_DCS_CMD(0x02, 0x31),
-	_INIT_DCS_CMD(0x04, 0x28),
-	_INIT_DCS_CMD(0x06, 0x30),
-	_INIT_DCS_CMD(0x0C, 0x16),
-	_INIT_DCS_CMD(0x0D, 0x0D),
-	_INIT_DCS_CMD(0x0F, 0x00),
-	_INIT_DCS_CMD(0x11, 0x00),
-	_INIT_DCS_CMD(0x12, 0x50),
-	_INIT_DCS_CMD(0x13, 0x56),
-	_INIT_DCS_CMD(0x14, 0x57),
-	_INIT_DCS_CMD(0x15, 0x00),
-	_INIT_DCS_CMD(0x16, 0x10),
-	_INIT_DCS_CMD(0x17, 0xA0),
-	_INIT_DCS_CMD(0x18, 0x86),
-	_INIT_DCS_CMD(0x19, 0x0D),
-	_INIT_DCS_CMD(0x1A, 0x7F),
-	_INIT_DCS_CMD(0x1B, 0x0C),
-	_INIT_DCS_CMD(0x1C, 0xBF),
-	_INIT_DCS_CMD(0x22, 0x00),
-	_INIT_DCS_CMD(0x23, 0x00),
-	_INIT_DCS_CMD(0x2A, 0x0D),
-	_INIT_DCS_CMD(0x2B, 0x7F),
-
-	_INIT_DCS_CMD(0x1D, 0x00),
-	_INIT_DCS_CMD(0x1E, 0x65),
-	_INIT_DCS_CMD(0x1F, 0x65),
-	_INIT_DCS_CMD(0x24, 0x00),
-	_INIT_DCS_CMD(0x25, 0x65),
-	_INIT_DCS_CMD(0x2F, 0x05),
-	_INIT_DCS_CMD(0x30, 0x65),
-	_INIT_DCS_CMD(0x31, 0x05),
-	_INIT_DCS_CMD(0x32, 0x7D),
-	_INIT_DCS_CMD(0x39, 0x00),
-	_INIT_DCS_CMD(0x3A, 0x65),
-	_INIT_DCS_CMD(0x20, 0x01),
-	_INIT_DCS_CMD(0x33, 0x11),
-	_INIT_DCS_CMD(0x34, 0x78),
-	_INIT_DCS_CMD(0x35, 0x16),
-	_INIT_DCS_CMD(0xC8, 0x04),
-	_INIT_DCS_CMD(0xC9, 0x9E),
-	_INIT_DCS_CMD(0xCA, 0x4E),
-	_INIT_DCS_CMD(0xCB, 0x00),
-
-	_INIT_DCS_CMD(0xA9, 0x49),
-	_INIT_DCS_CMD(0xAA, 0x4B),
-	_INIT_DCS_CMD(0xAB, 0x48),
-	_INIT_DCS_CMD(0xAC, 0x43),
-	_INIT_DCS_CMD(0xAD, 0x40),
-	_INIT_DCS_CMD(0xAE, 0x50),
-	_INIT_DCS_CMD(0xAF, 0x44),
-	_INIT_DCS_CMD(0xB0, 0x54),
-	_INIT_DCS_CMD(0xB1, 0x4E),
-	_INIT_DCS_CMD(0xB2, 0x4D),
-	_INIT_DCS_CMD(0xB3, 0x4C),
-	_INIT_DCS_CMD(0xB4, 0x41),
-	_INIT_DCS_CMD(0xB5, 0x47),
-	_INIT_DCS_CMD(0xB6, 0x53),
-	_INIT_DCS_CMD(0xB7, 0x3E),
-	_INIT_DCS_CMD(0xB8, 0x51),
-	_INIT_DCS_CMD(0xB9, 0x3C),
-	_INIT_DCS_CMD(0xBA, 0x3B),
-	_INIT_DCS_CMD(0xBB, 0x46),
-	_INIT_DCS_CMD(0xBC, 0x45),
-	_INIT_DCS_CMD(0xBD, 0x55),
-	_INIT_DCS_CMD(0xBE, 0x3D),
-	_INIT_DCS_CMD(0xBF, 0x3F),
-	_INIT_DCS_CMD(0xC0, 0x52),
-	_INIT_DCS_CMD(0xC1, 0x4A),
-	_INIT_DCS_CMD(0xC2, 0x39),
-	_INIT_DCS_CMD(0xC3, 0x4F),
-	_INIT_DCS_CMD(0xC4, 0x3A),
-	_INIT_DCS_CMD(0xC5, 0x42),
-	_INIT_DCS_CMD(0xFF, 0x27),
-	_INIT_DCS_CMD(0xFB, 0x01),
-
-	_INIT_DCS_CMD(0x56, 0x06),
-	_INIT_DCS_CMD(0x58, 0x80),
-	_INIT_DCS_CMD(0x59, 0x75),
-	_INIT_DCS_CMD(0x5A, 0x00),
-	_INIT_DCS_CMD(0x5B, 0x02),
-	_INIT_DCS_CMD(0x5C, 0x00),
-	_INIT_DCS_CMD(0x5D, 0x00),
-	_INIT_DCS_CMD(0x5E, 0x20),
-	_INIT_DCS_CMD(0x5F, 0x10),
-	_INIT_DCS_CMD(0x60, 0x00),
-	_INIT_DCS_CMD(0x61, 0x2E),
-	_INIT_DCS_CMD(0x62, 0x00),
-	_INIT_DCS_CMD(0x63, 0x01),
-	_INIT_DCS_CMD(0x64, 0x43),
-	_INIT_DCS_CMD(0x65, 0x2D),
-	_INIT_DCS_CMD(0x66, 0x00),
-	_INIT_DCS_CMD(0x67, 0x01),
-	_INIT_DCS_CMD(0x68, 0x44),
-
-	_INIT_DCS_CMD(0x00, 0x00),
-	_INIT_DCS_CMD(0x78, 0x00),
-	_INIT_DCS_CMD(0xC3, 0x00),
-
-	_INIT_DCS_CMD(0xFF, 0x2A),
-	_INIT_DCS_CMD(0xFB, 0x01),
-
-	_INIT_DCS_CMD(0x22, 0x2F),
-	_INIT_DCS_CMD(0x23, 0x08),
-
-	_INIT_DCS_CMD(0x24, 0x00),
-	_INIT_DCS_CMD(0x25, 0x65),
-	_INIT_DCS_CMD(0x26, 0xF8),
-	_INIT_DCS_CMD(0x27, 0x00),
-	_INIT_DCS_CMD(0x28, 0x1A),
-	_INIT_DCS_CMD(0x29, 0x00),
-	_INIT_DCS_CMD(0x2A, 0x1A),
-	_INIT_DCS_CMD(0x2B, 0x00),
-	_INIT_DCS_CMD(0x2D, 0x1A),
-
-	_INIT_DCS_CMD(0xFF, 0x23),
-	_INIT_DCS_CMD(0xFB, 0x01),
-
-	_INIT_DCS_CMD(0x00, 0x80),
-	_INIT_DCS_CMD(0x07, 0x00),
-
-	_INIT_DCS_CMD(0xFF, 0xE0),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0x14, 0x60),
-	_INIT_DCS_CMD(0x16, 0xC0),
-
-	_INIT_DCS_CMD(0xFF, 0xF0),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0x3A, 0x08),
-
-	_INIT_DCS_CMD(0xFF, 0x10),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0xB9, 0x01),
-	_INIT_DCS_CMD(0xFF, 0x20),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0x18, 0x40),
-
-	_INIT_DCS_CMD(0xFF, 0x10),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0xB9, 0x02),
-	_INIT_DCS_CMD(0x35, 0x00),
-	_INIT_DCS_CMD(0x51, 0x00, 0xFF),
-	_INIT_DCS_CMD(0x53, 0x24),
-	_INIT_DCS_CMD(0x55, 0x00),
-	_INIT_DCS_CMD(0xBB, 0x13),
-	_INIT_DCS_CMD(0x3B, 0x03, 0x96, 0x1A, 0x04, 0x04),
-	_INIT_DELAY_CMD(100),
-	_INIT_DCS_CMD(0x11),
-	_INIT_DELAY_CMD(200),
-	_INIT_DCS_CMD(0x29),
-	_INIT_DELAY_CMD(100),
-	{},
-};
+	mipi_dsi_dcs_write_seq(dsi, 0xB4, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x89, 0x00, 0xA1, 0x00, 0xB6, 0x00, 0xC9);
+	mipi_dsi_dcs_write_seq(dsi, 0xB5, 0x00, 0xDA, 0x01, 0x13, 0x01, 0x3C, 0x01, 0x7E, 0x01, 0xAB, 0x01, 0xF7, 0x02, 0x2F, 0x02, 0x31);
+	mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x02, 0x67, 0x02, 0xA6, 0x02, 0xD1, 0x03, 0x08, 0x03, 0x2E, 0x03, 0x5B, 0x03, 0x6B, 0x03, 0x7B);
+	mipi_dsi_dcs_write_seq(dsi, 0xB7, 0x03, 0x8E, 0x03, 0xA2, 0x03, 0xB7, 0x03, 0xE7, 0x03, 0xFD, 0x03, 0xFF);
+	mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x89, 0x00, 0xA1, 0x00, 0xB6, 0x00, 0xC9);
+	mipi_dsi_dcs_write_seq(dsi, 0xB9, 0x00, 0xDA, 0x01, 0x13, 0x01, 0x3C, 0x01, 0x7E, 0x01, 0xAB, 0x01, 0xF7, 0x02, 0x2F, 0x02, 0x31);
+	mipi_dsi_dcs_write_seq(dsi, 0xBA, 0x02, 0x67, 0x02, 0xA6, 0x02, 0xD1, 0x03, 0x08, 0x03, 0x2E, 0x03, 0x5B, 0x03, 0x6B, 0x03, 0x7B);
+	mipi_dsi_dcs_write_seq(dsi, 0xBB, 0x03, 0x8E, 0x03, 0xA2, 0x03, 0xB7, 0x03, 0xE7, 0x03, 0xFD, 0x03, 0xFF);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x21);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xAE, 0x00, 0xC1);
+	mipi_dsi_dcs_write_seq(dsi, 0xB1, 0x00, 0xD2, 0x01, 0x0B, 0x01, 0x34, 0x01, 0x76, 0x01, 0xA3, 0x01, 0xEF, 0x02, 0x27, 0x02, 0x29);
+	mipi_dsi_dcs_write_seq(dsi, 0xB2, 0x02, 0x5F, 0x02, 0x9E, 0x02, 0xC9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x03, 0x86, 0x03, 0x9A, 0x03, 0xAF, 0x03, 0xDF, 0x03, 0xF5, 0x03, 0xE0);
+	mipi_dsi_dcs_write_seq(dsi, 0xB4, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xAE, 0x00, 0xC1);
+	mipi_dsi_dcs_write_seq(dsi, 0xB5, 0x00, 0xD2, 0x01, 0x0B, 0x01, 0x34, 0x01, 0x76, 0x01, 0xA3, 0x01, 0xEF, 0x02, 0x27, 0x02, 0x29);
+	mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x02, 0x5F, 0x02, 0x9E, 0x02, 0xC9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
+	mipi_dsi_dcs_write_seq(dsi, 0xB7, 0x03, 0x86, 0x03, 0x9A, 0x03, 0xAF, 0x03, 0xDF, 0x03, 0xF5, 0x03, 0xE0);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xAE, 0x00, 0xC1);
+	mipi_dsi_dcs_write_seq(dsi, 0xB9, 0x00, 0xD2, 0x01, 0x0B, 0x01, 0x34, 0x01, 0x76, 0x01, 0xA3, 0x01, 0xEF, 0x02, 0x27, 0x02, 0x29);
+	mipi_dsi_dcs_write_seq(dsi, 0xBA, 0x02, 0x5F, 0x02, 0x9E, 0x02, 0xC9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xBB, 0x03, 0x86, 0x03, 0x9A, 0x03, 0xAF, 0x03, 0xDF, 0x03, 0xF5, 0x03, 0xE0);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x24);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x00, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x01, 0x00);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x02, 0x1C);
+	mipi_dsi_dcs_write_seq(dsi, 0x03, 0x1C);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x04, 0x1D);
+	mipi_dsi_dcs_write_seq(dsi, 0x05, 0x1D);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x06, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0x07, 0x04);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x08, 0x0F);
+	mipi_dsi_dcs_write_seq(dsi, 0x09, 0x0F);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x0A, 0x0E);
+	mipi_dsi_dcs_write_seq(dsi, 0x0B, 0x0E);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x0C, 0x0D);
+	mipi_dsi_dcs_write_seq(dsi, 0x0D, 0x0D);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x0E, 0x0C);
+	mipi_dsi_dcs_write_seq(dsi, 0x0F, 0x0C);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x10, 0x08);
+	mipi_dsi_dcs_write_seq(dsi, 0x11, 0x08);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x12, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x13, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x14, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x15, 0x00);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x16, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x17, 0x00);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x18, 0x1C);
+	mipi_dsi_dcs_write_seq(dsi, 0x19, 0x1C);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x1A, 0x1D);
+	mipi_dsi_dcs_write_seq(dsi, 0x1B, 0x1D);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x1C, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0x1D, 0x04);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x1E, 0x0F);
+	mipi_dsi_dcs_write_seq(dsi, 0x1F, 0x0F);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x20, 0x0E);
+	mipi_dsi_dcs_write_seq(dsi, 0x21, 0x0E);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x22, 0x0D);
+	mipi_dsi_dcs_write_seq(dsi, 0x23, 0x0D);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x24, 0x0C);
+	mipi_dsi_dcs_write_seq(dsi, 0x25, 0x0C);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x26, 0x08);
+	mipi_dsi_dcs_write_seq(dsi, 0x27, 0x08);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x28, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x29, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x2A, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x2B, 0x00);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x2D, 0x20);
+	mipi_dsi_dcs_write_seq(dsi, 0x2F, 0x0A);
+	mipi_dsi_dcs_write_seq(dsi, 0x30, 0x44);
+	mipi_dsi_dcs_write_seq(dsi, 0x33, 0x0C);
+	mipi_dsi_dcs_write_seq(dsi, 0x34, 0x32);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x37, 0x44);
+	mipi_dsi_dcs_write_seq(dsi, 0x38, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0x39, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x3A, 0x5D);
+	mipi_dsi_dcs_write_seq(dsi, 0x3B, 0x60);
+	mipi_dsi_dcs_write_seq(dsi, 0x3D, 0x42);
+	mipi_dsi_dcs_write_seq(dsi, 0x3F, 0x06);
+	mipi_dsi_dcs_write_seq(dsi, 0x43, 0x06);
+	mipi_dsi_dcs_write_seq(dsi, 0x47, 0x66);
+	mipi_dsi_dcs_write_seq(dsi, 0x4A, 0x5D);
+	mipi_dsi_dcs_write_seq(dsi, 0x4B, 0x60);
+	mipi_dsi_dcs_write_seq(dsi, 0x4C, 0x91);
+	mipi_dsi_dcs_write_seq(dsi, 0x4D, 0x21);
+	mipi_dsi_dcs_write_seq(dsi, 0x4E, 0x43);
+	mipi_dsi_dcs_write_seq(dsi, 0x51, 0x12);
+	mipi_dsi_dcs_write_seq(dsi, 0x52, 0x34);
+	mipi_dsi_dcs_write_seq(dsi, 0x55, 0x82, 0x02);
+	mipi_dsi_dcs_write_seq(dsi, 0x56, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0x58, 0x21);
+	mipi_dsi_dcs_write_seq(dsi, 0x59, 0x30);
+	mipi_dsi_dcs_write_seq(dsi, 0x5A, 0x60);
+	mipi_dsi_dcs_write_seq(dsi, 0x5B, 0x50);
+	mipi_dsi_dcs_write_seq(dsi, 0x5E, 0x00, 0x06);
+	mipi_dsi_dcs_write_seq(dsi, 0x5F, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x65, 0x82);
+	mipi_dsi_dcs_write_seq(dsi, 0x7E, 0x20);
+	mipi_dsi_dcs_write_seq(dsi, 0x7F, 0x3C);
+	mipi_dsi_dcs_write_seq(dsi, 0x82, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0x97, 0xC0);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x91, 0x44);
+	mipi_dsi_dcs_write_seq(dsi, 0x92, 0xA9);
+	mipi_dsi_dcs_write_seq(dsi, 0x93, 0x1A);
+	mipi_dsi_dcs_write_seq(dsi, 0x94, 0x96);
+	mipi_dsi_dcs_write_seq(dsi, 0xD7, 0x55);
+	mipi_dsi_dcs_write_seq(dsi, 0xDA, 0x0A);
+	mipi_dsi_dcs_write_seq(dsi, 0xDE, 0x08);
+	mipi_dsi_dcs_write_seq(dsi, 0xDB, 0x05);
+	mipi_dsi_dcs_write_seq(dsi, 0xDC, 0xA9);
+	mipi_dsi_dcs_write_seq(dsi, 0xDD, 0x22);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xDF, 0x05);
+	mipi_dsi_dcs_write_seq(dsi, 0xE0, 0xA9);
+	mipi_dsi_dcs_write_seq(dsi, 0xE1, 0x05);
+	mipi_dsi_dcs_write_seq(dsi, 0xE2, 0xA9);
+	mipi_dsi_dcs_write_seq(dsi, 0xE3, 0x05);
+	mipi_dsi_dcs_write_seq(dsi, 0xE4, 0xA9);
+	mipi_dsi_dcs_write_seq(dsi, 0xE5, 0x05);
+	mipi_dsi_dcs_write_seq(dsi, 0xE6, 0xA9);
+	mipi_dsi_dcs_write_seq(dsi, 0x5C, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x5D, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x8D, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x8E, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xB5, 0x90);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x25);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x05, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x19, 0x07);
+	mipi_dsi_dcs_write_seq(dsi, 0x1F, 0x60);
+	mipi_dsi_dcs_write_seq(dsi, 0x20, 0x50);
+	mipi_dsi_dcs_write_seq(dsi, 0x26, 0x60);
+	mipi_dsi_dcs_write_seq(dsi, 0x27, 0x50);
+	mipi_dsi_dcs_write_seq(dsi, 0x33, 0x60);
+	mipi_dsi_dcs_write_seq(dsi, 0x34, 0x50);
+	mipi_dsi_dcs_write_seq(dsi, 0x3F, 0xE0);
+	mipi_dsi_dcs_write_seq(dsi, 0x40, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x44, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x45, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0x48, 0x60);
+	mipi_dsi_dcs_write_seq(dsi, 0x49, 0x50);
+	mipi_dsi_dcs_write_seq(dsi, 0x5B, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x5C, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x5D, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x5E, 0xD0);
+	mipi_dsi_dcs_write_seq(dsi, 0x61, 0x60);
+	mipi_dsi_dcs_write_seq(dsi, 0x62, 0x50);
+	mipi_dsi_dcs_write_seq(dsi, 0xF1, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x2A);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x64, 0x16);
+	mipi_dsi_dcs_write_seq(dsi, 0x67, 0x16);
+	mipi_dsi_dcs_write_seq(dsi, 0x6A, 0x16);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x70, 0x30);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xA2, 0xF3);
+	mipi_dsi_dcs_write_seq(dsi, 0xA3, 0xFF);
+	mipi_dsi_dcs_write_seq(dsi, 0xA4, 0xFF);
+	mipi_dsi_dcs_write_seq(dsi, 0xA5, 0xFF);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xD6, 0x08);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x26);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x00, 0xA1);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x02, 0x31);
+	mipi_dsi_dcs_write_seq(dsi, 0x04, 0x28);
+	mipi_dsi_dcs_write_seq(dsi, 0x06, 0x30);
+	mipi_dsi_dcs_write_seq(dsi, 0x0C, 0x16);
+	mipi_dsi_dcs_write_seq(dsi, 0x0D, 0x0D);
+	mipi_dsi_dcs_write_seq(dsi, 0x0F, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x11, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x12, 0x50);
+	mipi_dsi_dcs_write_seq(dsi, 0x13, 0x56);
+	mipi_dsi_dcs_write_seq(dsi, 0x14, 0x57);
+	mipi_dsi_dcs_write_seq(dsi, 0x15, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x16, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0x17, 0xA0);
+	mipi_dsi_dcs_write_seq(dsi, 0x18, 0x86);
+	mipi_dsi_dcs_write_seq(dsi, 0x19, 0x0D);
+	mipi_dsi_dcs_write_seq(dsi, 0x1A, 0x7F);
+	mipi_dsi_dcs_write_seq(dsi, 0x1B, 0x0C);
+	mipi_dsi_dcs_write_seq(dsi, 0x1C, 0xBF);
+	mipi_dsi_dcs_write_seq(dsi, 0x22, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x23, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x2A, 0x0D);
+	mipi_dsi_dcs_write_seq(dsi, 0x2B, 0x7F);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x1D, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x1E, 0x65);
+	mipi_dsi_dcs_write_seq(dsi, 0x1F, 0x65);
+	mipi_dsi_dcs_write_seq(dsi, 0x24, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x25, 0x65);
+	mipi_dsi_dcs_write_seq(dsi, 0x2F, 0x05);
+	mipi_dsi_dcs_write_seq(dsi, 0x30, 0x65);
+	mipi_dsi_dcs_write_seq(dsi, 0x31, 0x05);
+	mipi_dsi_dcs_write_seq(dsi, 0x32, 0x7D);
+	mipi_dsi_dcs_write_seq(dsi, 0x39, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x3A, 0x65);
+	mipi_dsi_dcs_write_seq(dsi, 0x20, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x33, 0x11);
+	mipi_dsi_dcs_write_seq(dsi, 0x34, 0x78);
+	mipi_dsi_dcs_write_seq(dsi, 0x35, 0x16);
+	mipi_dsi_dcs_write_seq(dsi, 0xC8, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x9E);
+	mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x4E);
+	mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x00);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xA9, 0x49);
+	mipi_dsi_dcs_write_seq(dsi, 0xAA, 0x4B);
+	mipi_dsi_dcs_write_seq(dsi, 0xAB, 0x48);
+	mipi_dsi_dcs_write_seq(dsi, 0xAC, 0x43);
+	mipi_dsi_dcs_write_seq(dsi, 0xAD, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0xAE, 0x50);
+	mipi_dsi_dcs_write_seq(dsi, 0xAF, 0x44);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x54);
+	mipi_dsi_dcs_write_seq(dsi, 0xB1, 0x4E);
+	mipi_dsi_dcs_write_seq(dsi, 0xB2, 0x4D);
+	mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x4C);
+	mipi_dsi_dcs_write_seq(dsi, 0xB4, 0x41);
+	mipi_dsi_dcs_write_seq(dsi, 0xB5, 0x47);
+	mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x53);
+	mipi_dsi_dcs_write_seq(dsi, 0xB7, 0x3E);
+	mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x51);
+	mipi_dsi_dcs_write_seq(dsi, 0xB9, 0x3C);
+	mipi_dsi_dcs_write_seq(dsi, 0xBA, 0x3B);
+	mipi_dsi_dcs_write_seq(dsi, 0xBB, 0x46);
+	mipi_dsi_dcs_write_seq(dsi, 0xBC, 0x45);
+	mipi_dsi_dcs_write_seq(dsi, 0xBD, 0x55);
+	mipi_dsi_dcs_write_seq(dsi, 0xBE, 0x3D);
+	mipi_dsi_dcs_write_seq(dsi, 0xBF, 0x3F);
+	mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x52);
+	mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x4A);
+	mipi_dsi_dcs_write_seq(dsi, 0xC2, 0x39);
+	mipi_dsi_dcs_write_seq(dsi, 0xC3, 0x4F);
+	mipi_dsi_dcs_write_seq(dsi, 0xC4, 0x3A);
+	mipi_dsi_dcs_write_seq(dsi, 0xC5, 0x42);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x27);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x56, 0x06);
+	mipi_dsi_dcs_write_seq(dsi, 0x58, 0x80);
+	mipi_dsi_dcs_write_seq(dsi, 0x59, 0x75);
+	mipi_dsi_dcs_write_seq(dsi, 0x5A, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x5B, 0x02);
+	mipi_dsi_dcs_write_seq(dsi, 0x5C, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x5D, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x5E, 0x20);
+	mipi_dsi_dcs_write_seq(dsi, 0x5F, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0x60, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x61, 0x2E);
+	mipi_dsi_dcs_write_seq(dsi, 0x62, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x63, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x64, 0x43);
+	mipi_dsi_dcs_write_seq(dsi, 0x65, 0x2D);
+	mipi_dsi_dcs_write_seq(dsi, 0x66, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x67, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x68, 0x44);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x00, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x78, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xC3, 0x00);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x2A);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x22, 0x2F);
+	mipi_dsi_dcs_write_seq(dsi, 0x23, 0x08);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x24, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x25, 0x65);
+	mipi_dsi_dcs_write_seq(dsi, 0x26, 0xF8);
+	mipi_dsi_dcs_write_seq(dsi, 0x27, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x28, 0x1A);
+	mipi_dsi_dcs_write_seq(dsi, 0x29, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x2A, 0x1A);
+	mipi_dsi_dcs_write_seq(dsi, 0x2B, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x2D, 0x1A);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x23);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x00, 0x80);
+	mipi_dsi_dcs_write_seq(dsi, 0x07, 0x00);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0xE0);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x14, 0x60);
+	mipi_dsi_dcs_write_seq(dsi, 0x16, 0xC0);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0xF0);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x3A, 0x08);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xB9, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x20);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x18, 0x40);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xB9, 0x02);
+	mipi_dsi_dcs_write_seq(dsi, 0x35, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x51, 0x00, 0xFF);
+	mipi_dsi_dcs_write_seq(dsi, 0x53, 0x24);
+	mipi_dsi_dcs_write_seq(dsi, 0x55, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xBB, 0x13);
+	mipi_dsi_dcs_write_seq(dsi, 0x3B, 0x03, 0x96, 0x1A, 0x04, 0x04);
+	msleep(100);
+	ret = mipi_dsi_dcs_exit_sleep_mode(dsi);
+	if (ret)
+		return ret;
+	msleep(200);
+	ret = mipi_dsi_dcs_set_display_on(dsi);
+	if (ret)
+		return ret;
+	msleep(100);
 
-static const struct panel_init_cmd inx_hj110iz_init_cmd[] = {
-	_INIT_DCS_CMD(0xFF, 0x20),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0x05, 0xD1),
-	_INIT_DCS_CMD(0x0D, 0x63),
-	_INIT_DCS_CMD(0x07, 0x8C),
-	_INIT_DCS_CMD(0x08, 0x4B),
-	_INIT_DCS_CMD(0x0E, 0x91),
-	_INIT_DCS_CMD(0x0F, 0x69),
-	_INIT_DCS_CMD(0x95, 0xF5),
-	_INIT_DCS_CMD(0x96, 0xF5),
-	_INIT_DCS_CMD(0x9D, 0x00),
-	_INIT_DCS_CMD(0x9E, 0x00),
-	_INIT_DCS_CMD(0x69, 0x98),
-	_INIT_DCS_CMD(0x75, 0xA2),
-	_INIT_DCS_CMD(0x77, 0xB3),
-	_INIT_DCS_CMD(0xFF, 0x24),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0x91, 0x44),
-	_INIT_DCS_CMD(0x92, 0x7A),
-	_INIT_DCS_CMD(0x93, 0x1A),
-	_INIT_DCS_CMD(0x94, 0x40),
-	_INIT_DCS_CMD(0x9A, 0x08),
-	_INIT_DCS_CMD(0x60, 0x96),
-	_INIT_DCS_CMD(0x61, 0xD0),
-	_INIT_DCS_CMD(0x63, 0x70),
-	_INIT_DCS_CMD(0xC2, 0xCF),
-	_INIT_DCS_CMD(0x9B, 0x0F),
-	_INIT_DCS_CMD(0x9A, 0x08),
-	_INIT_DCS_CMD(0x00, 0x03),
-	_INIT_DCS_CMD(0x01, 0x03),
-	_INIT_DCS_CMD(0x02, 0x03),
-	_INIT_DCS_CMD(0x03, 0x03),
-	_INIT_DCS_CMD(0x04, 0x03),
-	_INIT_DCS_CMD(0x05, 0x03),
-	_INIT_DCS_CMD(0x06, 0x22),
-	_INIT_DCS_CMD(0x07, 0x06),
-	_INIT_DCS_CMD(0x08, 0x00),
-	_INIT_DCS_CMD(0x09, 0x1D),
-	_INIT_DCS_CMD(0x0A, 0x1C),
-	_INIT_DCS_CMD(0x0B, 0x13),
-	_INIT_DCS_CMD(0x0C, 0x12),
-	_INIT_DCS_CMD(0x0D, 0x11),
-	_INIT_DCS_CMD(0x0E, 0x10),
-	_INIT_DCS_CMD(0x0F, 0x0F),
-	_INIT_DCS_CMD(0x10, 0x0E),
-	_INIT_DCS_CMD(0x11, 0x0D),
-	_INIT_DCS_CMD(0x12, 0x0C),
-	_INIT_DCS_CMD(0x13, 0x04),
-	_INIT_DCS_CMD(0x14, 0x03),
-	_INIT_DCS_CMD(0x15, 0x03),
-	_INIT_DCS_CMD(0x16, 0x03),
-	_INIT_DCS_CMD(0x17, 0x03),
-	_INIT_DCS_CMD(0x18, 0x03),
-	_INIT_DCS_CMD(0x19, 0x03),
-	_INIT_DCS_CMD(0x1A, 0x03),
-	_INIT_DCS_CMD(0x1B, 0x03),
-	_INIT_DCS_CMD(0x1C, 0x22),
-	_INIT_DCS_CMD(0x1D, 0x06),
-	_INIT_DCS_CMD(0x1E, 0x00),
-	_INIT_DCS_CMD(0x1F, 0x1D),
-	_INIT_DCS_CMD(0x20, 0x1C),
-	_INIT_DCS_CMD(0x21, 0x13),
-	_INIT_DCS_CMD(0x22, 0x12),
-	_INIT_DCS_CMD(0x23, 0x11),
-	_INIT_DCS_CMD(0x24, 0x10),
-	_INIT_DCS_CMD(0x25, 0x0F),
-	_INIT_DCS_CMD(0x26, 0x0E),
-	_INIT_DCS_CMD(0x27, 0x0D),
-	_INIT_DCS_CMD(0x28, 0x0C),
-	_INIT_DCS_CMD(0x29, 0x04),
-	_INIT_DCS_CMD(0x2A, 0x03),
-	_INIT_DCS_CMD(0x2B, 0x03),
-
-	_INIT_DCS_CMD(0x2F, 0x05),
-	_INIT_DCS_CMD(0x30, 0x32),
-	_INIT_DCS_CMD(0x31, 0x43),
-	_INIT_DCS_CMD(0x33, 0x05),
-	_INIT_DCS_CMD(0x34, 0x32),
-	_INIT_DCS_CMD(0x35, 0x43),
-	_INIT_DCS_CMD(0x37, 0x44),
-	_INIT_DCS_CMD(0x38, 0x40),
-	_INIT_DCS_CMD(0x39, 0x00),
-	_INIT_DCS_CMD(0x3A, 0x18),
-	_INIT_DCS_CMD(0x3B, 0x00),
-	_INIT_DCS_CMD(0x3D, 0x93),
-	_INIT_DCS_CMD(0xAB, 0x44),
-	_INIT_DCS_CMD(0xAC, 0x40),
-
-	_INIT_DCS_CMD(0x4D, 0x21),
-	_INIT_DCS_CMD(0x4E, 0x43),
-	_INIT_DCS_CMD(0x4F, 0x65),
-	_INIT_DCS_CMD(0x50, 0x87),
-	_INIT_DCS_CMD(0x51, 0x78),
-	_INIT_DCS_CMD(0x52, 0x56),
-	_INIT_DCS_CMD(0x53, 0x34),
-	_INIT_DCS_CMD(0x54, 0x21),
-	_INIT_DCS_CMD(0x55, 0x83),
-	_INIT_DCS_CMD(0x56, 0x08),
-	_INIT_DCS_CMD(0x58, 0x21),
-	_INIT_DCS_CMD(0x59, 0x40),
-	_INIT_DCS_CMD(0x5A, 0x00),
-	_INIT_DCS_CMD(0x5B, 0x2C),
-	_INIT_DCS_CMD(0x5E, 0x00, 0x10),
-	_INIT_DCS_CMD(0x5F, 0x00),
-
-	_INIT_DCS_CMD(0x7A, 0x00),
-	_INIT_DCS_CMD(0x7B, 0x00),
-	_INIT_DCS_CMD(0x7C, 0x00),
-	_INIT_DCS_CMD(0x7D, 0x00),
-	_INIT_DCS_CMD(0x7E, 0x20),
-	_INIT_DCS_CMD(0x7F, 0x3C),
-	_INIT_DCS_CMD(0x80, 0x00),
-	_INIT_DCS_CMD(0x81, 0x00),
-	_INIT_DCS_CMD(0x82, 0x08),
-	_INIT_DCS_CMD(0x97, 0x02),
-	_INIT_DCS_CMD(0xC5, 0x10),
-	_INIT_DCS_CMD(0xDA, 0x05),
-	_INIT_DCS_CMD(0xDB, 0x01),
-	_INIT_DCS_CMD(0xDC, 0x7A),
-	_INIT_DCS_CMD(0xDD, 0x55),
-	_INIT_DCS_CMD(0xDE, 0x27),
-	_INIT_DCS_CMD(0xDF, 0x01),
-	_INIT_DCS_CMD(0xE0, 0x7A),
-	_INIT_DCS_CMD(0xE1, 0x01),
-	_INIT_DCS_CMD(0xE2, 0x7A),
-	_INIT_DCS_CMD(0xE3, 0x01),
-	_INIT_DCS_CMD(0xE4, 0x7A),
-	_INIT_DCS_CMD(0xE5, 0x01),
-	_INIT_DCS_CMD(0xE6, 0x7A),
-	_INIT_DCS_CMD(0xE7, 0x00),
-	_INIT_DCS_CMD(0xE8, 0x00),
-	_INIT_DCS_CMD(0xE9, 0x01),
-	_INIT_DCS_CMD(0xEA, 0x7A),
-	_INIT_DCS_CMD(0xEB, 0x01),
-	_INIT_DCS_CMD(0xEE, 0x7A),
-	_INIT_DCS_CMD(0xEF, 0x01),
-	_INIT_DCS_CMD(0xF0, 0x7A),
-
-	_INIT_DCS_CMD(0xB6, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00),
-	_INIT_DCS_CMD(0xFF, 0x25),
-	_INIT_DCS_CMD(0xFB, 0x01),
-
-	_INIT_DCS_CMD(0x05, 0x00),
-
-	_INIT_DCS_CMD(0x13, 0x02),
-	_INIT_DCS_CMD(0x14, 0xDF),
-	_INIT_DCS_CMD(0xF1, 0x10),
-	_INIT_DCS_CMD(0x1E, 0x00),
-	_INIT_DCS_CMD(0x1F, 0x00),
-	_INIT_DCS_CMD(0x20, 0x2C),
-	_INIT_DCS_CMD(0x25, 0x00),
-	_INIT_DCS_CMD(0x26, 0x00),
-	_INIT_DCS_CMD(0x27, 0x2C),
-	_INIT_DCS_CMD(0x3F, 0x80),
-	_INIT_DCS_CMD(0x40, 0x00),
-	_INIT_DCS_CMD(0x43, 0x00),
-
-	_INIT_DCS_CMD(0x44, 0x18),
-	_INIT_DCS_CMD(0x45, 0x00),
-
-	_INIT_DCS_CMD(0x48, 0x00),
-	_INIT_DCS_CMD(0x49, 0x2C),
-	_INIT_DCS_CMD(0x5B, 0x80),
-	_INIT_DCS_CMD(0x5C, 0x00),
-	_INIT_DCS_CMD(0x5D, 0x00),
-	_INIT_DCS_CMD(0x5E, 0x00),
-	_INIT_DCS_CMD(0x61, 0x00),
-	_INIT_DCS_CMD(0x62, 0x2C),
-	_INIT_DCS_CMD(0x68, 0x10),
-	_INIT_DCS_CMD(0xFF, 0x26),
-	_INIT_DCS_CMD(0xFB, 0x01),
-
-	_INIT_DCS_CMD(0x00, 0xA1),
-	_INIT_DCS_CMD(0x02, 0x31),
-	_INIT_DCS_CMD(0x0A, 0xF2),
-	_INIT_DCS_CMD(0x04, 0x28),
-	_INIT_DCS_CMD(0x06, 0x30),
-	_INIT_DCS_CMD(0x0C, 0x16),
-	_INIT_DCS_CMD(0x0D, 0x0D),
-	_INIT_DCS_CMD(0x0F, 0x00),
-	_INIT_DCS_CMD(0x11, 0x00),
-	_INIT_DCS_CMD(0x12, 0x50),
-	_INIT_DCS_CMD(0x13, 0x56),
-	_INIT_DCS_CMD(0x14, 0x57),
-	_INIT_DCS_CMD(0x15, 0x00),
-	_INIT_DCS_CMD(0x16, 0x10),
-	_INIT_DCS_CMD(0x17, 0xA0),
-	_INIT_DCS_CMD(0x18, 0x86),
-	_INIT_DCS_CMD(0x22, 0x00),
-	_INIT_DCS_CMD(0x23, 0x00),
-	_INIT_DCS_CMD(0x19, 0x0D),
-	_INIT_DCS_CMD(0x1A, 0x7F),
-	_INIT_DCS_CMD(0x1B, 0x0C),
-	_INIT_DCS_CMD(0x1C, 0xBF),
-	_INIT_DCS_CMD(0x2A, 0x0D),
-	_INIT_DCS_CMD(0x2B, 0x7F),
-	_INIT_DCS_CMD(0x20, 0x00),
-
-	_INIT_DCS_CMD(0x1D, 0x00),
-	_INIT_DCS_CMD(0x1E, 0x78),
-	_INIT_DCS_CMD(0x1F, 0x78),
-
-	_INIT_DCS_CMD(0x2F, 0x03),
-	_INIT_DCS_CMD(0x30, 0x78),
-	_INIT_DCS_CMD(0x33, 0x78),
-	_INIT_DCS_CMD(0x34, 0x66),
-	_INIT_DCS_CMD(0x35, 0x11),
-
-	_INIT_DCS_CMD(0x39, 0x10),
-	_INIT_DCS_CMD(0x3A, 0x78),
-	_INIT_DCS_CMD(0x3B, 0x06),
-
-	_INIT_DCS_CMD(0xC8, 0x04),
-	_INIT_DCS_CMD(0xC9, 0x84),
-	_INIT_DCS_CMD(0xCA, 0x4E),
-	_INIT_DCS_CMD(0xCB, 0x00),
-
-	_INIT_DCS_CMD(0xA9, 0x50),
-	_INIT_DCS_CMD(0xAA, 0x4F),
-	_INIT_DCS_CMD(0xAB, 0x4D),
-	_INIT_DCS_CMD(0xAC, 0x4A),
-	_INIT_DCS_CMD(0xAD, 0x48),
-	_INIT_DCS_CMD(0xAE, 0x46),
-	_INIT_DCS_CMD(0xFF, 0x27),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0xC0, 0x18),
-	_INIT_DCS_CMD(0xC1, 0x00),
-	_INIT_DCS_CMD(0xC2, 0x00),
-	_INIT_DCS_CMD(0x56, 0x06),
-	_INIT_DCS_CMD(0x58, 0x80),
-	_INIT_DCS_CMD(0x59, 0x75),
-	_INIT_DCS_CMD(0x5A, 0x00),
-	_INIT_DCS_CMD(0x5B, 0x02),
-	_INIT_DCS_CMD(0x5C, 0x00),
-	_INIT_DCS_CMD(0x5D, 0x00),
-	_INIT_DCS_CMD(0x5E, 0x20),
-	_INIT_DCS_CMD(0x5F, 0x10),
-	_INIT_DCS_CMD(0x60, 0x00),
-	_INIT_DCS_CMD(0x61, 0x2E),
-	_INIT_DCS_CMD(0x62, 0x00),
-	_INIT_DCS_CMD(0x63, 0x01),
-	_INIT_DCS_CMD(0x64, 0x43),
-	_INIT_DCS_CMD(0x65, 0x2D),
-	_INIT_DCS_CMD(0x66, 0x00),
-	_INIT_DCS_CMD(0x67, 0x01),
-	_INIT_DCS_CMD(0x68, 0x43),
-	_INIT_DCS_CMD(0x98, 0x01),
-	_INIT_DCS_CMD(0xB4, 0x03),
-	_INIT_DCS_CMD(0x9B, 0xBD),
-	_INIT_DCS_CMD(0xA0, 0x90),
-	_INIT_DCS_CMD(0xAB, 0x1B),
-	_INIT_DCS_CMD(0xBC, 0x0C),
-	_INIT_DCS_CMD(0xBD, 0x28),
-
-	_INIT_DCS_CMD(0xFF, 0x2A),
-	_INIT_DCS_CMD(0xFB, 0x01),
-
-	_INIT_DCS_CMD(0x22, 0x2F),
-	_INIT_DCS_CMD(0x23, 0x08),
-
-	_INIT_DCS_CMD(0x24, 0x00),
-	_INIT_DCS_CMD(0x25, 0x65),
-	_INIT_DCS_CMD(0x26, 0xF8),
-	_INIT_DCS_CMD(0x27, 0x00),
-	_INIT_DCS_CMD(0x28, 0x1A),
-	_INIT_DCS_CMD(0x29, 0x00),
-	_INIT_DCS_CMD(0x2A, 0x1A),
-	_INIT_DCS_CMD(0x2B, 0x00),
-	_INIT_DCS_CMD(0x2D, 0x1A),
-
-	_INIT_DCS_CMD(0x64, 0x96),
-	_INIT_DCS_CMD(0x65, 0x00),
-	_INIT_DCS_CMD(0x66, 0x00),
-	_INIT_DCS_CMD(0x6A, 0x96),
-	_INIT_DCS_CMD(0x6B, 0x00),
-	_INIT_DCS_CMD(0x6C, 0x00),
-	_INIT_DCS_CMD(0x70, 0x92),
-	_INIT_DCS_CMD(0x71, 0x00),
-	_INIT_DCS_CMD(0x72, 0x00),
-	_INIT_DCS_CMD(0xA2, 0x33),
-	_INIT_DCS_CMD(0xA3, 0x30),
-	_INIT_DCS_CMD(0xA4, 0xC0),
-	_INIT_DCS_CMD(0xE8, 0x00),
-	_INIT_DCS_CMD(0x97, 0x3C),
-	_INIT_DCS_CMD(0x98, 0x02),
-	_INIT_DCS_CMD(0x99, 0x95),
-	_INIT_DCS_CMD(0x9A, 0x06),
-	_INIT_DCS_CMD(0x9B, 0x00),
-	_INIT_DCS_CMD(0x9C, 0x0B),
-	_INIT_DCS_CMD(0x9D, 0x0A),
-	_INIT_DCS_CMD(0x9E, 0x90),
-	_INIT_DCS_CMD(0xFF, 0xF0),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0x3A, 0x08),
-	_INIT_DCS_CMD(0xFF, 0xD0),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0x00, 0x33),
-	_INIT_DCS_CMD(0x08, 0x01),
-	_INIT_DCS_CMD(0x09, 0xBF),
-	_INIT_DCS_CMD(0x2F, 0x33),
-	_INIT_DCS_CMD(0xFF, 0x23),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0x00, 0x80),
-	_INIT_DCS_CMD(0x07, 0x00),
-	_INIT_DCS_CMD(0xFF, 0x20),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0x30, 0x00),
-	_INIT_DCS_CMD(0xFF, 0x24),
-	_INIT_DCS_CMD(0x5C, 0x88),
-	_INIT_DCS_CMD(0x5D, 0x08),
-	_INIT_DCS_CMD(0xFF, 0x10),
-	_INIT_DCS_CMD(0xB9, 0x01),
-	_INIT_DCS_CMD(0xFF, 0x20),
-	_INIT_DCS_CMD(0x18, 0x40),
-	_INIT_DCS_CMD(0xFF, 0x10),
-	_INIT_DCS_CMD(0xB9, 0x02),
-	_INIT_DCS_CMD(0xFF, 0x10),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0xBB, 0x13),
-	_INIT_DCS_CMD(0x3B, 0x03, 0x96, 0x1A, 0x04, 0x04),
-	_INIT_DCS_CMD(0x35, 0x00),
-	_INIT_DCS_CMD(0x51, 0x0F, 0xFF),
-	_INIT_DCS_CMD(0x53, 0x24),
-	_INIT_DELAY_CMD(100),
-	_INIT_DCS_CMD(0x11),
-	_INIT_DELAY_CMD(200),
-	_INIT_DCS_CMD(0x29),
-	_INIT_DELAY_CMD(100),
-	{},
-};
+	return 0;
+}
 
-static const struct panel_init_cmd boe_init_cmd[] = {
-	_INIT_DELAY_CMD(24),
-	_INIT_DCS_CMD(0xB0, 0x05),
-	_INIT_DCS_CMD(0xB1, 0xE5),
-	_INIT_DCS_CMD(0xB3, 0x52),
-	_INIT_DCS_CMD(0xB0, 0x00),
-	_INIT_DCS_CMD(0xB3, 0x88),
-	_INIT_DCS_CMD(0xB0, 0x04),
-	_INIT_DCS_CMD(0xB8, 0x00),
-	_INIT_DCS_CMD(0xB0, 0x00),
-	_INIT_DCS_CMD(0xB6, 0x03),
-	_INIT_DCS_CMD(0xBA, 0x8B),
-	_INIT_DCS_CMD(0xBF, 0x1A),
-	_INIT_DCS_CMD(0xC0, 0x0F),
-	_INIT_DCS_CMD(0xC2, 0x0C),
-	_INIT_DCS_CMD(0xC3, 0x02),
-	_INIT_DCS_CMD(0xC4, 0x0C),
-	_INIT_DCS_CMD(0xC5, 0x02),
-	_INIT_DCS_CMD(0xB0, 0x01),
-	_INIT_DCS_CMD(0xE0, 0x26),
-	_INIT_DCS_CMD(0xE1, 0x26),
-	_INIT_DCS_CMD(0xDC, 0x00),
-	_INIT_DCS_CMD(0xDD, 0x00),
-	_INIT_DCS_CMD(0xCC, 0x26),
-	_INIT_DCS_CMD(0xCD, 0x26),
-	_INIT_DCS_CMD(0xC8, 0x00),
-	_INIT_DCS_CMD(0xC9, 0x00),
-	_INIT_DCS_CMD(0xD2, 0x03),
-	_INIT_DCS_CMD(0xD3, 0x03),
-	_INIT_DCS_CMD(0xE6, 0x04),
-	_INIT_DCS_CMD(0xE7, 0x04),
-	_INIT_DCS_CMD(0xC4, 0x09),
-	_INIT_DCS_CMD(0xC5, 0x09),
-	_INIT_DCS_CMD(0xD8, 0x0A),
-	_INIT_DCS_CMD(0xD9, 0x0A),
-	_INIT_DCS_CMD(0xC2, 0x0B),
-	_INIT_DCS_CMD(0xC3, 0x0B),
-	_INIT_DCS_CMD(0xD6, 0x0C),
-	_INIT_DCS_CMD(0xD7, 0x0C),
-	_INIT_DCS_CMD(0xC0, 0x05),
-	_INIT_DCS_CMD(0xC1, 0x05),
-	_INIT_DCS_CMD(0xD4, 0x06),
-	_INIT_DCS_CMD(0xD5, 0x06),
-	_INIT_DCS_CMD(0xCA, 0x07),
-	_INIT_DCS_CMD(0xCB, 0x07),
-	_INIT_DCS_CMD(0xDE, 0x08),
-	_INIT_DCS_CMD(0xDF, 0x08),
-	_INIT_DCS_CMD(0xB0, 0x02),
-	_INIT_DCS_CMD(0xC0, 0x00),
-	_INIT_DCS_CMD(0xC1, 0x0D),
-	_INIT_DCS_CMD(0xC2, 0x17),
-	_INIT_DCS_CMD(0xC3, 0x26),
-	_INIT_DCS_CMD(0xC4, 0x31),
-	_INIT_DCS_CMD(0xC5, 0x1C),
-	_INIT_DCS_CMD(0xC6, 0x2C),
-	_INIT_DCS_CMD(0xC7, 0x33),
-	_INIT_DCS_CMD(0xC8, 0x31),
-	_INIT_DCS_CMD(0xC9, 0x37),
-	_INIT_DCS_CMD(0xCA, 0x37),
-	_INIT_DCS_CMD(0xCB, 0x37),
-	_INIT_DCS_CMD(0xCC, 0x39),
-	_INIT_DCS_CMD(0xCD, 0x2E),
-	_INIT_DCS_CMD(0xCE, 0x2F),
-	_INIT_DCS_CMD(0xCF, 0x2F),
-	_INIT_DCS_CMD(0xD0, 0x07),
-	_INIT_DCS_CMD(0xD2, 0x00),
-	_INIT_DCS_CMD(0xD3, 0x0D),
-	_INIT_DCS_CMD(0xD4, 0x17),
-	_INIT_DCS_CMD(0xD5, 0x26),
-	_INIT_DCS_CMD(0xD6, 0x31),
-	_INIT_DCS_CMD(0xD7, 0x3F),
-	_INIT_DCS_CMD(0xD8, 0x3F),
-	_INIT_DCS_CMD(0xD9, 0x3F),
-	_INIT_DCS_CMD(0xDA, 0x3F),
-	_INIT_DCS_CMD(0xDB, 0x37),
-	_INIT_DCS_CMD(0xDC, 0x37),
-	_INIT_DCS_CMD(0xDD, 0x37),
-	_INIT_DCS_CMD(0xDE, 0x39),
-	_INIT_DCS_CMD(0xDF, 0x2E),
-	_INIT_DCS_CMD(0xE0, 0x2F),
-	_INIT_DCS_CMD(0xE1, 0x2F),
-	_INIT_DCS_CMD(0xE2, 0x07),
-	_INIT_DCS_CMD(0xB0, 0x03),
-	_INIT_DCS_CMD(0xC8, 0x0B),
-	_INIT_DCS_CMD(0xC9, 0x07),
-	_INIT_DCS_CMD(0xC3, 0x00),
-	_INIT_DCS_CMD(0xE7, 0x00),
-	_INIT_DCS_CMD(0xC5, 0x2A),
-	_INIT_DCS_CMD(0xDE, 0x2A),
-	_INIT_DCS_CMD(0xCA, 0x43),
-	_INIT_DCS_CMD(0xC9, 0x07),
-	_INIT_DCS_CMD(0xE4, 0xC0),
-	_INIT_DCS_CMD(0xE5, 0x0D),
-	_INIT_DCS_CMD(0xCB, 0x00),
-	_INIT_DCS_CMD(0xB0, 0x06),
-	_INIT_DCS_CMD(0xB8, 0xA5),
-	_INIT_DCS_CMD(0xC0, 0xA5),
-	_INIT_DCS_CMD(0xC7, 0x0F),
-	_INIT_DCS_CMD(0xD5, 0x32),
-	_INIT_DCS_CMD(0xB8, 0x00),
-	_INIT_DCS_CMD(0xC0, 0x00),
-	_INIT_DCS_CMD(0xBC, 0x00),
-	_INIT_DCS_CMD(0xB0, 0x07),
-	_INIT_DCS_CMD(0xB1, 0x00),
-	_INIT_DCS_CMD(0xB2, 0x02),
-	_INIT_DCS_CMD(0xB3, 0x0F),
-	_INIT_DCS_CMD(0xB4, 0x25),
-	_INIT_DCS_CMD(0xB5, 0x39),
-	_INIT_DCS_CMD(0xB6, 0x4E),
-	_INIT_DCS_CMD(0xB7, 0x72),
-	_INIT_DCS_CMD(0xB8, 0x97),
-	_INIT_DCS_CMD(0xB9, 0xDC),
-	_INIT_DCS_CMD(0xBA, 0x22),
-	_INIT_DCS_CMD(0xBB, 0xA4),
-	_INIT_DCS_CMD(0xBC, 0x2B),
-	_INIT_DCS_CMD(0xBD, 0x2F),
-	_INIT_DCS_CMD(0xBE, 0xA9),
-	_INIT_DCS_CMD(0xBF, 0x25),
-	_INIT_DCS_CMD(0xC0, 0x61),
-	_INIT_DCS_CMD(0xC1, 0x97),
-	_INIT_DCS_CMD(0xC2, 0xB2),
-	_INIT_DCS_CMD(0xC3, 0xCD),
-	_INIT_DCS_CMD(0xC4, 0xD9),
-	_INIT_DCS_CMD(0xC5, 0xE7),
-	_INIT_DCS_CMD(0xC6, 0xF4),
-	_INIT_DCS_CMD(0xC7, 0xFA),
-	_INIT_DCS_CMD(0xC8, 0xFC),
-	_INIT_DCS_CMD(0xC9, 0x00),
-	_INIT_DCS_CMD(0xCA, 0x00),
-	_INIT_DCS_CMD(0xCB, 0x16),
-	_INIT_DCS_CMD(0xCC, 0xAF),
-	_INIT_DCS_CMD(0xCD, 0xFF),
-	_INIT_DCS_CMD(0xCE, 0xFF),
-	_INIT_DCS_CMD(0xB0, 0x08),
-	_INIT_DCS_CMD(0xB1, 0x04),
-	_INIT_DCS_CMD(0xB2, 0x05),
-	_INIT_DCS_CMD(0xB3, 0x11),
-	_INIT_DCS_CMD(0xB4, 0x24),
-	_INIT_DCS_CMD(0xB5, 0x39),
-	_INIT_DCS_CMD(0xB6, 0x4F),
-	_INIT_DCS_CMD(0xB7, 0x72),
-	_INIT_DCS_CMD(0xB8, 0x98),
-	_INIT_DCS_CMD(0xB9, 0xDC),
-	_INIT_DCS_CMD(0xBA, 0x23),
-	_INIT_DCS_CMD(0xBB, 0xA6),
-	_INIT_DCS_CMD(0xBC, 0x2C),
-	_INIT_DCS_CMD(0xBD, 0x30),
-	_INIT_DCS_CMD(0xBE, 0xAA),
-	_INIT_DCS_CMD(0xBF, 0x26),
-	_INIT_DCS_CMD(0xC0, 0x62),
-	_INIT_DCS_CMD(0xC1, 0x9B),
-	_INIT_DCS_CMD(0xC2, 0xB5),
-	_INIT_DCS_CMD(0xC3, 0xCF),
-	_INIT_DCS_CMD(0xC4, 0xDB),
-	_INIT_DCS_CMD(0xC5, 0xE8),
-	_INIT_DCS_CMD(0xC6, 0xF5),
-	_INIT_DCS_CMD(0xC7, 0xFA),
-	_INIT_DCS_CMD(0xC8, 0xFC),
-	_INIT_DCS_CMD(0xC9, 0x00),
-	_INIT_DCS_CMD(0xCA, 0x00),
-	_INIT_DCS_CMD(0xCB, 0x16),
-	_INIT_DCS_CMD(0xCC, 0xAF),
-	_INIT_DCS_CMD(0xCD, 0xFF),
-	_INIT_DCS_CMD(0xCE, 0xFF),
-	_INIT_DCS_CMD(0xB0, 0x09),
-	_INIT_DCS_CMD(0xB1, 0x04),
-	_INIT_DCS_CMD(0xB2, 0x02),
-	_INIT_DCS_CMD(0xB3, 0x16),
-	_INIT_DCS_CMD(0xB4, 0x24),
-	_INIT_DCS_CMD(0xB5, 0x3B),
-	_INIT_DCS_CMD(0xB6, 0x4F),
-	_INIT_DCS_CMD(0xB7, 0x73),
-	_INIT_DCS_CMD(0xB8, 0x99),
-	_INIT_DCS_CMD(0xB9, 0xE0),
-	_INIT_DCS_CMD(0xBA, 0x26),
-	_INIT_DCS_CMD(0xBB, 0xAD),
-	_INIT_DCS_CMD(0xBC, 0x36),
-	_INIT_DCS_CMD(0xBD, 0x3A),
-	_INIT_DCS_CMD(0xBE, 0xAE),
-	_INIT_DCS_CMD(0xBF, 0x2A),
-	_INIT_DCS_CMD(0xC0, 0x66),
-	_INIT_DCS_CMD(0xC1, 0x9E),
-	_INIT_DCS_CMD(0xC2, 0xB8),
-	_INIT_DCS_CMD(0xC3, 0xD1),
-	_INIT_DCS_CMD(0xC4, 0xDD),
-	_INIT_DCS_CMD(0xC5, 0xE9),
-	_INIT_DCS_CMD(0xC6, 0xF6),
-	_INIT_DCS_CMD(0xC7, 0xFA),
-	_INIT_DCS_CMD(0xC8, 0xFC),
-	_INIT_DCS_CMD(0xC9, 0x00),
-	_INIT_DCS_CMD(0xCA, 0x00),
-	_INIT_DCS_CMD(0xCB, 0x16),
-	_INIT_DCS_CMD(0xCC, 0xAF),
-	_INIT_DCS_CMD(0xCD, 0xFF),
-	_INIT_DCS_CMD(0xCE, 0xFF),
-	_INIT_DCS_CMD(0xB0, 0x0A),
-	_INIT_DCS_CMD(0xB1, 0x00),
-	_INIT_DCS_CMD(0xB2, 0x02),
-	_INIT_DCS_CMD(0xB3, 0x0F),
-	_INIT_DCS_CMD(0xB4, 0x25),
-	_INIT_DCS_CMD(0xB5, 0x39),
-	_INIT_DCS_CMD(0xB6, 0x4E),
-	_INIT_DCS_CMD(0xB7, 0x72),
-	_INIT_DCS_CMD(0xB8, 0x97),
-	_INIT_DCS_CMD(0xB9, 0xDC),
-	_INIT_DCS_CMD(0xBA, 0x22),
-	_INIT_DCS_CMD(0xBB, 0xA4),
-	_INIT_DCS_CMD(0xBC, 0x2B),
-	_INIT_DCS_CMD(0xBD, 0x2F),
-	_INIT_DCS_CMD(0xBE, 0xA9),
-	_INIT_DCS_CMD(0xBF, 0x25),
-	_INIT_DCS_CMD(0xC0, 0x61),
-	_INIT_DCS_CMD(0xC1, 0x97),
-	_INIT_DCS_CMD(0xC2, 0xB2),
-	_INIT_DCS_CMD(0xC3, 0xCD),
-	_INIT_DCS_CMD(0xC4, 0xD9),
-	_INIT_DCS_CMD(0xC5, 0xE7),
-	_INIT_DCS_CMD(0xC6, 0xF4),
-	_INIT_DCS_CMD(0xC7, 0xFA),
-	_INIT_DCS_CMD(0xC8, 0xFC),
-	_INIT_DCS_CMD(0xC9, 0x00),
-	_INIT_DCS_CMD(0xCA, 0x00),
-	_INIT_DCS_CMD(0xCB, 0x16),
-	_INIT_DCS_CMD(0xCC, 0xAF),
-	_INIT_DCS_CMD(0xCD, 0xFF),
-	_INIT_DCS_CMD(0xCE, 0xFF),
-	_INIT_DCS_CMD(0xB0, 0x0B),
-	_INIT_DCS_CMD(0xB1, 0x04),
-	_INIT_DCS_CMD(0xB2, 0x05),
-	_INIT_DCS_CMD(0xB3, 0x11),
-	_INIT_DCS_CMD(0xB4, 0x24),
-	_INIT_DCS_CMD(0xB5, 0x39),
-	_INIT_DCS_CMD(0xB6, 0x4F),
-	_INIT_DCS_CMD(0xB7, 0x72),
-	_INIT_DCS_CMD(0xB8, 0x98),
-	_INIT_DCS_CMD(0xB9, 0xDC),
-	_INIT_DCS_CMD(0xBA, 0x23),
-	_INIT_DCS_CMD(0xBB, 0xA6),
-	_INIT_DCS_CMD(0xBC, 0x2C),
-	_INIT_DCS_CMD(0xBD, 0x30),
-	_INIT_DCS_CMD(0xBE, 0xAA),
-	_INIT_DCS_CMD(0xBF, 0x26),
-	_INIT_DCS_CMD(0xC0, 0x62),
-	_INIT_DCS_CMD(0xC1, 0x9B),
-	_INIT_DCS_CMD(0xC2, 0xB5),
-	_INIT_DCS_CMD(0xC3, 0xCF),
-	_INIT_DCS_CMD(0xC4, 0xDB),
-	_INIT_DCS_CMD(0xC5, 0xE8),
-	_INIT_DCS_CMD(0xC6, 0xF5),
-	_INIT_DCS_CMD(0xC7, 0xFA),
-	_INIT_DCS_CMD(0xC8, 0xFC),
-	_INIT_DCS_CMD(0xC9, 0x00),
-	_INIT_DCS_CMD(0xCA, 0x00),
-	_INIT_DCS_CMD(0xCB, 0x16),
-	_INIT_DCS_CMD(0xCC, 0xAF),
-	_INIT_DCS_CMD(0xCD, 0xFF),
-	_INIT_DCS_CMD(0xCE, 0xFF),
-	_INIT_DCS_CMD(0xB0, 0x0C),
-	_INIT_DCS_CMD(0xB1, 0x04),
-	_INIT_DCS_CMD(0xB2, 0x02),
-	_INIT_DCS_CMD(0xB3, 0x16),
-	_INIT_DCS_CMD(0xB4, 0x24),
-	_INIT_DCS_CMD(0xB5, 0x3B),
-	_INIT_DCS_CMD(0xB6, 0x4F),
-	_INIT_DCS_CMD(0xB7, 0x73),
-	_INIT_DCS_CMD(0xB8, 0x99),
-	_INIT_DCS_CMD(0xB9, 0xE0),
-	_INIT_DCS_CMD(0xBA, 0x26),
-	_INIT_DCS_CMD(0xBB, 0xAD),
-	_INIT_DCS_CMD(0xBC, 0x36),
-	_INIT_DCS_CMD(0xBD, 0x3A),
-	_INIT_DCS_CMD(0xBE, 0xAE),
-	_INIT_DCS_CMD(0xBF, 0x2A),
-	_INIT_DCS_CMD(0xC0, 0x66),
-	_INIT_DCS_CMD(0xC1, 0x9E),
-	_INIT_DCS_CMD(0xC2, 0xB8),
-	_INIT_DCS_CMD(0xC3, 0xD1),
-	_INIT_DCS_CMD(0xC4, 0xDD),
-	_INIT_DCS_CMD(0xC5, 0xE9),
-	_INIT_DCS_CMD(0xC6, 0xF6),
-	_INIT_DCS_CMD(0xC7, 0xFA),
-	_INIT_DCS_CMD(0xC8, 0xFC),
-	_INIT_DCS_CMD(0xC9, 0x00),
-	_INIT_DCS_CMD(0xCA, 0x00),
-	_INIT_DCS_CMD(0xCB, 0x16),
-	_INIT_DCS_CMD(0xCC, 0xAF),
-	_INIT_DCS_CMD(0xCD, 0xFF),
-	_INIT_DCS_CMD(0xCE, 0xFF),
-	_INIT_DCS_CMD(0xB0, 0x00),
-	_INIT_DCS_CMD(0xB3, 0x08),
-	_INIT_DCS_CMD(0xB0, 0x04),
-	_INIT_DCS_CMD(0xB8, 0x68),
-	_INIT_DELAY_CMD(150),
-	{},
-};
+static int inx_hj110iz_init(struct mipi_dsi_device *dsi) {
+	int ret;
 
-static const struct panel_init_cmd auo_kd101n80_45na_init_cmd[] = {
-	_INIT_DELAY_CMD(24),
-	_INIT_DCS_CMD(0x11),
-	_INIT_DELAY_CMD(120),
-	_INIT_DCS_CMD(0x29),
-	_INIT_DELAY_CMD(120),
-	{},
-};
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x20);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x05, 0xD1);
+	mipi_dsi_dcs_write_seq(dsi, 0x0D, 0x63);
+	mipi_dsi_dcs_write_seq(dsi, 0x07, 0x8C);
+	mipi_dsi_dcs_write_seq(dsi, 0x08, 0x4B);
+	mipi_dsi_dcs_write_seq(dsi, 0x0E, 0x91);
+	mipi_dsi_dcs_write_seq(dsi, 0x0F, 0x69);
+	mipi_dsi_dcs_write_seq(dsi, 0x95, 0xF5);
+	mipi_dsi_dcs_write_seq(dsi, 0x96, 0xF5);
+	mipi_dsi_dcs_write_seq(dsi, 0x9D, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x9E, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x69, 0x98);
+	mipi_dsi_dcs_write_seq(dsi, 0x75, 0xA2);
+	mipi_dsi_dcs_write_seq(dsi, 0x77, 0xB3);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x24);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x91, 0x44);
+	mipi_dsi_dcs_write_seq(dsi, 0x92, 0x7A);
+	mipi_dsi_dcs_write_seq(dsi, 0x93, 0x1A);
+	mipi_dsi_dcs_write_seq(dsi, 0x94, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0x9A, 0x08);
+	mipi_dsi_dcs_write_seq(dsi, 0x60, 0x96);
+	mipi_dsi_dcs_write_seq(dsi, 0x61, 0xD0);
+	mipi_dsi_dcs_write_seq(dsi, 0x63, 0x70);
+	mipi_dsi_dcs_write_seq(dsi, 0xC2, 0xCF);
+	mipi_dsi_dcs_write_seq(dsi, 0x9B, 0x0F);
+	mipi_dsi_dcs_write_seq(dsi, 0x9A, 0x08);
+	mipi_dsi_dcs_write_seq(dsi, 0x00, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0x01, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0x02, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0x03, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0x04, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0x05, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0x06, 0x22);
+	mipi_dsi_dcs_write_seq(dsi, 0x07, 0x06);
+	mipi_dsi_dcs_write_seq(dsi, 0x08, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x09, 0x1D);
+	mipi_dsi_dcs_write_seq(dsi, 0x0A, 0x1C);
+	mipi_dsi_dcs_write_seq(dsi, 0x0B, 0x13);
+	mipi_dsi_dcs_write_seq(dsi, 0x0C, 0x12);
+	mipi_dsi_dcs_write_seq(dsi, 0x0D, 0x11);
+	mipi_dsi_dcs_write_seq(dsi, 0x0E, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0x0F, 0x0F);
+	mipi_dsi_dcs_write_seq(dsi, 0x10, 0x0E);
+	mipi_dsi_dcs_write_seq(dsi, 0x11, 0x0D);
+	mipi_dsi_dcs_write_seq(dsi, 0x12, 0x0C);
+	mipi_dsi_dcs_write_seq(dsi, 0x13, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0x14, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0x15, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0x16, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0x17, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0x18, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0x19, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0x1A, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0x1B, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0x1C, 0x22);
+	mipi_dsi_dcs_write_seq(dsi, 0x1D, 0x06);
+	mipi_dsi_dcs_write_seq(dsi, 0x1E, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x1F, 0x1D);
+	mipi_dsi_dcs_write_seq(dsi, 0x20, 0x1C);
+	mipi_dsi_dcs_write_seq(dsi, 0x21, 0x13);
+	mipi_dsi_dcs_write_seq(dsi, 0x22, 0x12);
+	mipi_dsi_dcs_write_seq(dsi, 0x23, 0x11);
+	mipi_dsi_dcs_write_seq(dsi, 0x24, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0x25, 0x0F);
+	mipi_dsi_dcs_write_seq(dsi, 0x26, 0x0E);
+	mipi_dsi_dcs_write_seq(dsi, 0x27, 0x0D);
+	mipi_dsi_dcs_write_seq(dsi, 0x28, 0x0C);
+	mipi_dsi_dcs_write_seq(dsi, 0x29, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0x2A, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0x2B, 0x03);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x2F, 0x05);
+	mipi_dsi_dcs_write_seq(dsi, 0x30, 0x32);
+	mipi_dsi_dcs_write_seq(dsi, 0x31, 0x43);
+	mipi_dsi_dcs_write_seq(dsi, 0x33, 0x05);
+	mipi_dsi_dcs_write_seq(dsi, 0x34, 0x32);
+	mipi_dsi_dcs_write_seq(dsi, 0x35, 0x43);
+	mipi_dsi_dcs_write_seq(dsi, 0x37, 0x44);
+	mipi_dsi_dcs_write_seq(dsi, 0x38, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0x39, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x3A, 0x18);
+	mipi_dsi_dcs_write_seq(dsi, 0x3B, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x3D, 0x93);
+	mipi_dsi_dcs_write_seq(dsi, 0xAB, 0x44);
+	mipi_dsi_dcs_write_seq(dsi, 0xAC, 0x40);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x4D, 0x21);
+	mipi_dsi_dcs_write_seq(dsi, 0x4E, 0x43);
+	mipi_dsi_dcs_write_seq(dsi, 0x4F, 0x65);
+	mipi_dsi_dcs_write_seq(dsi, 0x50, 0x87);
+	mipi_dsi_dcs_write_seq(dsi, 0x51, 0x78);
+	mipi_dsi_dcs_write_seq(dsi, 0x52, 0x56);
+	mipi_dsi_dcs_write_seq(dsi, 0x53, 0x34);
+	mipi_dsi_dcs_write_seq(dsi, 0x54, 0x21);
+	mipi_dsi_dcs_write_seq(dsi, 0x55, 0x83);
+	mipi_dsi_dcs_write_seq(dsi, 0x56, 0x08);
+	mipi_dsi_dcs_write_seq(dsi, 0x58, 0x21);
+	mipi_dsi_dcs_write_seq(dsi, 0x59, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0x5A, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x5B, 0x2C);
+	mipi_dsi_dcs_write_seq(dsi, 0x5E, 0x00, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0x5F, 0x00);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x7A, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x7B, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x7C, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x7D, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x7E, 0x20);
+	mipi_dsi_dcs_write_seq(dsi, 0x7F, 0x3C);
+	mipi_dsi_dcs_write_seq(dsi, 0x80, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x81, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x82, 0x08);
+	mipi_dsi_dcs_write_seq(dsi, 0x97, 0x02);
+	mipi_dsi_dcs_write_seq(dsi, 0xC5, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0xDA, 0x05);
+	mipi_dsi_dcs_write_seq(dsi, 0xDB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xDC, 0x7A);
+	mipi_dsi_dcs_write_seq(dsi, 0xDD, 0x55);
+	mipi_dsi_dcs_write_seq(dsi, 0xDE, 0x27);
+	mipi_dsi_dcs_write_seq(dsi, 0xDF, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xE0, 0x7A);
+	mipi_dsi_dcs_write_seq(dsi, 0xE1, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xE2, 0x7A);
+	mipi_dsi_dcs_write_seq(dsi, 0xE3, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xE4, 0x7A);
+	mipi_dsi_dcs_write_seq(dsi, 0xE5, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xE6, 0x7A);
+	mipi_dsi_dcs_write_seq(dsi, 0xE7, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xE8, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xE9, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xEA, 0x7A);
+	mipi_dsi_dcs_write_seq(dsi, 0xEB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xEE, 0x7A);
+	mipi_dsi_dcs_write_seq(dsi, 0xEF, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xF0, 0x7A);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x25);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x05, 0x00);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x13, 0x02);
+	mipi_dsi_dcs_write_seq(dsi, 0x14, 0xDF);
+	mipi_dsi_dcs_write_seq(dsi, 0xF1, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0x1E, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x1F, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x20, 0x2C);
+	mipi_dsi_dcs_write_seq(dsi, 0x25, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x26, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x27, 0x2C);
+	mipi_dsi_dcs_write_seq(dsi, 0x3F, 0x80);
+	mipi_dsi_dcs_write_seq(dsi, 0x40, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x43, 0x00);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x44, 0x18);
+	mipi_dsi_dcs_write_seq(dsi, 0x45, 0x00);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x48, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x49, 0x2C);
+	mipi_dsi_dcs_write_seq(dsi, 0x5B, 0x80);
+	mipi_dsi_dcs_write_seq(dsi, 0x5C, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x5D, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x5E, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x61, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x62, 0x2C);
+	mipi_dsi_dcs_write_seq(dsi, 0x68, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x26);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x00, 0xA1);
+	mipi_dsi_dcs_write_seq(dsi, 0x02, 0x31);
+	mipi_dsi_dcs_write_seq(dsi, 0x0A, 0xF2);
+	mipi_dsi_dcs_write_seq(dsi, 0x04, 0x28);
+	mipi_dsi_dcs_write_seq(dsi, 0x06, 0x30);
+	mipi_dsi_dcs_write_seq(dsi, 0x0C, 0x16);
+	mipi_dsi_dcs_write_seq(dsi, 0x0D, 0x0D);
+	mipi_dsi_dcs_write_seq(dsi, 0x0F, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x11, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x12, 0x50);
+	mipi_dsi_dcs_write_seq(dsi, 0x13, 0x56);
+	mipi_dsi_dcs_write_seq(dsi, 0x14, 0x57);
+	mipi_dsi_dcs_write_seq(dsi, 0x15, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x16, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0x17, 0xA0);
+	mipi_dsi_dcs_write_seq(dsi, 0x18, 0x86);
+	mipi_dsi_dcs_write_seq(dsi, 0x22, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x23, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x19, 0x0D);
+	mipi_dsi_dcs_write_seq(dsi, 0x1A, 0x7F);
+	mipi_dsi_dcs_write_seq(dsi, 0x1B, 0x0C);
+	mipi_dsi_dcs_write_seq(dsi, 0x1C, 0xBF);
+	mipi_dsi_dcs_write_seq(dsi, 0x2A, 0x0D);
+	mipi_dsi_dcs_write_seq(dsi, 0x2B, 0x7F);
+	mipi_dsi_dcs_write_seq(dsi, 0x20, 0x00);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x1D, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x1E, 0x78);
+	mipi_dsi_dcs_write_seq(dsi, 0x1F, 0x78);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x2F, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0x30, 0x78);
+	mipi_dsi_dcs_write_seq(dsi, 0x33, 0x78);
+	mipi_dsi_dcs_write_seq(dsi, 0x34, 0x66);
+	mipi_dsi_dcs_write_seq(dsi, 0x35, 0x11);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x39, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0x3A, 0x78);
+	mipi_dsi_dcs_write_seq(dsi, 0x3B, 0x06);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xC8, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x84);
+	mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x4E);
+	mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x00);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xA9, 0x50);
+	mipi_dsi_dcs_write_seq(dsi, 0xAA, 0x4F);
+	mipi_dsi_dcs_write_seq(dsi, 0xAB, 0x4D);
+	mipi_dsi_dcs_write_seq(dsi, 0xAC, 0x4A);
+	mipi_dsi_dcs_write_seq(dsi, 0xAD, 0x48);
+	mipi_dsi_dcs_write_seq(dsi, 0xAE, 0x46);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x27);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x18);
+	mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xC2, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x56, 0x06);
+	mipi_dsi_dcs_write_seq(dsi, 0x58, 0x80);
+	mipi_dsi_dcs_write_seq(dsi, 0x59, 0x75);
+	mipi_dsi_dcs_write_seq(dsi, 0x5A, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x5B, 0x02);
+	mipi_dsi_dcs_write_seq(dsi, 0x5C, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x5D, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x5E, 0x20);
+	mipi_dsi_dcs_write_seq(dsi, 0x5F, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0x60, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x61, 0x2E);
+	mipi_dsi_dcs_write_seq(dsi, 0x62, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x63, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x64, 0x43);
+	mipi_dsi_dcs_write_seq(dsi, 0x65, 0x2D);
+	mipi_dsi_dcs_write_seq(dsi, 0x66, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x67, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x68, 0x43);
+	mipi_dsi_dcs_write_seq(dsi, 0x98, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xB4, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0x9B, 0xBD);
+	mipi_dsi_dcs_write_seq(dsi, 0xA0, 0x90);
+	mipi_dsi_dcs_write_seq(dsi, 0xAB, 0x1B);
+	mipi_dsi_dcs_write_seq(dsi, 0xBC, 0x0C);
+	mipi_dsi_dcs_write_seq(dsi, 0xBD, 0x28);
+
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x2A);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x22, 0x2F);
+	mipi_dsi_dcs_write_seq(dsi, 0x23, 0x08);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x24, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x25, 0x65);
+	mipi_dsi_dcs_write_seq(dsi, 0x26, 0xF8);
+	mipi_dsi_dcs_write_seq(dsi, 0x27, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x28, 0x1A);
+	mipi_dsi_dcs_write_seq(dsi, 0x29, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x2A, 0x1A);
+	mipi_dsi_dcs_write_seq(dsi, 0x2B, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x2D, 0x1A);
+
+	mipi_dsi_dcs_write_seq(dsi, 0x64, 0x96);
+	mipi_dsi_dcs_write_seq(dsi, 0x65, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x66, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x6A, 0x96);
+	mipi_dsi_dcs_write_seq(dsi, 0x6B, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x6C, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x70, 0x92);
+	mipi_dsi_dcs_write_seq(dsi, 0x71, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x72, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xA2, 0x33);
+	mipi_dsi_dcs_write_seq(dsi, 0xA3, 0x30);
+	mipi_dsi_dcs_write_seq(dsi, 0xA4, 0xC0);
+	mipi_dsi_dcs_write_seq(dsi, 0xE8, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x97, 0x3C);
+	mipi_dsi_dcs_write_seq(dsi, 0x98, 0x02);
+	mipi_dsi_dcs_write_seq(dsi, 0x99, 0x95);
+	mipi_dsi_dcs_write_seq(dsi, 0x9A, 0x06);
+	mipi_dsi_dcs_write_seq(dsi, 0x9B, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x9C, 0x0B);
+	mipi_dsi_dcs_write_seq(dsi, 0x9D, 0x0A);
+	mipi_dsi_dcs_write_seq(dsi, 0x9E, 0x90);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0xF0);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x3A, 0x08);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0xD0);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x00, 0x33);
+	mipi_dsi_dcs_write_seq(dsi, 0x08, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x09, 0xBF);
+	mipi_dsi_dcs_write_seq(dsi, 0x2F, 0x33);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x23);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x00, 0x80);
+	mipi_dsi_dcs_write_seq(dsi, 0x07, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x20);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0x30, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x24);
+	mipi_dsi_dcs_write_seq(dsi, 0x5C, 0x88);
+	mipi_dsi_dcs_write_seq(dsi, 0x5D, 0x08);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0xB9, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x20);
+	mipi_dsi_dcs_write_seq(dsi, 0x18, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0xB9, 0x02);
+	mipi_dsi_dcs_write_seq(dsi, 0xFF, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xBB, 0x13);
+	mipi_dsi_dcs_write_seq(dsi, 0x3B, 0x03, 0x96, 0x1A, 0x04, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0x35, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0x51, 0x0F, 0xFF);
+	mipi_dsi_dcs_write_seq(dsi, 0x53, 0x24);
+	msleep(100);
+	ret = mipi_dsi_dcs_exit_sleep_mode(dsi);
+	if (ret)
+		return ret;
+	msleep(200);
+	ret = mipi_dsi_dcs_set_display_on(dsi);
+	if (ret)
+		return ret;
+	msleep(100);
 
-static const struct panel_init_cmd auo_b101uan08_3_init_cmd[] = {
-	_INIT_DELAY_CMD(24),
-	_INIT_DCS_CMD(0xB0, 0x01),
-	_INIT_DCS_CMD(0xC0, 0x48),
-	_INIT_DCS_CMD(0xC1, 0x48),
-	_INIT_DCS_CMD(0xC2, 0x47),
-	_INIT_DCS_CMD(0xC3, 0x47),
-	_INIT_DCS_CMD(0xC4, 0x46),
-	_INIT_DCS_CMD(0xC5, 0x46),
-	_INIT_DCS_CMD(0xC6, 0x45),
-	_INIT_DCS_CMD(0xC7, 0x45),
-	_INIT_DCS_CMD(0xC8, 0x64),
-	_INIT_DCS_CMD(0xC9, 0x64),
-	_INIT_DCS_CMD(0xCA, 0x4F),
-	_INIT_DCS_CMD(0xCB, 0x4F),
-	_INIT_DCS_CMD(0xCC, 0x40),
-	_INIT_DCS_CMD(0xCD, 0x40),
-	_INIT_DCS_CMD(0xCE, 0x66),
-	_INIT_DCS_CMD(0xCF, 0x66),
-	_INIT_DCS_CMD(0xD0, 0x4F),
-	_INIT_DCS_CMD(0xD1, 0x4F),
-	_INIT_DCS_CMD(0xD2, 0x41),
-	_INIT_DCS_CMD(0xD3, 0x41),
-	_INIT_DCS_CMD(0xD4, 0x48),
-	_INIT_DCS_CMD(0xD5, 0x48),
-	_INIT_DCS_CMD(0xD6, 0x47),
-	_INIT_DCS_CMD(0xD7, 0x47),
-	_INIT_DCS_CMD(0xD8, 0x46),
-	_INIT_DCS_CMD(0xD9, 0x46),
-	_INIT_DCS_CMD(0xDA, 0x45),
-	_INIT_DCS_CMD(0xDB, 0x45),
-	_INIT_DCS_CMD(0xDC, 0x64),
-	_INIT_DCS_CMD(0xDD, 0x64),
-	_INIT_DCS_CMD(0xDE, 0x4F),
-	_INIT_DCS_CMD(0xDF, 0x4F),
-	_INIT_DCS_CMD(0xE0, 0x40),
-	_INIT_DCS_CMD(0xE1, 0x40),
-	_INIT_DCS_CMD(0xE2, 0x66),
-	_INIT_DCS_CMD(0xE3, 0x66),
-	_INIT_DCS_CMD(0xE4, 0x4F),
-	_INIT_DCS_CMD(0xE5, 0x4F),
-	_INIT_DCS_CMD(0xE6, 0x41),
-	_INIT_DCS_CMD(0xE7, 0x41),
-	_INIT_DELAY_CMD(150),
-	{},
-};
+	return 0;
+}
 
-static const struct panel_init_cmd starry_qfh032011_53g_init_cmd[] = {
-	_INIT_DCS_CMD(0xB0, 0x01),
-	_INIT_DCS_CMD(0xC3, 0x4F),
-	_INIT_DCS_CMD(0xC4, 0x40),
-	_INIT_DCS_CMD(0xC5, 0x40),
-	_INIT_DCS_CMD(0xC6, 0x40),
-	_INIT_DCS_CMD(0xC7, 0x40),
-	_INIT_DCS_CMD(0xC8, 0x4D),
-	_INIT_DCS_CMD(0xC9, 0x52),
-	_INIT_DCS_CMD(0xCA, 0x51),
-	_INIT_DCS_CMD(0xCD, 0x5D),
-	_INIT_DCS_CMD(0xCE, 0x5B),
-	_INIT_DCS_CMD(0xCF, 0x4B),
-	_INIT_DCS_CMD(0xD0, 0x49),
-	_INIT_DCS_CMD(0xD1, 0x47),
-	_INIT_DCS_CMD(0xD2, 0x45),
-	_INIT_DCS_CMD(0xD3, 0x41),
-	_INIT_DCS_CMD(0xD7, 0x50),
-	_INIT_DCS_CMD(0xD8, 0x40),
-	_INIT_DCS_CMD(0xD9, 0x40),
-	_INIT_DCS_CMD(0xDA, 0x40),
-	_INIT_DCS_CMD(0xDB, 0x40),
-	_INIT_DCS_CMD(0xDC, 0x4E),
-	_INIT_DCS_CMD(0xDD, 0x52),
-	_INIT_DCS_CMD(0xDE, 0x51),
-	_INIT_DCS_CMD(0xE1, 0x5E),
-	_INIT_DCS_CMD(0xE2, 0x5C),
-	_INIT_DCS_CMD(0xE3, 0x4C),
-	_INIT_DCS_CMD(0xE4, 0x4A),
-	_INIT_DCS_CMD(0xE5, 0x48),
-	_INIT_DCS_CMD(0xE6, 0x46),
-	_INIT_DCS_CMD(0xE7, 0x42),
-	_INIT_DCS_CMD(0xB0, 0x03),
-	_INIT_DCS_CMD(0xBE, 0x03),
-	_INIT_DCS_CMD(0xCC, 0x44),
-	_INIT_DCS_CMD(0xC8, 0x07),
-	_INIT_DCS_CMD(0xC9, 0x05),
-	_INIT_DCS_CMD(0xCA, 0x42),
-	_INIT_DCS_CMD(0xCD, 0x3E),
-	_INIT_DCS_CMD(0xCF, 0x60),
-	_INIT_DCS_CMD(0xD2, 0x04),
-	_INIT_DCS_CMD(0xD3, 0x04),
-	_INIT_DCS_CMD(0xD4, 0x01),
-	_INIT_DCS_CMD(0xD5, 0x00),
-	_INIT_DCS_CMD(0xD6, 0x03),
-	_INIT_DCS_CMD(0xD7, 0x04),
-	_INIT_DCS_CMD(0xD9, 0x01),
-	_INIT_DCS_CMD(0xDB, 0x01),
-	_INIT_DCS_CMD(0xE4, 0xF0),
-	_INIT_DCS_CMD(0xE5, 0x0A),
-	_INIT_DCS_CMD(0xB0, 0x00),
-	_INIT_DCS_CMD(0xCC, 0x08),
-	_INIT_DCS_CMD(0xC2, 0x08),
-	_INIT_DCS_CMD(0xC4, 0x10),
-	_INIT_DCS_CMD(0xB0, 0x02),
-	_INIT_DCS_CMD(0xC0, 0x00),
-	_INIT_DCS_CMD(0xC1, 0x0A),
-	_INIT_DCS_CMD(0xC2, 0x20),
-	_INIT_DCS_CMD(0xC3, 0x24),
-	_INIT_DCS_CMD(0xC4, 0x23),
-	_INIT_DCS_CMD(0xC5, 0x29),
-	_INIT_DCS_CMD(0xC6, 0x23),
-	_INIT_DCS_CMD(0xC7, 0x1C),
-	_INIT_DCS_CMD(0xC8, 0x19),
-	_INIT_DCS_CMD(0xC9, 0x17),
-	_INIT_DCS_CMD(0xCA, 0x17),
-	_INIT_DCS_CMD(0xCB, 0x18),
-	_INIT_DCS_CMD(0xCC, 0x1A),
-	_INIT_DCS_CMD(0xCD, 0x1E),
-	_INIT_DCS_CMD(0xCE, 0x20),
-	_INIT_DCS_CMD(0xCF, 0x23),
-	_INIT_DCS_CMD(0xD0, 0x07),
-	_INIT_DCS_CMD(0xD1, 0x00),
-	_INIT_DCS_CMD(0xD2, 0x00),
-	_INIT_DCS_CMD(0xD3, 0x0A),
-	_INIT_DCS_CMD(0xD4, 0x13),
-	_INIT_DCS_CMD(0xD5, 0x1C),
-	_INIT_DCS_CMD(0xD6, 0x1A),
-	_INIT_DCS_CMD(0xD7, 0x13),
-	_INIT_DCS_CMD(0xD8, 0x17),
-	_INIT_DCS_CMD(0xD9, 0x1C),
-	_INIT_DCS_CMD(0xDA, 0x19),
-	_INIT_DCS_CMD(0xDB, 0x17),
-	_INIT_DCS_CMD(0xDC, 0x17),
-	_INIT_DCS_CMD(0xDD, 0x18),
-	_INIT_DCS_CMD(0xDE, 0x1A),
-	_INIT_DCS_CMD(0xDF, 0x1E),
-	_INIT_DCS_CMD(0xE0, 0x20),
-	_INIT_DCS_CMD(0xE1, 0x23),
-	_INIT_DCS_CMD(0xE2, 0x07),
-	_INIT_DCS_CMD(0X11),
-	_INIT_DELAY_CMD(120),
-	_INIT_DCS_CMD(0X29),
-	_INIT_DELAY_CMD(80),
-	{},
-};
+int boe_init(struct mipi_dsi_device *dsi)
+{
+	msleep(24);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x05);
+	mipi_dsi_dcs_write_seq(dsi, 0xB1, 0xE5);
+	mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x52);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x88);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0xBA, 0x8B);
+	mipi_dsi_dcs_write_seq(dsi, 0xBF, 0x1A);
+	mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x0F);
+	mipi_dsi_dcs_write_seq(dsi, 0xC2, 0x0C);
+	mipi_dsi_dcs_write_seq(dsi, 0xC3, 0x02);
+	mipi_dsi_dcs_write_seq(dsi, 0xC4, 0x0C);
+	mipi_dsi_dcs_write_seq(dsi, 0xC5, 0x02);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xE0, 0x26);
+	mipi_dsi_dcs_write_seq(dsi, 0xE1, 0x26);
+	mipi_dsi_dcs_write_seq(dsi, 0xDC, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xDD, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xCC, 0x26);
+	mipi_dsi_dcs_write_seq(dsi, 0xCD, 0x26);
+	mipi_dsi_dcs_write_seq(dsi, 0xC8, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xD2, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0xD3, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0xE6, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0xE7, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0xC4, 0x09);
+	mipi_dsi_dcs_write_seq(dsi, 0xC5, 0x09);
+	mipi_dsi_dcs_write_seq(dsi, 0xD8, 0x0A);
+	mipi_dsi_dcs_write_seq(dsi, 0xD9, 0x0A);
+	mipi_dsi_dcs_write_seq(dsi, 0xC2, 0x0B);
+	mipi_dsi_dcs_write_seq(dsi, 0xC3, 0x0B);
+	mipi_dsi_dcs_write_seq(dsi, 0xD6, 0x0C);
+	mipi_dsi_dcs_write_seq(dsi, 0xD7, 0x0C);
+	mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x05);
+	mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x05);
+	mipi_dsi_dcs_write_seq(dsi, 0xD4, 0x06);
+	mipi_dsi_dcs_write_seq(dsi, 0xD5, 0x06);
+	mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x07);
+	mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x07);
+	mipi_dsi_dcs_write_seq(dsi, 0xDE, 0x08);
+	mipi_dsi_dcs_write_seq(dsi, 0xDF, 0x08);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x02);
+	mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x0D);
+	mipi_dsi_dcs_write_seq(dsi, 0xC2, 0x17);
+	mipi_dsi_dcs_write_seq(dsi, 0xC3, 0x26);
+	mipi_dsi_dcs_write_seq(dsi, 0xC4, 0x31);
+	mipi_dsi_dcs_write_seq(dsi, 0xC5, 0x1C);
+	mipi_dsi_dcs_write_seq(dsi, 0xC6, 0x2C);
+	mipi_dsi_dcs_write_seq(dsi, 0xC7, 0x33);
+	mipi_dsi_dcs_write_seq(dsi, 0xC8, 0x31);
+	mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x37);
+	mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x37);
+	mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x37);
+	mipi_dsi_dcs_write_seq(dsi, 0xCC, 0x39);
+	mipi_dsi_dcs_write_seq(dsi, 0xCD, 0x2E);
+	mipi_dsi_dcs_write_seq(dsi, 0xCE, 0x2F);
+	mipi_dsi_dcs_write_seq(dsi, 0xCF, 0x2F);
+	mipi_dsi_dcs_write_seq(dsi, 0xD0, 0x07);
+	mipi_dsi_dcs_write_seq(dsi, 0xD2, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xD3, 0x0D);
+	mipi_dsi_dcs_write_seq(dsi, 0xD4, 0x17);
+	mipi_dsi_dcs_write_seq(dsi, 0xD5, 0x26);
+	mipi_dsi_dcs_write_seq(dsi, 0xD6, 0x31);
+	mipi_dsi_dcs_write_seq(dsi, 0xD7, 0x3F);
+	mipi_dsi_dcs_write_seq(dsi, 0xD8, 0x3F);
+	mipi_dsi_dcs_write_seq(dsi, 0xD9, 0x3F);
+	mipi_dsi_dcs_write_seq(dsi, 0xDA, 0x3F);
+	mipi_dsi_dcs_write_seq(dsi, 0xDB, 0x37);
+	mipi_dsi_dcs_write_seq(dsi, 0xDC, 0x37);
+	mipi_dsi_dcs_write_seq(dsi, 0xDD, 0x37);
+	mipi_dsi_dcs_write_seq(dsi, 0xDE, 0x39);
+	mipi_dsi_dcs_write_seq(dsi, 0xDF, 0x2E);
+	mipi_dsi_dcs_write_seq(dsi, 0xE0, 0x2F);
+	mipi_dsi_dcs_write_seq(dsi, 0xE1, 0x2F);
+	mipi_dsi_dcs_write_seq(dsi, 0xE2, 0x07);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0xC8, 0x0B);
+	mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x07);
+	mipi_dsi_dcs_write_seq(dsi, 0xC3, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xE7, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xC5, 0x2A);
+	mipi_dsi_dcs_write_seq(dsi, 0xDE, 0x2A);
+	mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x43);
+	mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x07);
+	mipi_dsi_dcs_write_seq(dsi, 0xE4, 0xC0);
+	mipi_dsi_dcs_write_seq(dsi, 0xE5, 0x0D);
+	mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x06);
+	mipi_dsi_dcs_write_seq(dsi, 0xB8, 0xA5);
+	mipi_dsi_dcs_write_seq(dsi, 0xC0, 0xA5);
+	mipi_dsi_dcs_write_seq(dsi, 0xC7, 0x0F);
+	mipi_dsi_dcs_write_seq(dsi, 0xD5, 0x32);
+	mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xBC, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x07);
+	mipi_dsi_dcs_write_seq(dsi, 0xB1, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xB2, 0x02);
+	mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x0F);
+	mipi_dsi_dcs_write_seq(dsi, 0xB4, 0x25);
+	mipi_dsi_dcs_write_seq(dsi, 0xB5, 0x39);
+	mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x4E);
+	mipi_dsi_dcs_write_seq(dsi, 0xB7, 0x72);
+	mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x97);
+	mipi_dsi_dcs_write_seq(dsi, 0xB9, 0xDC);
+	mipi_dsi_dcs_write_seq(dsi, 0xBA, 0x22);
+	mipi_dsi_dcs_write_seq(dsi, 0xBB, 0xA4);
+	mipi_dsi_dcs_write_seq(dsi, 0xBC, 0x2B);
+	mipi_dsi_dcs_write_seq(dsi, 0xBD, 0x2F);
+	mipi_dsi_dcs_write_seq(dsi, 0xBE, 0xA9);
+	mipi_dsi_dcs_write_seq(dsi, 0xBF, 0x25);
+	mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x61);
+	mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x97);
+	mipi_dsi_dcs_write_seq(dsi, 0xC2, 0xB2);
+	mipi_dsi_dcs_write_seq(dsi, 0xC3, 0xCD);
+	mipi_dsi_dcs_write_seq(dsi, 0xC4, 0xD9);
+	mipi_dsi_dcs_write_seq(dsi, 0xC5, 0xE7);
+	mipi_dsi_dcs_write_seq(dsi, 0xC6, 0xF4);
+	mipi_dsi_dcs_write_seq(dsi, 0xC7, 0xFA);
+	mipi_dsi_dcs_write_seq(dsi, 0xC8, 0xFC);
+	mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x16);
+	mipi_dsi_dcs_write_seq(dsi, 0xCC, 0xAF);
+	mipi_dsi_dcs_write_seq(dsi, 0xCD, 0xFF);
+	mipi_dsi_dcs_write_seq(dsi, 0xCE, 0xFF);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x08);
+	mipi_dsi_dcs_write_seq(dsi, 0xB1, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0xB2, 0x05);
+	mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x11);
+	mipi_dsi_dcs_write_seq(dsi, 0xB4, 0x24);
+	mipi_dsi_dcs_write_seq(dsi, 0xB5, 0x39);
+	mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x4F);
+	mipi_dsi_dcs_write_seq(dsi, 0xB7, 0x72);
+	mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x98);
+	mipi_dsi_dcs_write_seq(dsi, 0xB9, 0xDC);
+	mipi_dsi_dcs_write_seq(dsi, 0xBA, 0x23);
+	mipi_dsi_dcs_write_seq(dsi, 0xBB, 0xA6);
+	mipi_dsi_dcs_write_seq(dsi, 0xBC, 0x2C);
+	mipi_dsi_dcs_write_seq(dsi, 0xBD, 0x30);
+	mipi_dsi_dcs_write_seq(dsi, 0xBE, 0xAA);
+	mipi_dsi_dcs_write_seq(dsi, 0xBF, 0x26);
+	mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x62);
+	mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x9B);
+	mipi_dsi_dcs_write_seq(dsi, 0xC2, 0xB5);
+	mipi_dsi_dcs_write_seq(dsi, 0xC3, 0xCF);
+	mipi_dsi_dcs_write_seq(dsi, 0xC4, 0xDB);
+	mipi_dsi_dcs_write_seq(dsi, 0xC5, 0xE8);
+	mipi_dsi_dcs_write_seq(dsi, 0xC6, 0xF5);
+	mipi_dsi_dcs_write_seq(dsi, 0xC7, 0xFA);
+	mipi_dsi_dcs_write_seq(dsi, 0xC8, 0xFC);
+	mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x16);
+	mipi_dsi_dcs_write_seq(dsi, 0xCC, 0xAF);
+	mipi_dsi_dcs_write_seq(dsi, 0xCD, 0xFF);
+	mipi_dsi_dcs_write_seq(dsi, 0xCE, 0xFF);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x09);
+	mipi_dsi_dcs_write_seq(dsi, 0xB1, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0xB2, 0x02);
+	mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x16);
+	mipi_dsi_dcs_write_seq(dsi, 0xB4, 0x24);
+	mipi_dsi_dcs_write_seq(dsi, 0xB5, 0x3B);
+	mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x4F);
+	mipi_dsi_dcs_write_seq(dsi, 0xB7, 0x73);
+	mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x99);
+	mipi_dsi_dcs_write_seq(dsi, 0xB9, 0xE0);
+	mipi_dsi_dcs_write_seq(dsi, 0xBA, 0x26);
+	mipi_dsi_dcs_write_seq(dsi, 0xBB, 0xAD);
+	mipi_dsi_dcs_write_seq(dsi, 0xBC, 0x36);
+	mipi_dsi_dcs_write_seq(dsi, 0xBD, 0x3A);
+	mipi_dsi_dcs_write_seq(dsi, 0xBE, 0xAE);
+	mipi_dsi_dcs_write_seq(dsi, 0xBF, 0x2A);
+	mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x66);
+	mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x9E);
+	mipi_dsi_dcs_write_seq(dsi, 0xC2, 0xB8);
+	mipi_dsi_dcs_write_seq(dsi, 0xC3, 0xD1);
+	mipi_dsi_dcs_write_seq(dsi, 0xC4, 0xDD);
+	mipi_dsi_dcs_write_seq(dsi, 0xC5, 0xE9);
+	mipi_dsi_dcs_write_seq(dsi, 0xC6, 0xF6);
+	mipi_dsi_dcs_write_seq(dsi, 0xC7, 0xFA);
+	mipi_dsi_dcs_write_seq(dsi, 0xC8, 0xFC);
+	mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x16);
+	mipi_dsi_dcs_write_seq(dsi, 0xCC, 0xAF);
+	mipi_dsi_dcs_write_seq(dsi, 0xCD, 0xFF);
+	mipi_dsi_dcs_write_seq(dsi, 0xCE, 0xFF);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x0A);
+	mipi_dsi_dcs_write_seq(dsi, 0xB1, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xB2, 0x02);
+	mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x0F);
+	mipi_dsi_dcs_write_seq(dsi, 0xB4, 0x25);
+	mipi_dsi_dcs_write_seq(dsi, 0xB5, 0x39);
+	mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x4E);
+	mipi_dsi_dcs_write_seq(dsi, 0xB7, 0x72);
+	mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x97);
+	mipi_dsi_dcs_write_seq(dsi, 0xB9, 0xDC);
+	mipi_dsi_dcs_write_seq(dsi, 0xBA, 0x22);
+	mipi_dsi_dcs_write_seq(dsi, 0xBB, 0xA4);
+	mipi_dsi_dcs_write_seq(dsi, 0xBC, 0x2B);
+	mipi_dsi_dcs_write_seq(dsi, 0xBD, 0x2F);
+	mipi_dsi_dcs_write_seq(dsi, 0xBE, 0xA9);
+	mipi_dsi_dcs_write_seq(dsi, 0xBF, 0x25);
+	mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x61);
+	mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x97);
+	mipi_dsi_dcs_write_seq(dsi, 0xC2, 0xB2);
+	mipi_dsi_dcs_write_seq(dsi, 0xC3, 0xCD);
+	mipi_dsi_dcs_write_seq(dsi, 0xC4, 0xD9);
+	mipi_dsi_dcs_write_seq(dsi, 0xC5, 0xE7);
+	mipi_dsi_dcs_write_seq(dsi, 0xC6, 0xF4);
+	mipi_dsi_dcs_write_seq(dsi, 0xC7, 0xFA);
+	mipi_dsi_dcs_write_seq(dsi, 0xC8, 0xFC);
+	mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x16);
+	mipi_dsi_dcs_write_seq(dsi, 0xCC, 0xAF);
+	mipi_dsi_dcs_write_seq(dsi, 0xCD, 0xFF);
+	mipi_dsi_dcs_write_seq(dsi, 0xCE, 0xFF);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x0B);
+	mipi_dsi_dcs_write_seq(dsi, 0xB1, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0xB2, 0x05);
+	mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x11);
+	mipi_dsi_dcs_write_seq(dsi, 0xB4, 0x24);
+	mipi_dsi_dcs_write_seq(dsi, 0xB5, 0x39);
+	mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x4F);
+	mipi_dsi_dcs_write_seq(dsi, 0xB7, 0x72);
+	mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x98);
+	mipi_dsi_dcs_write_seq(dsi, 0xB9, 0xDC);
+	mipi_dsi_dcs_write_seq(dsi, 0xBA, 0x23);
+	mipi_dsi_dcs_write_seq(dsi, 0xBB, 0xA6);
+	mipi_dsi_dcs_write_seq(dsi, 0xBC, 0x2C);
+	mipi_dsi_dcs_write_seq(dsi, 0xBD, 0x30);
+	mipi_dsi_dcs_write_seq(dsi, 0xBE, 0xAA);
+	mipi_dsi_dcs_write_seq(dsi, 0xBF, 0x26);
+	mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x62);
+	mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x9B);
+	mipi_dsi_dcs_write_seq(dsi, 0xC2, 0xB5);
+	mipi_dsi_dcs_write_seq(dsi, 0xC3, 0xCF);
+	mipi_dsi_dcs_write_seq(dsi, 0xC4, 0xDB);
+	mipi_dsi_dcs_write_seq(dsi, 0xC5, 0xE8);
+	mipi_dsi_dcs_write_seq(dsi, 0xC6, 0xF5);
+	mipi_dsi_dcs_write_seq(dsi, 0xC7, 0xFA);
+	mipi_dsi_dcs_write_seq(dsi, 0xC8, 0xFC);
+	mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x16);
+	mipi_dsi_dcs_write_seq(dsi, 0xCC, 0xAF);
+	mipi_dsi_dcs_write_seq(dsi, 0xCD, 0xFF);
+	mipi_dsi_dcs_write_seq(dsi, 0xCE, 0xFF);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x0C);
+	mipi_dsi_dcs_write_seq(dsi, 0xB1, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0xB2, 0x02);
+	mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x16);
+	mipi_dsi_dcs_write_seq(dsi, 0xB4, 0x24);
+	mipi_dsi_dcs_write_seq(dsi, 0xB5, 0x3B);
+	mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x4F);
+	mipi_dsi_dcs_write_seq(dsi, 0xB7, 0x73);
+	mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x99);
+	mipi_dsi_dcs_write_seq(dsi, 0xB9, 0xE0);
+	mipi_dsi_dcs_write_seq(dsi, 0xBA, 0x26);
+	mipi_dsi_dcs_write_seq(dsi, 0xBB, 0xAD);
+	mipi_dsi_dcs_write_seq(dsi, 0xBC, 0x36);
+	mipi_dsi_dcs_write_seq(dsi, 0xBD, 0x3A);
+	mipi_dsi_dcs_write_seq(dsi, 0xBE, 0xAE);
+	mipi_dsi_dcs_write_seq(dsi, 0xBF, 0x2A);
+	mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x66);
+	mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x9E);
+	mipi_dsi_dcs_write_seq(dsi, 0xC2, 0xB8);
+	mipi_dsi_dcs_write_seq(dsi, 0xC3, 0xD1);
+	mipi_dsi_dcs_write_seq(dsi, 0xC4, 0xDD);
+	mipi_dsi_dcs_write_seq(dsi, 0xC5, 0xE9);
+	mipi_dsi_dcs_write_seq(dsi, 0xC6, 0xF6);
+	mipi_dsi_dcs_write_seq(dsi, 0xC7, 0xFA);
+	mipi_dsi_dcs_write_seq(dsi, 0xC8, 0xFC);
+	mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x16);
+	mipi_dsi_dcs_write_seq(dsi, 0xCC, 0xAF);
+	mipi_dsi_dcs_write_seq(dsi, 0xCD, 0xFF);
+	mipi_dsi_dcs_write_seq(dsi, 0xCE, 0xFF);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x08);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x68);
+	msleep(150);
 
-static inline struct boe_panel *to_boe_panel(struct drm_panel *panel)
+	return 0;
+}
+
+static int auo_kd101n80_45na_init(struct mipi_dsi_device *dsi)
 {
-	return container_of(panel, struct boe_panel, base);
+	int ret;
+
+	msleep(24);
+	ret = mipi_dsi_dcs_exit_sleep_mode(dsi);
+	if (ret)
+		return ret;
+	msleep(120);
+	ret = mipi_dsi_dcs_set_display_on(dsi);
+	if (ret)
+		return ret;
+	msleep(120);
+
+	return 0;
 }
 
-static int boe_panel_init_dcs_cmd(struct boe_panel *boe)
+static int auo_b101uan08_3_init(struct mipi_dsi_device *dsi)
 {
-	struct mipi_dsi_device *dsi = boe->dsi;
-	struct drm_panel *panel = &boe->base;
-	int i, err = 0;
-
-	if (boe->desc->init_cmds) {
-		const struct panel_init_cmd *init_cmds = boe->desc->init_cmds;
-
-		for (i = 0; init_cmds[i].len != 0; i++) {
-			const struct panel_init_cmd *cmd = &init_cmds[i];
-
-			switch (cmd->type) {
-			case DELAY_CMD:
-				msleep(cmd->data[0]);
-				err = 0;
-				break;
-
-			case INIT_DCS_CMD:
-				err = mipi_dsi_dcs_write(dsi, cmd->data[0],
-							 cmd->len <= 1 ? NULL :
-							 &cmd->data[1],
-							 cmd->len - 1);
-				break;
-
-			default:
-				err = -EINVAL;
-			}
-
-			if (err < 0) {
-				dev_err(panel->dev,
-					"failed to write command %u\n", i);
-				return err;
-			}
-		}
-	}
+	msleep(24);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x48);
+	mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x48);
+	mipi_dsi_dcs_write_seq(dsi, 0xC2, 0x47);
+	mipi_dsi_dcs_write_seq(dsi, 0xC3, 0x47);
+	mipi_dsi_dcs_write_seq(dsi, 0xC4, 0x46);
+	mipi_dsi_dcs_write_seq(dsi, 0xC5, 0x46);
+	mipi_dsi_dcs_write_seq(dsi, 0xC6, 0x45);
+	mipi_dsi_dcs_write_seq(dsi, 0xC7, 0x45);
+	mipi_dsi_dcs_write_seq(dsi, 0xC8, 0x64);
+	mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x64);
+	mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x4F);
+	mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x4F);
+	mipi_dsi_dcs_write_seq(dsi, 0xCC, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0xCD, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0xCE, 0x66);
+	mipi_dsi_dcs_write_seq(dsi, 0xCF, 0x66);
+	mipi_dsi_dcs_write_seq(dsi, 0xD0, 0x4F);
+	mipi_dsi_dcs_write_seq(dsi, 0xD1, 0x4F);
+	mipi_dsi_dcs_write_seq(dsi, 0xD2, 0x41);
+	mipi_dsi_dcs_write_seq(dsi, 0xD3, 0x41);
+	mipi_dsi_dcs_write_seq(dsi, 0xD4, 0x48);
+	mipi_dsi_dcs_write_seq(dsi, 0xD5, 0x48);
+	mipi_dsi_dcs_write_seq(dsi, 0xD6, 0x47);
+	mipi_dsi_dcs_write_seq(dsi, 0xD7, 0x47);
+	mipi_dsi_dcs_write_seq(dsi, 0xD8, 0x46);
+	mipi_dsi_dcs_write_seq(dsi, 0xD9, 0x46);
+	mipi_dsi_dcs_write_seq(dsi, 0xDA, 0x45);
+	mipi_dsi_dcs_write_seq(dsi, 0xDB, 0x45);
+	mipi_dsi_dcs_write_seq(dsi, 0xDC, 0x64);
+	mipi_dsi_dcs_write_seq(dsi, 0xDD, 0x64);
+	mipi_dsi_dcs_write_seq(dsi, 0xDE, 0x4F);
+	mipi_dsi_dcs_write_seq(dsi, 0xDF, 0x4F);
+	mipi_dsi_dcs_write_seq(dsi, 0xE0, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0xE1, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0xE2, 0x66);
+	mipi_dsi_dcs_write_seq(dsi, 0xE3, 0x66);
+	mipi_dsi_dcs_write_seq(dsi, 0xE4, 0x4F);
+	mipi_dsi_dcs_write_seq(dsi, 0xE5, 0x4F);
+	mipi_dsi_dcs_write_seq(dsi, 0xE6, 0x41);
+	mipi_dsi_dcs_write_seq(dsi, 0xE7, 0x41);
+	msleep(150);
+
+	return 0;
+}
+
+static int starry_qfh032011_53g_init(struct mipi_dsi_device *dsi)
+{
+	int ret;
+
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xC3, 0x4F);
+	mipi_dsi_dcs_write_seq(dsi, 0xC4, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0xC5, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0xC6, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0xC7, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0xC8, 0x4D);
+	mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x52);
+	mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x51);
+	mipi_dsi_dcs_write_seq(dsi, 0xCD, 0x5D);
+	mipi_dsi_dcs_write_seq(dsi, 0xCE, 0x5B);
+	mipi_dsi_dcs_write_seq(dsi, 0xCF, 0x4B);
+	mipi_dsi_dcs_write_seq(dsi, 0xD0, 0x49);
+	mipi_dsi_dcs_write_seq(dsi, 0xD1, 0x47);
+	mipi_dsi_dcs_write_seq(dsi, 0xD2, 0x45);
+	mipi_dsi_dcs_write_seq(dsi, 0xD3, 0x41);
+	mipi_dsi_dcs_write_seq(dsi, 0xD7, 0x50);
+	mipi_dsi_dcs_write_seq(dsi, 0xD8, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0xD9, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0xDA, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0xDB, 0x40);
+	mipi_dsi_dcs_write_seq(dsi, 0xDC, 0x4E);
+	mipi_dsi_dcs_write_seq(dsi, 0xDD, 0x52);
+	mipi_dsi_dcs_write_seq(dsi, 0xDE, 0x51);
+	mipi_dsi_dcs_write_seq(dsi, 0xE1, 0x5E);
+	mipi_dsi_dcs_write_seq(dsi, 0xE2, 0x5C);
+	mipi_dsi_dcs_write_seq(dsi, 0xE3, 0x4C);
+	mipi_dsi_dcs_write_seq(dsi, 0xE4, 0x4A);
+	mipi_dsi_dcs_write_seq(dsi, 0xE5, 0x48);
+	mipi_dsi_dcs_write_seq(dsi, 0xE6, 0x46);
+	mipi_dsi_dcs_write_seq(dsi, 0xE7, 0x42);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0xBE, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0xCC, 0x44);
+	mipi_dsi_dcs_write_seq(dsi, 0xC8, 0x07);
+	mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x05);
+	mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x42);
+	mipi_dsi_dcs_write_seq(dsi, 0xCD, 0x3E);
+	mipi_dsi_dcs_write_seq(dsi, 0xCF, 0x60);
+	mipi_dsi_dcs_write_seq(dsi, 0xD2, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0xD3, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0xD4, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xD5, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xD6, 0x03);
+	mipi_dsi_dcs_write_seq(dsi, 0xD7, 0x04);
+	mipi_dsi_dcs_write_seq(dsi, 0xD9, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xDB, 0x01);
+	mipi_dsi_dcs_write_seq(dsi, 0xE4, 0xF0);
+	mipi_dsi_dcs_write_seq(dsi, 0xE5, 0x0A);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xCC, 0x08);
+	mipi_dsi_dcs_write_seq(dsi, 0xC2, 0x08);
+	mipi_dsi_dcs_write_seq(dsi, 0xC4, 0x10);
+	mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x02);
+	mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x0A);
+	mipi_dsi_dcs_write_seq(dsi, 0xC2, 0x20);
+	mipi_dsi_dcs_write_seq(dsi, 0xC3, 0x24);
+	mipi_dsi_dcs_write_seq(dsi, 0xC4, 0x23);
+	mipi_dsi_dcs_write_seq(dsi, 0xC5, 0x29);
+	mipi_dsi_dcs_write_seq(dsi, 0xC6, 0x23);
+	mipi_dsi_dcs_write_seq(dsi, 0xC7, 0x1C);
+	mipi_dsi_dcs_write_seq(dsi, 0xC8, 0x19);
+	mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x17);
+	mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x17);
+	mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x18);
+	mipi_dsi_dcs_write_seq(dsi, 0xCC, 0x1A);
+	mipi_dsi_dcs_write_seq(dsi, 0xCD, 0x1E);
+	mipi_dsi_dcs_write_seq(dsi, 0xCE, 0x20);
+	mipi_dsi_dcs_write_seq(dsi, 0xCF, 0x23);
+	mipi_dsi_dcs_write_seq(dsi, 0xD0, 0x07);
+	mipi_dsi_dcs_write_seq(dsi, 0xD1, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xD2, 0x00);
+	mipi_dsi_dcs_write_seq(dsi, 0xD3, 0x0A);
+	mipi_dsi_dcs_write_seq(dsi, 0xD4, 0x13);
+	mipi_dsi_dcs_write_seq(dsi, 0xD5, 0x1C);
+	mipi_dsi_dcs_write_seq(dsi, 0xD6, 0x1A);
+	mipi_dsi_dcs_write_seq(dsi, 0xD7, 0x13);
+	mipi_dsi_dcs_write_seq(dsi, 0xD8, 0x17);
+	mipi_dsi_dcs_write_seq(dsi, 0xD9, 0x1C);
+	mipi_dsi_dcs_write_seq(dsi, 0xDA, 0x19);
+	mipi_dsi_dcs_write_seq(dsi, 0xDB, 0x17);
+	mipi_dsi_dcs_write_seq(dsi, 0xDC, 0x17);
+	mipi_dsi_dcs_write_seq(dsi, 0xDD, 0x18);
+	mipi_dsi_dcs_write_seq(dsi, 0xDE, 0x1A);
+	mipi_dsi_dcs_write_seq(dsi, 0xDF, 0x1E);
+	mipi_dsi_dcs_write_seq(dsi, 0xE0, 0x20);
+	mipi_dsi_dcs_write_seq(dsi, 0xE1, 0x23);
+	mipi_dsi_dcs_write_seq(dsi, 0xE2, 0x07);
+
+	ret = mipi_dsi_dcs_exit_sleep_mode(dsi);
+	if (ret)
+		return ret;
+	msleep(120);
+	ret = mipi_dsi_dcs_set_display_on(dsi);
+	if (ret)
+		return ret;
+	msleep(80);
+
 	return 0;
 }
 
+static inline struct boe_panel *to_boe_panel(struct drm_panel *panel)
+{
+	return container_of(panel, struct boe_panel, base);
+}
+
 static int boe_panel_enter_sleep_mode(struct boe_panel *boe)
 {
 	struct mipi_dsi_device *dsi = boe->dsi;
@@ -1373,10 +1349,12 @@ static int boe_panel_prepare(struct drm_panel *panel)
 	gpiod_set_value(boe->enable_gpio, 1);
 	usleep_range(6000, 10000);
 
-	ret = boe_panel_init_dcs_cmd(boe);
-	if (ret < 0) {
-		dev_err(panel->dev, "failed to init panel: %d\n", ret);
-		goto poweroff;
+	if (boe->desc->init) {
+		ret = boe->desc->init(boe->dsi);
+		if (ret < 0) {
+			dev_err(panel->dev, "failed to init panel: %d\n", ret);
+			goto poweroff;
+		}
 	}
 
 	boe->prepared = true;
@@ -1427,7 +1405,7 @@ static const struct panel_desc boe_tv110c9m_desc = {
 			| MIPI_DSI_MODE_VIDEO_HSE
 			| MIPI_DSI_CLOCK_NON_CONTINUOUS
 			| MIPI_DSI_MODE_VIDEO_BURST,
-	.init_cmds = boe_tv110c9m_init_cmd,
+	.init = boe_tv110c9m_init,
 };
 
 static const struct drm_display_mode inx_hj110iz_default_mode = {
@@ -1456,7 +1434,7 @@ static const struct panel_desc inx_hj110iz_desc = {
 			| MIPI_DSI_MODE_VIDEO_HSE
 			| MIPI_DSI_CLOCK_NON_CONTINUOUS
 			| MIPI_DSI_MODE_VIDEO_BURST,
-	.init_cmds = inx_hj110iz_init_cmd,
+	.init = inx_hj110iz_init,
 };
 
 static const struct drm_display_mode boe_tv101wum_nl6_default_mode = {
@@ -1482,7 +1460,7 @@ static const struct panel_desc boe_tv101wum_nl6_desc = {
 	.format = MIPI_DSI_FMT_RGB888,
 	.mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_SYNC_PULSE |
 		      MIPI_DSI_MODE_LPM,
-	.init_cmds = boe_init_cmd,
+	.init = boe_init,
 	.discharge_on_disable = false,
 };
 
@@ -1509,7 +1487,7 @@ static const struct panel_desc auo_kd101n80_45na_desc = {
 	.format = MIPI_DSI_FMT_RGB888,
 	.mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_SYNC_PULSE |
 		      MIPI_DSI_MODE_LPM,
-	.init_cmds = auo_kd101n80_45na_init_cmd,
+	.init = auo_kd101n80_45na_init,
 	.discharge_on_disable = true,
 };
 
@@ -1537,7 +1515,7 @@ static const struct panel_desc boe_tv101wum_n53_desc = {
 	.format = MIPI_DSI_FMT_RGB888,
 	.mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_SYNC_PULSE |
 		      MIPI_DSI_MODE_LPM,
-	.init_cmds = boe_init_cmd,
+	.init = boe_init,
 };
 
 static const struct drm_display_mode auo_b101uan08_3_default_mode = {
@@ -1564,7 +1542,7 @@ static const struct panel_desc auo_b101uan08_3_desc = {
 	.format = MIPI_DSI_FMT_RGB888,
 	.mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_SYNC_PULSE |
 		      MIPI_DSI_MODE_LPM,
-	.init_cmds = auo_b101uan08_3_init_cmd,
+	.init = auo_b101uan08_3_init,
 };
 
 static const struct drm_display_mode boe_tv105wum_nw0_default_mode = {
@@ -1591,7 +1569,7 @@ static const struct panel_desc boe_tv105wum_nw0_desc = {
 	.format = MIPI_DSI_FMT_RGB888,
 	.mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_SYNC_PULSE |
 		      MIPI_DSI_MODE_LPM,
-	.init_cmds = boe_init_cmd,
+	.init = boe_init,
 };
 
 static const struct drm_display_mode starry_qfh032011_53g_default_mode = {
@@ -1617,7 +1595,7 @@ static const struct panel_desc starry_qfh032011_53g_desc = {
 	.format = MIPI_DSI_FMT_RGB888,
 	.mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_SYNC_PULSE |
 		      MIPI_DSI_MODE_LPM,
-	.init_cmds = starry_qfh032011_53g_init_cmd,
+	.init = starry_qfh032011_53g_init,
 };
 
 static int boe_panel_get_modes(struct drm_panel *panel,

-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/2] drm/panel: boe-tv101wum-nl6: Drop surplus prepare tracking
  2023-06-15 20:21 [PATCH 0/2] Fix up the boe-tv101wum-nl6 panel driver Linus Walleij
  2023-06-15 20:21 ` [PATCH 1/2] drm/panel: boe-tv101wum-nl6: Drop macros and open code sequences Linus Walleij
@ 2023-06-15 20:21 ` Linus Walleij
  2023-06-16 16:44   ` Sam Ravnborg
  1 sibling, 1 reply; 6+ messages in thread
From: Linus Walleij @ 2023-06-15 20:21 UTC (permalink / raw)
  To: Ruihai Zhou, Stephen Boyd, yangcong, Jitao Shi, Neil Armstrong,
	Sam Ravnborg, David Airlie, Daniel Vetter
  Cc: linux-kernel, dri-devel

The DRM panel core already keeps track of if the panel is already
prepared so do not reimplement this.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c b/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c
index d19d30e134dd..412d4d99aec6 100644
--- a/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c
+++ b/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c
@@ -50,8 +50,6 @@ struct boe_panel {
 	struct regulator *avee;
 	struct regulator *avdd;
 	struct gpio_desc *enable_gpio;
-
-	bool prepared;
 };
 
 static int boe_tv110c9m_init(struct mipi_dsi_device *dsi)
@@ -1286,9 +1284,6 @@ static int boe_panel_unprepare(struct drm_panel *panel)
 {
 	struct boe_panel *boe = to_boe_panel(panel);
 
-	if (!boe->prepared)
-		return 0;
-
 	if (boe->desc->discharge_on_disable) {
 		regulator_disable(boe->avee);
 		regulator_disable(boe->avdd);
@@ -1307,8 +1302,6 @@ static int boe_panel_unprepare(struct drm_panel *panel)
 		regulator_disable(boe->pp3300);
 	}
 
-	boe->prepared = false;
-
 	return 0;
 }
 
@@ -1317,9 +1310,6 @@ static int boe_panel_prepare(struct drm_panel *panel)
 	struct boe_panel *boe = to_boe_panel(panel);
 	int ret;
 
-	if (boe->prepared)
-		return 0;
-
 	gpiod_set_value(boe->enable_gpio, 0);
 	usleep_range(1000, 1500);
 
@@ -1357,8 +1347,6 @@ static int boe_panel_prepare(struct drm_panel *panel)
 		}
 	}
 
-	boe->prepared = true;
-
 	return 0;
 
 poweroff:

-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] drm/panel: boe-tv101wum-nl6: Drop macros and open code sequences
  2023-06-15 20:21 ` [PATCH 1/2] drm/panel: boe-tv101wum-nl6: Drop macros and open code sequences Linus Walleij
@ 2023-06-15 22:10   ` kernel test robot
  2023-06-16 16:42   ` Sam Ravnborg
  1 sibling, 0 replies; 6+ messages in thread
From: kernel test robot @ 2023-06-15 22:10 UTC (permalink / raw)
  To: Linus Walleij, Ruihai Zhou, Stephen Boyd, yangcong, Jitao Shi,
	Neil Armstrong, Sam Ravnborg, David Airlie, Daniel Vetter
  Cc: linux-kernel, dri-devel, oe-kbuild-all

Hi Linus,

kernel test robot noticed the following build warnings:

[auto build test WARNING on ac9a78681b921877518763ba0e89202254349d1b]

url:    https://github.com/intel-lab-lkp/linux/commits/Linus-Walleij/drm-panel-boe-tv101wum-nl6-Drop-macros-and-open-code-sequences/20230616-042312
base:   ac9a78681b921877518763ba0e89202254349d1b
patch link:    https://lore.kernel.org/r/20230615-fix-boe-tv101wum-nl6-v1-1-8ac378405fb7%40linaro.org
patch subject: [PATCH 1/2] drm/panel: boe-tv101wum-nl6: Drop macros and open code sequences
config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20230616/202306160538.B7HKWlKo-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 12.3.0
reproduce (this is a W=1 build):
        mkdir -p ~/bin
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout ac9a78681b921877518763ba0e89202254349d1b
        b4 shazam https://lore.kernel.org/r/20230615-fix-boe-tv101wum-nl6-v1-1-8ac378405fb7@linaro.org
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.3.0 ~/bin/make.cross W=1 O=build_dir ARCH=alpha olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.3.0 ~/bin/make.cross W=1 O=build_dir ARCH=alpha SHELL=/bin/bash drivers/gpu/drm/panel/

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202306160538.B7HKWlKo-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c:776:5: warning: no previous prototype for 'boe_init' [-Wmissing-prototypes]
     776 | int boe_init(struct mipi_dsi_device *dsi)
         |     ^~~~~~~~


vim +/boe_init +776 drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c

   775	
 > 776	int boe_init(struct mipi_dsi_device *dsi)
   777	{
   778		msleep(24);
   779		mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x05);
   780		mipi_dsi_dcs_write_seq(dsi, 0xB1, 0xE5);
   781		mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x52);
   782		mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x00);
   783		mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x88);
   784		mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x04);
   785		mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x00);
   786		mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x00);
   787		mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x03);
   788		mipi_dsi_dcs_write_seq(dsi, 0xBA, 0x8B);
   789		mipi_dsi_dcs_write_seq(dsi, 0xBF, 0x1A);
   790		mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x0F);
   791		mipi_dsi_dcs_write_seq(dsi, 0xC2, 0x0C);
   792		mipi_dsi_dcs_write_seq(dsi, 0xC3, 0x02);
   793		mipi_dsi_dcs_write_seq(dsi, 0xC4, 0x0C);
   794		mipi_dsi_dcs_write_seq(dsi, 0xC5, 0x02);
   795		mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x01);
   796		mipi_dsi_dcs_write_seq(dsi, 0xE0, 0x26);
   797		mipi_dsi_dcs_write_seq(dsi, 0xE1, 0x26);
   798		mipi_dsi_dcs_write_seq(dsi, 0xDC, 0x00);
   799		mipi_dsi_dcs_write_seq(dsi, 0xDD, 0x00);
   800		mipi_dsi_dcs_write_seq(dsi, 0xCC, 0x26);
   801		mipi_dsi_dcs_write_seq(dsi, 0xCD, 0x26);
   802		mipi_dsi_dcs_write_seq(dsi, 0xC8, 0x00);
   803		mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x00);
   804		mipi_dsi_dcs_write_seq(dsi, 0xD2, 0x03);
   805		mipi_dsi_dcs_write_seq(dsi, 0xD3, 0x03);
   806		mipi_dsi_dcs_write_seq(dsi, 0xE6, 0x04);
   807		mipi_dsi_dcs_write_seq(dsi, 0xE7, 0x04);
   808		mipi_dsi_dcs_write_seq(dsi, 0xC4, 0x09);
   809		mipi_dsi_dcs_write_seq(dsi, 0xC5, 0x09);
   810		mipi_dsi_dcs_write_seq(dsi, 0xD8, 0x0A);
   811		mipi_dsi_dcs_write_seq(dsi, 0xD9, 0x0A);
   812		mipi_dsi_dcs_write_seq(dsi, 0xC2, 0x0B);
   813		mipi_dsi_dcs_write_seq(dsi, 0xC3, 0x0B);
   814		mipi_dsi_dcs_write_seq(dsi, 0xD6, 0x0C);
   815		mipi_dsi_dcs_write_seq(dsi, 0xD7, 0x0C);
   816		mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x05);
   817		mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x05);
   818		mipi_dsi_dcs_write_seq(dsi, 0xD4, 0x06);
   819		mipi_dsi_dcs_write_seq(dsi, 0xD5, 0x06);
   820		mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x07);
   821		mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x07);
   822		mipi_dsi_dcs_write_seq(dsi, 0xDE, 0x08);
   823		mipi_dsi_dcs_write_seq(dsi, 0xDF, 0x08);
   824		mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x02);
   825		mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x00);
   826		mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x0D);
   827		mipi_dsi_dcs_write_seq(dsi, 0xC2, 0x17);
   828		mipi_dsi_dcs_write_seq(dsi, 0xC3, 0x26);
   829		mipi_dsi_dcs_write_seq(dsi, 0xC4, 0x31);
   830		mipi_dsi_dcs_write_seq(dsi, 0xC5, 0x1C);
   831		mipi_dsi_dcs_write_seq(dsi, 0xC6, 0x2C);
   832		mipi_dsi_dcs_write_seq(dsi, 0xC7, 0x33);
   833		mipi_dsi_dcs_write_seq(dsi, 0xC8, 0x31);
   834		mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x37);
   835		mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x37);
   836		mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x37);
   837		mipi_dsi_dcs_write_seq(dsi, 0xCC, 0x39);
   838		mipi_dsi_dcs_write_seq(dsi, 0xCD, 0x2E);
   839		mipi_dsi_dcs_write_seq(dsi, 0xCE, 0x2F);
   840		mipi_dsi_dcs_write_seq(dsi, 0xCF, 0x2F);
   841		mipi_dsi_dcs_write_seq(dsi, 0xD0, 0x07);
   842		mipi_dsi_dcs_write_seq(dsi, 0xD2, 0x00);
   843		mipi_dsi_dcs_write_seq(dsi, 0xD3, 0x0D);
   844		mipi_dsi_dcs_write_seq(dsi, 0xD4, 0x17);
   845		mipi_dsi_dcs_write_seq(dsi, 0xD5, 0x26);
   846		mipi_dsi_dcs_write_seq(dsi, 0xD6, 0x31);
   847		mipi_dsi_dcs_write_seq(dsi, 0xD7, 0x3F);
   848		mipi_dsi_dcs_write_seq(dsi, 0xD8, 0x3F);
   849		mipi_dsi_dcs_write_seq(dsi, 0xD9, 0x3F);
   850		mipi_dsi_dcs_write_seq(dsi, 0xDA, 0x3F);
   851		mipi_dsi_dcs_write_seq(dsi, 0xDB, 0x37);
   852		mipi_dsi_dcs_write_seq(dsi, 0xDC, 0x37);
   853		mipi_dsi_dcs_write_seq(dsi, 0xDD, 0x37);
   854		mipi_dsi_dcs_write_seq(dsi, 0xDE, 0x39);
   855		mipi_dsi_dcs_write_seq(dsi, 0xDF, 0x2E);
   856		mipi_dsi_dcs_write_seq(dsi, 0xE0, 0x2F);
   857		mipi_dsi_dcs_write_seq(dsi, 0xE1, 0x2F);
   858		mipi_dsi_dcs_write_seq(dsi, 0xE2, 0x07);
   859		mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x03);
   860		mipi_dsi_dcs_write_seq(dsi, 0xC8, 0x0B);
   861		mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x07);
   862		mipi_dsi_dcs_write_seq(dsi, 0xC3, 0x00);
   863		mipi_dsi_dcs_write_seq(dsi, 0xE7, 0x00);
   864		mipi_dsi_dcs_write_seq(dsi, 0xC5, 0x2A);
   865		mipi_dsi_dcs_write_seq(dsi, 0xDE, 0x2A);
   866		mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x43);
   867		mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x07);
   868		mipi_dsi_dcs_write_seq(dsi, 0xE4, 0xC0);
   869		mipi_dsi_dcs_write_seq(dsi, 0xE5, 0x0D);
   870		mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x00);
   871		mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x06);
   872		mipi_dsi_dcs_write_seq(dsi, 0xB8, 0xA5);
   873		mipi_dsi_dcs_write_seq(dsi, 0xC0, 0xA5);
   874		mipi_dsi_dcs_write_seq(dsi, 0xC7, 0x0F);
   875		mipi_dsi_dcs_write_seq(dsi, 0xD5, 0x32);
   876		mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x00);
   877		mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x00);
   878		mipi_dsi_dcs_write_seq(dsi, 0xBC, 0x00);
   879		mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x07);
   880		mipi_dsi_dcs_write_seq(dsi, 0xB1, 0x00);
   881		mipi_dsi_dcs_write_seq(dsi, 0xB2, 0x02);
   882		mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x0F);
   883		mipi_dsi_dcs_write_seq(dsi, 0xB4, 0x25);
   884		mipi_dsi_dcs_write_seq(dsi, 0xB5, 0x39);
   885		mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x4E);
   886		mipi_dsi_dcs_write_seq(dsi, 0xB7, 0x72);
   887		mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x97);
   888		mipi_dsi_dcs_write_seq(dsi, 0xB9, 0xDC);
   889		mipi_dsi_dcs_write_seq(dsi, 0xBA, 0x22);
   890		mipi_dsi_dcs_write_seq(dsi, 0xBB, 0xA4);
   891		mipi_dsi_dcs_write_seq(dsi, 0xBC, 0x2B);
   892		mipi_dsi_dcs_write_seq(dsi, 0xBD, 0x2F);
   893		mipi_dsi_dcs_write_seq(dsi, 0xBE, 0xA9);
   894		mipi_dsi_dcs_write_seq(dsi, 0xBF, 0x25);
   895		mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x61);
   896		mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x97);
   897		mipi_dsi_dcs_write_seq(dsi, 0xC2, 0xB2);
   898		mipi_dsi_dcs_write_seq(dsi, 0xC3, 0xCD);
   899		mipi_dsi_dcs_write_seq(dsi, 0xC4, 0xD9);
   900		mipi_dsi_dcs_write_seq(dsi, 0xC5, 0xE7);
   901		mipi_dsi_dcs_write_seq(dsi, 0xC6, 0xF4);
   902		mipi_dsi_dcs_write_seq(dsi, 0xC7, 0xFA);
   903		mipi_dsi_dcs_write_seq(dsi, 0xC8, 0xFC);
   904		mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x00);
   905		mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x00);
   906		mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x16);
   907		mipi_dsi_dcs_write_seq(dsi, 0xCC, 0xAF);
   908		mipi_dsi_dcs_write_seq(dsi, 0xCD, 0xFF);
   909		mipi_dsi_dcs_write_seq(dsi, 0xCE, 0xFF);
   910		mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x08);
   911		mipi_dsi_dcs_write_seq(dsi, 0xB1, 0x04);
   912		mipi_dsi_dcs_write_seq(dsi, 0xB2, 0x05);
   913		mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x11);
   914		mipi_dsi_dcs_write_seq(dsi, 0xB4, 0x24);
   915		mipi_dsi_dcs_write_seq(dsi, 0xB5, 0x39);
   916		mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x4F);
   917		mipi_dsi_dcs_write_seq(dsi, 0xB7, 0x72);
   918		mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x98);
   919		mipi_dsi_dcs_write_seq(dsi, 0xB9, 0xDC);
   920		mipi_dsi_dcs_write_seq(dsi, 0xBA, 0x23);
   921		mipi_dsi_dcs_write_seq(dsi, 0xBB, 0xA6);
   922		mipi_dsi_dcs_write_seq(dsi, 0xBC, 0x2C);
   923		mipi_dsi_dcs_write_seq(dsi, 0xBD, 0x30);
   924		mipi_dsi_dcs_write_seq(dsi, 0xBE, 0xAA);
   925		mipi_dsi_dcs_write_seq(dsi, 0xBF, 0x26);
   926		mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x62);
   927		mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x9B);
   928		mipi_dsi_dcs_write_seq(dsi, 0xC2, 0xB5);
   929		mipi_dsi_dcs_write_seq(dsi, 0xC3, 0xCF);
   930		mipi_dsi_dcs_write_seq(dsi, 0xC4, 0xDB);
   931		mipi_dsi_dcs_write_seq(dsi, 0xC5, 0xE8);
   932		mipi_dsi_dcs_write_seq(dsi, 0xC6, 0xF5);
   933		mipi_dsi_dcs_write_seq(dsi, 0xC7, 0xFA);
   934		mipi_dsi_dcs_write_seq(dsi, 0xC8, 0xFC);
   935		mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x00);
   936		mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x00);
   937		mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x16);
   938		mipi_dsi_dcs_write_seq(dsi, 0xCC, 0xAF);
   939		mipi_dsi_dcs_write_seq(dsi, 0xCD, 0xFF);
   940		mipi_dsi_dcs_write_seq(dsi, 0xCE, 0xFF);
   941		mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x09);
   942		mipi_dsi_dcs_write_seq(dsi, 0xB1, 0x04);
   943		mipi_dsi_dcs_write_seq(dsi, 0xB2, 0x02);
   944		mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x16);
   945		mipi_dsi_dcs_write_seq(dsi, 0xB4, 0x24);
   946		mipi_dsi_dcs_write_seq(dsi, 0xB5, 0x3B);
   947		mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x4F);
   948		mipi_dsi_dcs_write_seq(dsi, 0xB7, 0x73);
   949		mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x99);
   950		mipi_dsi_dcs_write_seq(dsi, 0xB9, 0xE0);
   951		mipi_dsi_dcs_write_seq(dsi, 0xBA, 0x26);
   952		mipi_dsi_dcs_write_seq(dsi, 0xBB, 0xAD);
   953		mipi_dsi_dcs_write_seq(dsi, 0xBC, 0x36);
   954		mipi_dsi_dcs_write_seq(dsi, 0xBD, 0x3A);
   955		mipi_dsi_dcs_write_seq(dsi, 0xBE, 0xAE);
   956		mipi_dsi_dcs_write_seq(dsi, 0xBF, 0x2A);
   957		mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x66);
   958		mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x9E);
   959		mipi_dsi_dcs_write_seq(dsi, 0xC2, 0xB8);
   960		mipi_dsi_dcs_write_seq(dsi, 0xC3, 0xD1);
   961		mipi_dsi_dcs_write_seq(dsi, 0xC4, 0xDD);
   962		mipi_dsi_dcs_write_seq(dsi, 0xC5, 0xE9);
   963		mipi_dsi_dcs_write_seq(dsi, 0xC6, 0xF6);
   964		mipi_dsi_dcs_write_seq(dsi, 0xC7, 0xFA);
   965		mipi_dsi_dcs_write_seq(dsi, 0xC8, 0xFC);
   966		mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x00);
   967		mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x00);
   968		mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x16);
   969		mipi_dsi_dcs_write_seq(dsi, 0xCC, 0xAF);
   970		mipi_dsi_dcs_write_seq(dsi, 0xCD, 0xFF);
   971		mipi_dsi_dcs_write_seq(dsi, 0xCE, 0xFF);
   972		mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x0A);
   973		mipi_dsi_dcs_write_seq(dsi, 0xB1, 0x00);
   974		mipi_dsi_dcs_write_seq(dsi, 0xB2, 0x02);
   975		mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x0F);
   976		mipi_dsi_dcs_write_seq(dsi, 0xB4, 0x25);
   977		mipi_dsi_dcs_write_seq(dsi, 0xB5, 0x39);
   978		mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x4E);
   979		mipi_dsi_dcs_write_seq(dsi, 0xB7, 0x72);
   980		mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x97);
   981		mipi_dsi_dcs_write_seq(dsi, 0xB9, 0xDC);
   982		mipi_dsi_dcs_write_seq(dsi, 0xBA, 0x22);
   983		mipi_dsi_dcs_write_seq(dsi, 0xBB, 0xA4);
   984		mipi_dsi_dcs_write_seq(dsi, 0xBC, 0x2B);
   985		mipi_dsi_dcs_write_seq(dsi, 0xBD, 0x2F);
   986		mipi_dsi_dcs_write_seq(dsi, 0xBE, 0xA9);
   987		mipi_dsi_dcs_write_seq(dsi, 0xBF, 0x25);
   988		mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x61);
   989		mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x97);
   990		mipi_dsi_dcs_write_seq(dsi, 0xC2, 0xB2);
   991		mipi_dsi_dcs_write_seq(dsi, 0xC3, 0xCD);
   992		mipi_dsi_dcs_write_seq(dsi, 0xC4, 0xD9);
   993		mipi_dsi_dcs_write_seq(dsi, 0xC5, 0xE7);
   994		mipi_dsi_dcs_write_seq(dsi, 0xC6, 0xF4);
   995		mipi_dsi_dcs_write_seq(dsi, 0xC7, 0xFA);
   996		mipi_dsi_dcs_write_seq(dsi, 0xC8, 0xFC);
   997		mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x00);
   998		mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x00);
   999		mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x16);
  1000		mipi_dsi_dcs_write_seq(dsi, 0xCC, 0xAF);
  1001		mipi_dsi_dcs_write_seq(dsi, 0xCD, 0xFF);
  1002		mipi_dsi_dcs_write_seq(dsi, 0xCE, 0xFF);
  1003		mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x0B);
  1004		mipi_dsi_dcs_write_seq(dsi, 0xB1, 0x04);
  1005		mipi_dsi_dcs_write_seq(dsi, 0xB2, 0x05);
  1006		mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x11);
  1007		mipi_dsi_dcs_write_seq(dsi, 0xB4, 0x24);
  1008		mipi_dsi_dcs_write_seq(dsi, 0xB5, 0x39);
  1009		mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x4F);
  1010		mipi_dsi_dcs_write_seq(dsi, 0xB7, 0x72);
  1011		mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x98);
  1012		mipi_dsi_dcs_write_seq(dsi, 0xB9, 0xDC);
  1013		mipi_dsi_dcs_write_seq(dsi, 0xBA, 0x23);
  1014		mipi_dsi_dcs_write_seq(dsi, 0xBB, 0xA6);
  1015		mipi_dsi_dcs_write_seq(dsi, 0xBC, 0x2C);
  1016		mipi_dsi_dcs_write_seq(dsi, 0xBD, 0x30);
  1017		mipi_dsi_dcs_write_seq(dsi, 0xBE, 0xAA);
  1018		mipi_dsi_dcs_write_seq(dsi, 0xBF, 0x26);
  1019		mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x62);
  1020		mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x9B);
  1021		mipi_dsi_dcs_write_seq(dsi, 0xC2, 0xB5);
  1022		mipi_dsi_dcs_write_seq(dsi, 0xC3, 0xCF);
  1023		mipi_dsi_dcs_write_seq(dsi, 0xC4, 0xDB);
  1024		mipi_dsi_dcs_write_seq(dsi, 0xC5, 0xE8);
  1025		mipi_dsi_dcs_write_seq(dsi, 0xC6, 0xF5);
  1026		mipi_dsi_dcs_write_seq(dsi, 0xC7, 0xFA);
  1027		mipi_dsi_dcs_write_seq(dsi, 0xC8, 0xFC);
  1028		mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x00);
  1029		mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x00);
  1030		mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x16);
  1031		mipi_dsi_dcs_write_seq(dsi, 0xCC, 0xAF);
  1032		mipi_dsi_dcs_write_seq(dsi, 0xCD, 0xFF);
  1033		mipi_dsi_dcs_write_seq(dsi, 0xCE, 0xFF);
  1034		mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x0C);
  1035		mipi_dsi_dcs_write_seq(dsi, 0xB1, 0x04);
  1036		mipi_dsi_dcs_write_seq(dsi, 0xB2, 0x02);
  1037		mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x16);
  1038		mipi_dsi_dcs_write_seq(dsi, 0xB4, 0x24);
  1039		mipi_dsi_dcs_write_seq(dsi, 0xB5, 0x3B);
  1040		mipi_dsi_dcs_write_seq(dsi, 0xB6, 0x4F);
  1041		mipi_dsi_dcs_write_seq(dsi, 0xB7, 0x73);
  1042		mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x99);
  1043		mipi_dsi_dcs_write_seq(dsi, 0xB9, 0xE0);
  1044		mipi_dsi_dcs_write_seq(dsi, 0xBA, 0x26);
  1045		mipi_dsi_dcs_write_seq(dsi, 0xBB, 0xAD);
  1046		mipi_dsi_dcs_write_seq(dsi, 0xBC, 0x36);
  1047		mipi_dsi_dcs_write_seq(dsi, 0xBD, 0x3A);
  1048		mipi_dsi_dcs_write_seq(dsi, 0xBE, 0xAE);
  1049		mipi_dsi_dcs_write_seq(dsi, 0xBF, 0x2A);
  1050		mipi_dsi_dcs_write_seq(dsi, 0xC0, 0x66);
  1051		mipi_dsi_dcs_write_seq(dsi, 0xC1, 0x9E);
  1052		mipi_dsi_dcs_write_seq(dsi, 0xC2, 0xB8);
  1053		mipi_dsi_dcs_write_seq(dsi, 0xC3, 0xD1);
  1054		mipi_dsi_dcs_write_seq(dsi, 0xC4, 0xDD);
  1055		mipi_dsi_dcs_write_seq(dsi, 0xC5, 0xE9);
  1056		mipi_dsi_dcs_write_seq(dsi, 0xC6, 0xF6);
  1057		mipi_dsi_dcs_write_seq(dsi, 0xC7, 0xFA);
  1058		mipi_dsi_dcs_write_seq(dsi, 0xC8, 0xFC);
  1059		mipi_dsi_dcs_write_seq(dsi, 0xC9, 0x00);
  1060		mipi_dsi_dcs_write_seq(dsi, 0xCA, 0x00);
  1061		mipi_dsi_dcs_write_seq(dsi, 0xCB, 0x16);
  1062		mipi_dsi_dcs_write_seq(dsi, 0xCC, 0xAF);
  1063		mipi_dsi_dcs_write_seq(dsi, 0xCD, 0xFF);
  1064		mipi_dsi_dcs_write_seq(dsi, 0xCE, 0xFF);
  1065		mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x00);
  1066		mipi_dsi_dcs_write_seq(dsi, 0xB3, 0x08);
  1067		mipi_dsi_dcs_write_seq(dsi, 0xB0, 0x04);
  1068		mipi_dsi_dcs_write_seq(dsi, 0xB8, 0x68);
  1069		msleep(150);
  1070	
  1071		return 0;
  1072	}
  1073	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] drm/panel: boe-tv101wum-nl6: Drop macros and open code sequences
  2023-06-15 20:21 ` [PATCH 1/2] drm/panel: boe-tv101wum-nl6: Drop macros and open code sequences Linus Walleij
  2023-06-15 22:10   ` kernel test robot
@ 2023-06-16 16:42   ` Sam Ravnborg
  1 sibling, 0 replies; 6+ messages in thread
From: Sam Ravnborg @ 2023-06-16 16:42 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Neil Armstrong, Jitao Shi, yangcong, linux-kernel, dri-devel,
	Stephen Boyd, Ruihai Zhou

Hi Linus,

On Thu, Jun 15, 2023 at 10:21:37PM +0200, Linus Walleij wrote:
> The boe-tv101wum-nl6 is reinventing the mechanism to send command
> sequences that we usually nix during review, but I missed this one
> so fixing it up myself.
> 
> Also use the explicit function calls to mipi_dsi_dcs_exit_sleep_mode()
> and mipi_dsi_dcs_set_display_on() instead of reimplementing them
> with homegrown sequences.
It looks like the same sequence of calls are used in all init functions,
maybe move them out to the caller.

> 
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

I have browsed the patch, but it was impossible for me to review in
details due to the massive changes.
But the final result looks good!

With the static added as the robot noticed:
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] drm/panel: boe-tv101wum-nl6: Drop surplus prepare tracking
  2023-06-15 20:21 ` [PATCH 2/2] drm/panel: boe-tv101wum-nl6: Drop surplus prepare tracking Linus Walleij
@ 2023-06-16 16:44   ` Sam Ravnborg
  0 siblings, 0 replies; 6+ messages in thread
From: Sam Ravnborg @ 2023-06-16 16:44 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Neil Armstrong, Jitao Shi, yangcong, linux-kernel, dri-devel,
	Stephen Boyd, Ruihai Zhou

Hi Linus.

On Thu, Jun 15, 2023 at 10:21:38PM +0200, Linus Walleij wrote:
> The DRM panel core already keeps track of if the panel is already
> prepared so do not reimplement this.
> 
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

Reviewed-by: Sam Ravnborg <sam@ravnborg.org>

It would be good to rip it out for all panels so people do not copy
less optimal code.

	Sam

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-06-16 16:44 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-15 20:21 [PATCH 0/2] Fix up the boe-tv101wum-nl6 panel driver Linus Walleij
2023-06-15 20:21 ` [PATCH 1/2] drm/panel: boe-tv101wum-nl6: Drop macros and open code sequences Linus Walleij
2023-06-15 22:10   ` kernel test robot
2023-06-16 16:42   ` Sam Ravnborg
2023-06-15 20:21 ` [PATCH 2/2] drm/panel: boe-tv101wum-nl6: Drop surplus prepare tracking Linus Walleij
2023-06-16 16:44   ` Sam Ravnborg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).