linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/8] drm/mipi-dsi: Reduce bloat and add funcs for cleaner init seqs
@ 2024-04-26 23:58 Douglas Anderson
  2024-04-26 23:58 ` [PATCH v2 1/8] drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_dcs_write_seq() Douglas Anderson
                   ` (8 more replies)
  0 siblings, 9 replies; 23+ messages in thread
From: Douglas Anderson @ 2024-04-26 23:58 UTC (permalink / raw)
  To: dri-devel
  Cc: Linus Walleij, lvzhaoxiong, Jani Nikula, Hsin-Yi Wang,
	Javier Martinez Canillas, Neil Armstrong, Joel Selvaraj,
	Dmitry Baryshkov, Cong Yang, Sam Ravnborg, Douglas Anderson,
	Daniel Vetter, David Airlie, Jessica Zhang, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, linux-kernel

The consensus of many DRM folks is that we want to move away from DSI
drivers defining tables of init commands. Instead, we want to move to
init functions that can use common DRM functions. The issue thus far
has been that using the macros mipi_dsi_generic_write_seq() and
mipi_dsi_dcs_write_seq() bloats the driver using them.

While trying to solve bloat, we realized that the majority of the it
was easy to solve. This series solves the bloat for existing drivers
by moving the printout outside of the macro.

During discussion of my v1 patch to fix the bloat [1], we also decided
that we really want to change the way that drivers deal with init
sequences to make it clearer. In addition to being cleaner, a side
effect of moving drivers to the new style reduces bloat _even more_.

This series also contains a few minor fixes / cleanups that I found
along the way.

This series converts two drivers over to the new
mipi_dsi_dcs_write_seq_multi() function. I don't have any hardware
that uses the mipi_dsi_generic_write_seq() function to test with, so I
haven't converted anything over to use that. The conversions are
straightforward but I'd appreciate testing.

[1] https://lore.kernel.org/r/20240424172017.1.Id15fae80582bc74a0d4f1338987fa375738f45b9@changeid

Changes in v2:
- drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_dcs_write_seq()
- drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_generic_write_seq()
- Add some comments to the macros about printing and returning.
- Modify commit message now that this is part of a series.
- Change the way err value is handled in prep for next patch.
- Rebased upon patches to avoid theoretical int overflow.
- drm/mipi-dsi: Introduce mipi_dsi_*_write_seq_multi()
- drm/mipi-dsi: mipi_dsi_*_write functions don't need to ratelimit prints
- drm/panel: novatek-nt36672e: Switch to mipi_dsi_dcs_write_seq_multi()
- drm/panel: boe-tv101wum-nl6: Don't use a table for initting commands
- drm/panel: boe-tv101wum-nl6: Convert hex to lowercase

Douglas Anderson (8):
  drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_dcs_write_seq()
  drm/mipi-dsi: Fix theoretical int overflow in
    mipi_dsi_generic_write_seq()
  drm/mipi-dsi: Reduce driver bloat of mipi_dsi_*_write_seq()
  drm/mipi-dsi: Introduce mipi_dsi_*_write_seq_multi()
  drm/mipi-dsi: mipi_dsi_*_write functions don't need to ratelimit
    prints
  drm/panel: novatek-nt36672e: Switch to mipi_dsi_dcs_write_seq_multi()
  drm/panel: boe-tv101wum-nl6: Don't use a table for initting commands
  drm/panel: boe-tv101wum-nl6: Convert hex to lowercase

 drivers/gpu/drm/drm_mipi_dsi.c                |  112 +
 .../gpu/drm/panel/panel-boe-tv101wum-nl6.c    | 2712 +++++++++--------
 .../gpu/drm/panel/panel-novatek-nt36672e.c    |  524 ++--
 include/drm/drm_mipi_dsi.h                    |   96 +-
 4 files changed, 1818 insertions(+), 1626 deletions(-)

-- 
2.44.0.769.g3c40516874-goog


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

* [PATCH v2 1/8] drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_dcs_write_seq()
  2024-04-26 23:58 [PATCH v2 0/8] drm/mipi-dsi: Reduce bloat and add funcs for cleaner init seqs Douglas Anderson
@ 2024-04-26 23:58 ` Douglas Anderson
  2024-04-27  1:44   ` Dmitry Baryshkov
  2024-04-26 23:58 ` [PATCH v2 2/8] drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_generic_write_seq() Douglas Anderson
                   ` (7 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Douglas Anderson @ 2024-04-26 23:58 UTC (permalink / raw)
  To: dri-devel
  Cc: Linus Walleij, lvzhaoxiong, Jani Nikula, Hsin-Yi Wang,
	Javier Martinez Canillas, Neil Armstrong, Joel Selvaraj,
	Dmitry Baryshkov, Cong Yang, Sam Ravnborg, Douglas Anderson,
	Daniel Vetter, David Airlie, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, linux-kernel

The mipi_dsi_dcs_write_seq() macro makes a call to
mipi_dsi_dcs_write_buffer() which returns a type ssize_t. The macro
then stores it in an int and checks to see if it's negative. This
could theoretically be a problem if "ssize_t" is larger than "int".

To see the issue, imagine that "ssize_t" is 32-bits and "int" is
16-bits, you could see a problem if there was some code out there that
looked like:

  mipi_dsi_dcs_write_seq(dsi, cmd, <32767 bytes as arguments>);

...since we'd get back that 32768 bytes were transferred and 32768
stored in a 16-bit int would look negative.

Though there are no callsites where we'd actually hit this (even if
"int" was only 16-bit), it's cleaner to make the types match so let's
fix it.

Fixes: 2a9e9daf7523 ("drm/mipi-dsi: Introduce mipi_dsi_dcs_write_seq macro")
Signed-off-by: Douglas Anderson <dianders@chromium.org>
---

Changes in v2:
- New

 include/drm/drm_mipi_dsi.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h
index 82b1cc434ea3..b3576be22bfa 100644
--- a/include/drm/drm_mipi_dsi.h
+++ b/include/drm/drm_mipi_dsi.h
@@ -337,12 +337,12 @@ int mipi_dsi_dcs_get_display_brightness_large(struct mipi_dsi_device *dsi,
 	do {                                                               \
 		static const u8 d[] = { cmd, seq };                        \
 		struct device *dev = &dsi->dev;                            \
-		int ret;                                                   \
+		ssize_t ret;                                               \
 		ret = mipi_dsi_dcs_write_buffer(dsi, d, ARRAY_SIZE(d));    \
 		if (ret < 0) {                                             \
 			dev_err_ratelimited(                               \
 				dev, "sending command %#02x failed: %d\n", \
-				cmd, ret);                                 \
+				cmd, (int)ret);                            \
 			return ret;                                        \
 		}                                                          \
 	} while (0)
-- 
2.44.0.769.g3c40516874-goog


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

* [PATCH v2 2/8] drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_generic_write_seq()
  2024-04-26 23:58 [PATCH v2 0/8] drm/mipi-dsi: Reduce bloat and add funcs for cleaner init seqs Douglas Anderson
  2024-04-26 23:58 ` [PATCH v2 1/8] drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_dcs_write_seq() Douglas Anderson
@ 2024-04-26 23:58 ` Douglas Anderson
  2024-04-26 23:58 ` [PATCH v2 3/8] drm/mipi-dsi: Reduce driver bloat of mipi_dsi_*_write_seq() Douglas Anderson
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 23+ messages in thread
From: Douglas Anderson @ 2024-04-26 23:58 UTC (permalink / raw)
  To: dri-devel
  Cc: Linus Walleij, lvzhaoxiong, Jani Nikula, Hsin-Yi Wang,
	Javier Martinez Canillas, Neil Armstrong, Joel Selvaraj,
	Dmitry Baryshkov, Cong Yang, Sam Ravnborg, Douglas Anderson,
	Daniel Vetter, David Airlie, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, linux-kernel

The mipi_dsi_generic_write_seq() macro makes a call to
mipi_dsi_generic_write() which returns a type ssize_t. The macro then
stores it in an int and checks to see if it's negative. This could
theoretically be a problem if "ssize_t" is larger than "int".

To see the issue, imagine that "ssize_t" is 32-bits and "int" is
16-bits, you could see a problem if there was some code out there that
looked like:

  mipi_dsi_generic_write_seq(dsi, <32768 bytes as arguments>);

...since we'd get back that 32768 bytes were transferred and 32768
stored in a 16-bit int would look negative.

Though there are no callsites where we'd actually hit this (even if
"int" was only 16-bit), it's cleaner to make the types match so let's
fix it.

Fixes: a9015ce59320 ("drm/mipi-dsi: Add a mipi_dsi_dcs_write_seq() macro")
Signed-off-by: Douglas Anderson <dianders@chromium.org>
---

Changes in v2:
- New

 include/drm/drm_mipi_dsi.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h
index b3576be22bfa..5de2bd62448b 100644
--- a/include/drm/drm_mipi_dsi.h
+++ b/include/drm/drm_mipi_dsi.h
@@ -318,11 +318,11 @@ int mipi_dsi_dcs_get_display_brightness_large(struct mipi_dsi_device *dsi,
 	do {                                                                   \
 		static const u8 d[] = { seq };                                 \
 		struct device *dev = &dsi->dev;                                \
-		int ret;                                                       \
+		ssize_t ret;                                                   \
 		ret = mipi_dsi_generic_write(dsi, d, ARRAY_SIZE(d));           \
 		if (ret < 0) {                                                 \
 			dev_err_ratelimited(dev, "transmit data failed: %d\n", \
-					    ret);                              \
+					    (int)ret);                         \
 			return ret;                                            \
 		}                                                              \
 	} while (0)
-- 
2.44.0.769.g3c40516874-goog


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

* [PATCH v2 3/8] drm/mipi-dsi: Reduce driver bloat of mipi_dsi_*_write_seq()
  2024-04-26 23:58 [PATCH v2 0/8] drm/mipi-dsi: Reduce bloat and add funcs for cleaner init seqs Douglas Anderson
  2024-04-26 23:58 ` [PATCH v2 1/8] drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_dcs_write_seq() Douglas Anderson
  2024-04-26 23:58 ` [PATCH v2 2/8] drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_generic_write_seq() Douglas Anderson
@ 2024-04-26 23:58 ` Douglas Anderson
  2024-04-27  2:05   ` Dmitry Baryshkov
  2024-04-26 23:58 ` [PATCH v2 4/8] drm/mipi-dsi: Introduce mipi_dsi_*_write_seq_multi() Douglas Anderson
                   ` (5 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Douglas Anderson @ 2024-04-26 23:58 UTC (permalink / raw)
  To: dri-devel
  Cc: Linus Walleij, lvzhaoxiong, Jani Nikula, Hsin-Yi Wang,
	Javier Martinez Canillas, Neil Armstrong, Joel Selvaraj,
	Dmitry Baryshkov, Cong Yang, Sam Ravnborg, Douglas Anderson,
	Daniel Vetter, David Airlie, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, linux-kernel

Through a cooperative effort between Hsin-Yi Wang and Dmitry
Baryshkov, we have realized the dev_err_ratelimited() in the
mipi_dsi_*_write_seq() macros was causing quite a bit of bloat to the
kernel. Let's hoist this call into drm_mipi_dsi.c by adding a "chatty"
version of the functions that includes the print. While doing this,
add a bit more comments to these macros making it clear that they
print errors and also that they return out of _the caller's_ function.

Without any changes to clients this gives a dramatic savings. Building
with my build system shows one example:

$ scripts/bloat-o-meter \
  .../before/panel-novatek-nt36672e.ko \
  .../after/panel-novatek-nt36672e.ko

add/remove: 0/1 grow/shrink: 0/1 up/down: 0/-21496 (-21496)
Function                                     old     new   delta
nt36672e_1080x2408_60hz_init._rs           10320       -  -10320
nt36672e_1080x2408_60hz_init               17412    6236  -11176
Total: Before=32147, After=10651, chg -66.87%

Note that given the change in location of the print it's harder to
include the "cmd" in the printout for mipi_dsi_dcs_write_seq() since,
theoretically, someone could call the new chatty function with a
zero-size array and it would be illegal to dereference data[0].
There's a printk format to print the whole buffer and this is probably
more useful for debugging anyway. Given that we're doing this for
mipi_dsi_dcs_write_seq(), let's also print the buffer for
mipi_dsi_generic_write_seq() in the error case.

It should be noted that the current consensus of DRM folks is that the
mipi_dsi_*_write_seq() should be deprecated due to the non-intuitive
return behavior. A future patch will formally mark them as deprecated
and provide an alternative.

Signed-off-by: Douglas Anderson <dianders@chromium.org>
---

Changes in v2:
- Add some comments to the macros about printing and returning.
- Modify commit message now that this is part of a series.
- Change the way err value is handled in prep for next patch.
- Rebased upon patches to avoid theoretical int overflow.

 drivers/gpu/drm/drm_mipi_dsi.c | 56 ++++++++++++++++++++++++++++++++++
 include/drm/drm_mipi_dsi.h     | 41 +++++++++++++------------
 2 files changed, 78 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c
index 795001bb7ff1..1e062eda3b88 100644
--- a/drivers/gpu/drm/drm_mipi_dsi.c
+++ b/drivers/gpu/drm/drm_mipi_dsi.c
@@ -764,6 +764,34 @@ ssize_t mipi_dsi_generic_write(struct mipi_dsi_device *dsi, const void *payload,
 }
 EXPORT_SYMBOL(mipi_dsi_generic_write);
 
+/**
+ * mipi_dsi_generic_write_chatty() - mipi_dsi_generic_write() w/ an error log
+ * @dsi: DSI peripheral device
+ * @payload: buffer containing the payload
+ * @size: size of payload buffer
+ *
+ * Like mipi_dsi_generic_write() but includes a dev_err_ratelimited()
+ * call for you and returns 0 upon success, not the number of bytes sent.
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
+int mipi_dsi_generic_write_chatty(struct mipi_dsi_device *dsi,
+				  const void *payload, size_t size)
+{
+	struct device *dev = &dsi->dev;
+	ssize_t ret;
+
+	ret = mipi_dsi_generic_write(dsi, payload, size);
+	if (ret < 0) {
+		dev_err_ratelimited(dev, "sending generic data %*ph failed: %d\n",
+				    (int)size, payload, (int)ret);
+		return ret;
+	}
+
+	return 0;
+}
+EXPORT_SYMBOL(mipi_dsi_generic_write_chatty);
+
 /**
  * mipi_dsi_generic_read() - receive data using a generic read packet
  * @dsi: DSI peripheral device
@@ -852,6 +880,34 @@ ssize_t mipi_dsi_dcs_write_buffer(struct mipi_dsi_device *dsi,
 }
 EXPORT_SYMBOL(mipi_dsi_dcs_write_buffer);
 
+/**
+ * mipi_dsi_dcs_write_buffer_chatty - mipi_dsi_dcs_write_buffer() w/ an error log
+ * @dsi: DSI peripheral device
+ * @data: buffer containing data to be transmitted
+ * @len: size of transmission buffer
+ *
+ * Like mipi_dsi_dcs_write_buffer() but includes a dev_err_ratelimited()
+ * call for you and returns 0 upon success, not the number of bytes sent.
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
+int mipi_dsi_dcs_write_buffer_chatty(struct mipi_dsi_device *dsi,
+				     const void *data, size_t len)
+{
+	struct device *dev = &dsi->dev;
+	ssize_t ret;
+
+	ret = mipi_dsi_dcs_write_buffer(dsi, data, len);
+	if (ret < 0) {
+		dev_err_ratelimited(dev, "sending dcs data %*ph failed: %d\n",
+				    (int)len, data, (int)ret);
+		return ret;
+	}
+
+	return 0;
+}
+EXPORT_SYMBOL(mipi_dsi_dcs_write_buffer_chatty);
+
 /**
  * mipi_dsi_dcs_write() - send DCS write command
  * @dsi: DSI peripheral device
diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h
index 5de2bd62448b..6d68d9927f46 100644
--- a/include/drm/drm_mipi_dsi.h
+++ b/include/drm/drm_mipi_dsi.h
@@ -256,6 +256,8 @@ int mipi_dsi_picture_parameter_set(struct mipi_dsi_device *dsi,
 
 ssize_t mipi_dsi_generic_write(struct mipi_dsi_device *dsi, const void *payload,
 			       size_t size);
+int mipi_dsi_generic_write_chatty(struct mipi_dsi_device *dsi,
+				  const void *payload, size_t size);
 ssize_t mipi_dsi_generic_read(struct mipi_dsi_device *dsi, const void *params,
 			      size_t num_params, void *data, size_t size);
 
@@ -279,6 +281,8 @@ enum mipi_dsi_dcs_tear_mode {
 
 ssize_t mipi_dsi_dcs_write_buffer(struct mipi_dsi_device *dsi,
 				  const void *data, size_t len);
+int mipi_dsi_dcs_write_buffer_chatty(struct mipi_dsi_device *dsi,
+				     const void *data, size_t len);
 ssize_t mipi_dsi_dcs_write(struct mipi_dsi_device *dsi, u8 cmd,
 			   const void *data, size_t len);
 ssize_t mipi_dsi_dcs_read(struct mipi_dsi_device *dsi, u8 cmd, void *data,
@@ -311,40 +315,39 @@ int mipi_dsi_dcs_get_display_brightness_large(struct mipi_dsi_device *dsi,
 
 /**
  * mipi_dsi_generic_write_seq - transmit data using a generic write packet
+ *
+ * This macro will print errors for you and will RETURN FROM THE CALLING
+ * FUNCTION (yes this is non-intuitive) upon error.
+ *
  * @dsi: DSI peripheral device
  * @seq: buffer containing the payload
  */
 #define mipi_dsi_generic_write_seq(dsi, seq...)                                \
 	do {                                                                   \
 		static const u8 d[] = { seq };                                 \
-		struct device *dev = &dsi->dev;                                \
-		ssize_t ret;                                                   \
-		ret = mipi_dsi_generic_write(dsi, d, ARRAY_SIZE(d));           \
-		if (ret < 0) {                                                 \
-			dev_err_ratelimited(dev, "transmit data failed: %d\n", \
-					    (int)ret);                         \
+		int ret;                                                       \
+		ret = mipi_dsi_generic_write_chatty(dsi, d, ARRAY_SIZE(d));    \
+		if (ret < 0)                                                   \
 			return ret;                                            \
-		}                                                              \
 	} while (0)
 
 /**
  * mipi_dsi_dcs_write_seq - transmit a DCS command with payload
+ *
+ * This macro will print errors for you and will RETURN FROM THE CALLING
+ * FUNCTION (yes this is non-intuitive) upon error.
+ *
  * @dsi: DSI peripheral device
  * @cmd: Command
  * @seq: buffer containing data to be transmitted
  */
-#define mipi_dsi_dcs_write_seq(dsi, cmd, seq...)                           \
-	do {                                                               \
-		static const u8 d[] = { cmd, seq };                        \
-		struct device *dev = &dsi->dev;                            \
-		ssize_t ret;                                               \
-		ret = mipi_dsi_dcs_write_buffer(dsi, d, ARRAY_SIZE(d));    \
-		if (ret < 0) {                                             \
-			dev_err_ratelimited(                               \
-				dev, "sending command %#02x failed: %d\n", \
-				cmd, (int)ret);                            \
-			return ret;                                        \
-		}                                                          \
+#define mipi_dsi_dcs_write_seq(dsi, cmd, seq...)                               \
+	do {                                                                   \
+		static const u8 d[] = { cmd, seq };                            \
+		int ret;                                                       \
+		ret = mipi_dsi_dcs_write_buffer_chatty(dsi, d, ARRAY_SIZE(d)); \
+		if (ret < 0)                                                   \
+			return ret;                                            \
 	} while (0)
 
 /**
-- 
2.44.0.769.g3c40516874-goog


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

* [PATCH v2 4/8] drm/mipi-dsi: Introduce mipi_dsi_*_write_seq_multi()
  2024-04-26 23:58 [PATCH v2 0/8] drm/mipi-dsi: Reduce bloat and add funcs for cleaner init seqs Douglas Anderson
                   ` (2 preceding siblings ...)
  2024-04-26 23:58 ` [PATCH v2 3/8] drm/mipi-dsi: Reduce driver bloat of mipi_dsi_*_write_seq() Douglas Anderson
@ 2024-04-26 23:58 ` Douglas Anderson
  2024-04-27  6:32   ` Sam Ravnborg
  2024-04-29  9:38   ` Neil Armstrong
  2024-04-26 23:58 ` [PATCH v2 5/8] drm/mipi-dsi: mipi_dsi_*_write functions don't need to ratelimit prints Douglas Anderson
                   ` (4 subsequent siblings)
  8 siblings, 2 replies; 23+ messages in thread
From: Douglas Anderson @ 2024-04-26 23:58 UTC (permalink / raw)
  To: dri-devel
  Cc: Linus Walleij, lvzhaoxiong, Jani Nikula, Hsin-Yi Wang,
	Javier Martinez Canillas, Neil Armstrong, Joel Selvaraj,
	Dmitry Baryshkov, Cong Yang, Sam Ravnborg, Douglas Anderson,
	Daniel Vetter, David Airlie, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, linux-kernel

The current mipi_dsi_*_write_seq() macros are non-intutitive because
they contain a hidden "return" statement that will return out of the
_caller_ of the macro. Let's mark them as deprecated and instead
introduce some new macros that are more intuitive.

These new macros are less optimal when an error occurs but should
behave more optimally when there is no error. Specifically these new
macros cause smaller code to get generated and the code size savings
(less to fetch from RAM, less cache space used, less RAM used) are
important. Since the error case isn't something we need to optimize
for and these new macros are easier to understand and more flexible,
they should be used.

After converting to use these new functions, one example shows some
nice savings while also being easier to understand.

$ scripts/bloat-o-meter \
  ...after/panel-novatek-nt36672e.ko \
  ...ctx/panel-novatek-nt36672e.ko
add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-988 (-988)
Function                                     old     new   delta
nt36672e_1080x2408_60hz_init                6236    5248    -988
Total: Before=10651, After=9663, chg -9.28%

Signed-off-by: Douglas Anderson <dianders@chromium.org>
---
Right now this patch introduces two new functions in
drm_mipi_dsi.c. Alternatively we could have changed the prototype of
the "chatty" functions and made the deprecated macros adapt to the new
prototype. While this sounds nice, it bloated callers of the
deprecated functioin a bit because it caused the compiler to emit less
optimal code. It doesn't seem terrible to add two more functions, so I
went that way.

Changes in v2:
- New

 drivers/gpu/drm/drm_mipi_dsi.c | 56 +++++++++++++++++++++++++++++++++
 include/drm/drm_mipi_dsi.h     | 57 ++++++++++++++++++++++++++++++++++
 2 files changed, 113 insertions(+)

diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c
index 1e062eda3b88..b7c75a4396e6 100644
--- a/drivers/gpu/drm/drm_mipi_dsi.c
+++ b/drivers/gpu/drm/drm_mipi_dsi.c
@@ -792,6 +792,34 @@ int mipi_dsi_generic_write_chatty(struct mipi_dsi_device *dsi,
 }
 EXPORT_SYMBOL(mipi_dsi_generic_write_chatty);
 
+/**
+ * mipi_dsi_generic_write_multi() - mipi_dsi_generic_write_chatty() w/ accum_err
+ * @ctx: Context for multiple DSI transactions
+ * @payload: buffer containing the payload
+ * @size: size of payload buffer
+ *
+ * Like mipi_dsi_generic_write_chatty() but deals with errors in a way that
+ * makes it convenient to make several calls in a row.
+ */
+void mipi_dsi_generic_write_multi(struct mipi_dsi_multi_context *ctx,
+				  const void *payload, size_t size)
+{
+	struct mipi_dsi_device *dsi = ctx->dsi;
+	struct device *dev = &dsi->dev;
+	ssize_t ret;
+
+	if (ctx->accum_err)
+		return;
+
+	ret = mipi_dsi_generic_write(dsi, payload, size);
+	if (ret < 0) {
+		ctx->accum_err = ret;
+		dev_err_ratelimited(dev, "sending generic data %*ph failed: %d\n",
+				    (int)size, payload, ctx->accum_err);
+	}
+}
+EXPORT_SYMBOL(mipi_dsi_generic_write_multi);
+
 /**
  * mipi_dsi_generic_read() - receive data using a generic read packet
  * @dsi: DSI peripheral device
@@ -908,6 +936,34 @@ int mipi_dsi_dcs_write_buffer_chatty(struct mipi_dsi_device *dsi,
 }
 EXPORT_SYMBOL(mipi_dsi_dcs_write_buffer_chatty);
 
+/**
+ * mipi_dsi_dcs_write_buffer_multi - mipi_dsi_dcs_write_buffer_chatty() w/ accum_err
+ * @ctx: Context for multiple DSI transactions
+ * @data: buffer containing data to be transmitted
+ * @len: size of transmission buffer
+ *
+ * Like mipi_dsi_dcs_write_buffer_chatty() but deals with errors in a way that
+ * makes it convenient to make several calls in a row.
+ */
+void mipi_dsi_dcs_write_buffer_multi(struct mipi_dsi_multi_context *ctx,
+				     const void *data, size_t len)
+{
+	struct mipi_dsi_device *dsi = ctx->dsi;
+	struct device *dev = &dsi->dev;
+	ssize_t ret;
+
+	if (ctx->accum_err)
+		return;
+
+	ret = mipi_dsi_dcs_write_buffer(dsi, data, len);
+	if (ret < 0) {
+		ctx->accum_err = ret;
+		dev_err_ratelimited(dev, "sending dcs data %*ph failed: %d\n",
+				    (int)len, data, ctx->accum_err);
+	}
+}
+EXPORT_SYMBOL(mipi_dsi_dcs_write_buffer_multi);
+
 /**
  * mipi_dsi_dcs_write() - send DCS write command
  * @dsi: DSI peripheral device
diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h
index 6d68d9927f46..379594649a42 100644
--- a/include/drm/drm_mipi_dsi.h
+++ b/include/drm/drm_mipi_dsi.h
@@ -197,6 +197,22 @@ struct mipi_dsi_device {
 	struct drm_dsc_config *dsc;
 };
 
+/**
+ * struct mipi_dsi_multi_context - Context to call multiple MIPI DSI funcs in a row
+ * @dsi: Pointer to the MIPI DSI device
+ * @accum_err: Storage for the accumulated error over the multiple calls. Init
+ *	to 0. If a function encounters an error then the error code will be
+ *	stored here. If you call a function and this points to a non-zero
+ *	value then the function will be a noop. This allows calling a function
+ *	many times in a row and just checking the error at the end to see if
+ *	any of them failed.
+ */
+
+struct mipi_dsi_multi_context {
+	struct mipi_dsi_device *dsi;
+	int accum_err;
+};
+
 #define MIPI_DSI_MODULE_PREFIX "mipi-dsi:"
 
 #define to_mipi_dsi_device(__dev)	container_of_const(__dev, struct mipi_dsi_device, dev)
@@ -258,6 +274,8 @@ ssize_t mipi_dsi_generic_write(struct mipi_dsi_device *dsi, const void *payload,
 			       size_t size);
 int mipi_dsi_generic_write_chatty(struct mipi_dsi_device *dsi,
 				  const void *payload, size_t size);
+void mipi_dsi_generic_write_multi(struct mipi_dsi_multi_context *ctx,
+				  const void *payload, size_t size);
 ssize_t mipi_dsi_generic_read(struct mipi_dsi_device *dsi, const void *params,
 			      size_t num_params, void *data, size_t size);
 
@@ -283,6 +301,8 @@ ssize_t mipi_dsi_dcs_write_buffer(struct mipi_dsi_device *dsi,
 				  const void *data, size_t len);
 int mipi_dsi_dcs_write_buffer_chatty(struct mipi_dsi_device *dsi,
 				     const void *data, size_t len);
+void mipi_dsi_dcs_write_buffer_multi(struct mipi_dsi_multi_context *ctx,
+				     const void *data, size_t len);
 ssize_t mipi_dsi_dcs_write(struct mipi_dsi_device *dsi, u8 cmd,
 			   const void *data, size_t len);
 ssize_t mipi_dsi_dcs_read(struct mipi_dsi_device *dsi, u8 cmd, void *data,
@@ -319,6 +339,9 @@ int mipi_dsi_dcs_get_display_brightness_large(struct mipi_dsi_device *dsi,
  * This macro will print errors for you and will RETURN FROM THE CALLING
  * FUNCTION (yes this is non-intuitive) upon error.
  *
+ * Because of the non-intuitive return behavior, THIS MACRO IS DEPRECATED.
+ * Please replace calls of it with mipi_dsi_generic_write_seq_multi().
+ *
  * @dsi: DSI peripheral device
  * @seq: buffer containing the payload
  */
@@ -331,12 +354,30 @@ int mipi_dsi_dcs_get_display_brightness_large(struct mipi_dsi_device *dsi,
 			return ret;                                            \
 	} while (0)
 
+/**
+ * mipi_dsi_generic_write_seq_multi - transmit data using a generic write packet
+ *
+ * This macro will print errors for you and error handling is optimized for
+ * callers that call this multiple times in a row.
+ *
+ * @ctx: Context for multiple DSI transactions
+ * @seq: buffer containing the payload
+ */
+#define mipi_dsi_generic_write_seq_multi(ctx, seq...)                \
+	do {                                                         \
+		static const u8 d[] = { seq };                       \
+		mipi_dsi_generic_write_multi(ctx, d, ARRAY_SIZE(d)); \
+	} while (0)
+
 /**
  * mipi_dsi_dcs_write_seq - transmit a DCS command with payload
  *
  * This macro will print errors for you and will RETURN FROM THE CALLING
  * FUNCTION (yes this is non-intuitive) upon error.
  *
+ * Because of the non-intuitive return behavior, THIS MACRO IS DEPRECATED.
+ * Please replace calls of it with mipi_dsi_dcs_write_seq_multi().
+ *
  * @dsi: DSI peripheral device
  * @cmd: Command
  * @seq: buffer containing data to be transmitted
@@ -350,6 +391,22 @@ int mipi_dsi_dcs_get_display_brightness_large(struct mipi_dsi_device *dsi,
 			return ret;                                            \
 	} while (0)
 
+/**
+ * mipi_dsi_dcs_write_seq_multi - transmit a DCS command with payload
+ *
+ * This macro will print errors for you and error handling is optimized for
+ * callers that call this multiple times in a row.
+ *
+ * @ctx: Context for multiple DSI transactions
+ * @cmd: Command
+ * @seq: buffer containing data to be transmitted
+ */
+#define mipi_dsi_dcs_write_seq_multi(ctx, cmd, seq...)                  \
+	do {                                                            \
+		static const u8 d[] = { cmd, seq };                     \
+		mipi_dsi_dcs_write_buffer_multi(ctx, d, ARRAY_SIZE(d)); \
+	} while (0)
+
 /**
  * struct mipi_dsi_driver - DSI driver
  * @driver: device driver model driver
-- 
2.44.0.769.g3c40516874-goog


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

* [PATCH v2 5/8] drm/mipi-dsi: mipi_dsi_*_write functions don't need to ratelimit prints
  2024-04-26 23:58 [PATCH v2 0/8] drm/mipi-dsi: Reduce bloat and add funcs for cleaner init seqs Douglas Anderson
                   ` (3 preceding siblings ...)
  2024-04-26 23:58 ` [PATCH v2 4/8] drm/mipi-dsi: Introduce mipi_dsi_*_write_seq_multi() Douglas Anderson
@ 2024-04-26 23:58 ` Douglas Anderson
  2024-04-26 23:58 ` [PATCH v2 6/8] drm/panel: novatek-nt36672e: Switch to mipi_dsi_dcs_write_seq_multi() Douglas Anderson
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 23+ messages in thread
From: Douglas Anderson @ 2024-04-26 23:58 UTC (permalink / raw)
  To: dri-devel
  Cc: Linus Walleij, lvzhaoxiong, Jani Nikula, Hsin-Yi Wang,
	Javier Martinez Canillas, Neil Armstrong, Joel Selvaraj,
	Dmitry Baryshkov, Cong Yang, Sam Ravnborg, Douglas Anderson,
	Daniel Vetter, David Airlie, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, linux-kernel

We really don't expect these errors to be printed over and over
again. When a driver hits the error it should bail out. Just use a
normal error print.

Signed-off-by: Douglas Anderson <dianders@chromium.org>
---

Changes in v2:
- New

 drivers/gpu/drm/drm_mipi_dsi.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c
index b7c75a4396e6..8bc2db971e93 100644
--- a/drivers/gpu/drm/drm_mipi_dsi.c
+++ b/drivers/gpu/drm/drm_mipi_dsi.c
@@ -770,7 +770,7 @@ EXPORT_SYMBOL(mipi_dsi_generic_write);
  * @payload: buffer containing the payload
  * @size: size of payload buffer
  *
- * Like mipi_dsi_generic_write() but includes a dev_err_ratelimited()
+ * Like mipi_dsi_generic_write() but includes a dev_err()
  * call for you and returns 0 upon success, not the number of bytes sent.
  *
  * Return: 0 on success or a negative error code on failure.
@@ -783,8 +783,8 @@ int mipi_dsi_generic_write_chatty(struct mipi_dsi_device *dsi,
 
 	ret = mipi_dsi_generic_write(dsi, payload, size);
 	if (ret < 0) {
-		dev_err_ratelimited(dev, "sending generic data %*ph failed: %d\n",
-				    (int)size, payload, (int)ret);
+		dev_err(dev, "sending generic data %*ph failed: %d\n",
+			(int)size, payload, (int)ret);
 		return ret;
 	}
 
@@ -814,8 +814,8 @@ void mipi_dsi_generic_write_multi(struct mipi_dsi_multi_context *ctx,
 	ret = mipi_dsi_generic_write(dsi, payload, size);
 	if (ret < 0) {
 		ctx->accum_err = ret;
-		dev_err_ratelimited(dev, "sending generic data %*ph failed: %d\n",
-				    (int)size, payload, ctx->accum_err);
+		dev_err(dev, "sending generic data %*ph failed: %d\n",
+			(int)size, payload, ctx->accum_err);
 	}
 }
 EXPORT_SYMBOL(mipi_dsi_generic_write_multi);
@@ -914,7 +914,7 @@ EXPORT_SYMBOL(mipi_dsi_dcs_write_buffer);
  * @data: buffer containing data to be transmitted
  * @len: size of transmission buffer
  *
- * Like mipi_dsi_dcs_write_buffer() but includes a dev_err_ratelimited()
+ * Like mipi_dsi_dcs_write_buffer() but includes a dev_err()
  * call for you and returns 0 upon success, not the number of bytes sent.
  *
  * Return: 0 on success or a negative error code on failure.
@@ -927,8 +927,8 @@ int mipi_dsi_dcs_write_buffer_chatty(struct mipi_dsi_device *dsi,
 
 	ret = mipi_dsi_dcs_write_buffer(dsi, data, len);
 	if (ret < 0) {
-		dev_err_ratelimited(dev, "sending dcs data %*ph failed: %d\n",
-				    (int)len, data, (int)ret);
+		dev_err(dev, "sending dcs data %*ph failed: %d\n",
+			(int)len, data, (int)ret);
 		return ret;
 	}
 
@@ -958,8 +958,8 @@ void mipi_dsi_dcs_write_buffer_multi(struct mipi_dsi_multi_context *ctx,
 	ret = mipi_dsi_dcs_write_buffer(dsi, data, len);
 	if (ret < 0) {
 		ctx->accum_err = ret;
-		dev_err_ratelimited(dev, "sending dcs data %*ph failed: %d\n",
-				    (int)len, data, ctx->accum_err);
+		dev_err(dev, "sending dcs data %*ph failed: %d\n",
+			(int)len, data, ctx->accum_err);
 	}
 }
 EXPORT_SYMBOL(mipi_dsi_dcs_write_buffer_multi);
-- 
2.44.0.769.g3c40516874-goog


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

* [PATCH v2 6/8] drm/panel: novatek-nt36672e: Switch to mipi_dsi_dcs_write_seq_multi()
  2024-04-26 23:58 [PATCH v2 0/8] drm/mipi-dsi: Reduce bloat and add funcs for cleaner init seqs Douglas Anderson
                   ` (4 preceding siblings ...)
  2024-04-26 23:58 ` [PATCH v2 5/8] drm/mipi-dsi: mipi_dsi_*_write functions don't need to ratelimit prints Douglas Anderson
@ 2024-04-26 23:58 ` Douglas Anderson
  2024-04-26 23:58 ` [PATCH v2 7/8] drm/panel: boe-tv101wum-nl6: Don't use a table for initting commands Douglas Anderson
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 23+ messages in thread
From: Douglas Anderson @ 2024-04-26 23:58 UTC (permalink / raw)
  To: dri-devel
  Cc: Linus Walleij, lvzhaoxiong, Jani Nikula, Hsin-Yi Wang,
	Javier Martinez Canillas, Neil Armstrong, Joel Selvaraj,
	Dmitry Baryshkov, Cong Yang, Sam Ravnborg, Douglas Anderson,
	Daniel Vetter, David Airlie, Jessica Zhang, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, linux-kernel

This is a mechanical conversion of the novatek-nt36672e driver to use
the new mipi_dsi_dcs_write_seq_multi(). The new function is easier for
clients to understand and using it also causes smaller code to be
generated. Specifically:

$ scripts/bloat-o-meter \
  ...after/panel-novatek-nt36672e.ko \
  ...ctx/panel-novatek-nt36672e.ko
add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-988 (-988)
Function                                     old     new   delta
nt36672e_1080x2408_60hz_init                6236    5248    -988
Total: Before=10651, After=9663, chg -9.28%

Signed-off-by: Douglas Anderson <dianders@chromium.org>
---
This change is only compile tested. I don't use this panel myself but
arbitrarily picked it as an example to look at when working on the
MIPI DSI macros.

Changes in v2:
- New

 .../gpu/drm/panel/panel-novatek-nt36672e.c    | 524 +++++++++---------
 1 file changed, 263 insertions(+), 261 deletions(-)

diff --git a/drivers/gpu/drm/panel/panel-novatek-nt36672e.c b/drivers/gpu/drm/panel/panel-novatek-nt36672e.c
index 20b7bfe4aa12..a83526fe55bb 100644
--- a/drivers/gpu/drm/panel/panel-novatek-nt36672e.c
+++ b/drivers/gpu/drm/panel/panel-novatek-nt36672e.c
@@ -51,293 +51,295 @@ static inline struct nt36672e_panel *to_nt36672e_panel(struct drm_panel *panel)
 
 static int nt36672e_1080x2408_60hz_init(struct mipi_dsi_device *dsi)
 {
-	mipi_dsi_dcs_write_seq(dsi, 0xff, 0x10);
-	mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0xb0, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0xc0, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0xc1, 0x89, 0x28, 0x00, 0x08, 0x00, 0xaa, 0x02,
+	struct mipi_dsi_multi_context ctx = { .dsi = dsi };
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x89, 0x28, 0x00, 0x08, 0x00, 0xaa, 0x02,
 				0x0e, 0x00, 0x2b, 0x00, 0x07, 0x0d, 0xb7, 0x0c, 0xb7);
 
-	mipi_dsi_dcs_write_seq(dsi, 0xc2, 0x1b, 0xa0);
-	mipi_dsi_dcs_write_seq(dsi, 0xff, 0x20);
-	mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0x01, 0x66);
-	mipi_dsi_dcs_write_seq(dsi, 0x06, 0x40);
-	mipi_dsi_dcs_write_seq(dsi, 0x07, 0x38);
-	mipi_dsi_dcs_write_seq(dsi, 0x2f, 0x83);
-	mipi_dsi_dcs_write_seq(dsi, 0x69, 0x91);
-	mipi_dsi_dcs_write_seq(dsi, 0x95, 0xd1);
-	mipi_dsi_dcs_write_seq(dsi, 0x96, 0xd1);
-	mipi_dsi_dcs_write_seq(dsi, 0xf2, 0x64);
-	mipi_dsi_dcs_write_seq(dsi, 0xf3, 0x54);
-	mipi_dsi_dcs_write_seq(dsi, 0xf4, 0x64);
-	mipi_dsi_dcs_write_seq(dsi, 0xf5, 0x54);
-	mipi_dsi_dcs_write_seq(dsi, 0xf6, 0x64);
-	mipi_dsi_dcs_write_seq(dsi, 0xf7, 0x54);
-	mipi_dsi_dcs_write_seq(dsi, 0xf8, 0x64);
-	mipi_dsi_dcs_write_seq(dsi, 0xf9, 0x54);
-	mipi_dsi_dcs_write_seq(dsi, 0xff, 0x24);
-	mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0x01, 0x0f);
-	mipi_dsi_dcs_write_seq(dsi, 0x03, 0x0c);
-	mipi_dsi_dcs_write_seq(dsi, 0x05, 0x1d);
-	mipi_dsi_dcs_write_seq(dsi, 0x08, 0x2f);
-	mipi_dsi_dcs_write_seq(dsi, 0x09, 0x2e);
-	mipi_dsi_dcs_write_seq(dsi, 0x0a, 0x2d);
-	mipi_dsi_dcs_write_seq(dsi, 0x0b, 0x2c);
-	mipi_dsi_dcs_write_seq(dsi, 0x11, 0x17);
-	mipi_dsi_dcs_write_seq(dsi, 0x12, 0x13);
-	mipi_dsi_dcs_write_seq(dsi, 0x13, 0x15);
-	mipi_dsi_dcs_write_seq(dsi, 0x15, 0x14);
-	mipi_dsi_dcs_write_seq(dsi, 0x16, 0x16);
-	mipi_dsi_dcs_write_seq(dsi, 0x17, 0x18);
-	mipi_dsi_dcs_write_seq(dsi, 0x1b, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0x1d, 0x1d);
-	mipi_dsi_dcs_write_seq(dsi, 0x20, 0x2f);
-	mipi_dsi_dcs_write_seq(dsi, 0x21, 0x2e);
-	mipi_dsi_dcs_write_seq(dsi, 0x22, 0x2d);
-	mipi_dsi_dcs_write_seq(dsi, 0x23, 0x2c);
-	mipi_dsi_dcs_write_seq(dsi, 0x29, 0x17);
-	mipi_dsi_dcs_write_seq(dsi, 0x2a, 0x13);
-	mipi_dsi_dcs_write_seq(dsi, 0x2b, 0x15);
-	mipi_dsi_dcs_write_seq(dsi, 0x2f, 0x14);
-	mipi_dsi_dcs_write_seq(dsi, 0x30, 0x16);
-	mipi_dsi_dcs_write_seq(dsi, 0x31, 0x18);
-	mipi_dsi_dcs_write_seq(dsi, 0x32, 0x04);
-	mipi_dsi_dcs_write_seq(dsi, 0x34, 0x10);
-	mipi_dsi_dcs_write_seq(dsi, 0x35, 0x1f);
-	mipi_dsi_dcs_write_seq(dsi, 0x36, 0x1f);
-	mipi_dsi_dcs_write_seq(dsi, 0x4d, 0x14);
-	mipi_dsi_dcs_write_seq(dsi, 0x4e, 0x36);
-	mipi_dsi_dcs_write_seq(dsi, 0x4f, 0x36);
-	mipi_dsi_dcs_write_seq(dsi, 0x53, 0x36);
-	mipi_dsi_dcs_write_seq(dsi, 0x71, 0x30);
-	mipi_dsi_dcs_write_seq(dsi, 0x79, 0x11);
-	mipi_dsi_dcs_write_seq(dsi, 0x7a, 0x82);
-	mipi_dsi_dcs_write_seq(dsi, 0x7b, 0x8f);
-	mipi_dsi_dcs_write_seq(dsi, 0x7d, 0x04);
-	mipi_dsi_dcs_write_seq(dsi, 0x80, 0x04);
-	mipi_dsi_dcs_write_seq(dsi, 0x81, 0x04);
-	mipi_dsi_dcs_write_seq(dsi, 0x82, 0x13);
-	mipi_dsi_dcs_write_seq(dsi, 0x84, 0x31);
-	mipi_dsi_dcs_write_seq(dsi, 0x85, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x86, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x87, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x90, 0x13);
-	mipi_dsi_dcs_write_seq(dsi, 0x92, 0x31);
-	mipi_dsi_dcs_write_seq(dsi, 0x93, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x94, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x95, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x9c, 0xf4);
-	mipi_dsi_dcs_write_seq(dsi, 0x9d, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0xa0, 0x0f);
-	mipi_dsi_dcs_write_seq(dsi, 0xa2, 0x0f);
-	mipi_dsi_dcs_write_seq(dsi, 0xa3, 0x02);
-	mipi_dsi_dcs_write_seq(dsi, 0xa4, 0x04);
-	mipi_dsi_dcs_write_seq(dsi, 0xa5, 0x04);
-	mipi_dsi_dcs_write_seq(dsi, 0xc6, 0xc0);
-	mipi_dsi_dcs_write_seq(dsi, 0xc9, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0xd9, 0x80);
-	mipi_dsi_dcs_write_seq(dsi, 0xe9, 0x02);
-	mipi_dsi_dcs_write_seq(dsi, 0xff, 0x25);
-	mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0x18, 0x22);
-	mipi_dsi_dcs_write_seq(dsi, 0x19, 0xe4);
-	mipi_dsi_dcs_write_seq(dsi, 0x21, 0x40);
-	mipi_dsi_dcs_write_seq(dsi, 0x66, 0xd8);
-	mipi_dsi_dcs_write_seq(dsi, 0x68, 0x50);
-	mipi_dsi_dcs_write_seq(dsi, 0x69, 0x10);
-	mipi_dsi_dcs_write_seq(dsi, 0x6b, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x6d, 0x0d);
-	mipi_dsi_dcs_write_seq(dsi, 0x6e, 0x48);
-	mipi_dsi_dcs_write_seq(dsi, 0x72, 0x41);
-	mipi_dsi_dcs_write_seq(dsi, 0x73, 0x4a);
-	mipi_dsi_dcs_write_seq(dsi, 0x74, 0xd0);
-	mipi_dsi_dcs_write_seq(dsi, 0x77, 0x62);
-	mipi_dsi_dcs_write_seq(dsi, 0x79, 0x7e);
-	mipi_dsi_dcs_write_seq(dsi, 0x7d, 0x03);
-	mipi_dsi_dcs_write_seq(dsi, 0x7e, 0x15);
-	mipi_dsi_dcs_write_seq(dsi, 0x7f, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x84, 0x4d);
-	mipi_dsi_dcs_write_seq(dsi, 0xcf, 0x80);
-	mipi_dsi_dcs_write_seq(dsi, 0xd6, 0x80);
-	mipi_dsi_dcs_write_seq(dsi, 0xd7, 0x80);
-	mipi_dsi_dcs_write_seq(dsi, 0xef, 0x20);
-	mipi_dsi_dcs_write_seq(dsi, 0xf0, 0x84);
-	mipi_dsi_dcs_write_seq(dsi, 0xff, 0x26);
-	mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0x81, 0x0f);
-	mipi_dsi_dcs_write_seq(dsi, 0x83, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0x84, 0x03);
-	mipi_dsi_dcs_write_seq(dsi, 0x85, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0x86, 0x03);
-	mipi_dsi_dcs_write_seq(dsi, 0x87, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0x88, 0x05);
-	mipi_dsi_dcs_write_seq(dsi, 0x8a, 0x1a);
-	mipi_dsi_dcs_write_seq(dsi, 0x8b, 0x11);
-	mipi_dsi_dcs_write_seq(dsi, 0x8c, 0x24);
-	mipi_dsi_dcs_write_seq(dsi, 0x8e, 0x42);
-	mipi_dsi_dcs_write_seq(dsi, 0x8f, 0x11);
-	mipi_dsi_dcs_write_seq(dsi, 0x90, 0x11);
-	mipi_dsi_dcs_write_seq(dsi, 0x91, 0x11);
-	mipi_dsi_dcs_write_seq(dsi, 0x9a, 0x80);
-	mipi_dsi_dcs_write_seq(dsi, 0x9b, 0x04);
-	mipi_dsi_dcs_write_seq(dsi, 0x9c, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x9d, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x9e, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0xff, 0x27);
-	mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0x01, 0x68);
-	mipi_dsi_dcs_write_seq(dsi, 0x20, 0x81);
-	mipi_dsi_dcs_write_seq(dsi, 0x21, 0x6a);
-	mipi_dsi_dcs_write_seq(dsi, 0x25, 0x81);
-	mipi_dsi_dcs_write_seq(dsi, 0x26, 0x94);
-	mipi_dsi_dcs_write_seq(dsi, 0x6e, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x6f, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x70, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x71, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x72, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x75, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x76, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x77, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0x7d, 0x09);
-	mipi_dsi_dcs_write_seq(dsi, 0x7e, 0x67);
-	mipi_dsi_dcs_write_seq(dsi, 0x80, 0x23);
-	mipi_dsi_dcs_write_seq(dsi, 0x82, 0x09);
-	mipi_dsi_dcs_write_seq(dsi, 0x83, 0x67);
-	mipi_dsi_dcs_write_seq(dsi, 0x88, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0x89, 0x10);
-	mipi_dsi_dcs_write_seq(dsi, 0xa5, 0x10);
-	mipi_dsi_dcs_write_seq(dsi, 0xa6, 0x23);
-	mipi_dsi_dcs_write_seq(dsi, 0xa7, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0xb6, 0x40);
-	mipi_dsi_dcs_write_seq(dsi, 0xe5, 0x02);
-	mipi_dsi_dcs_write_seq(dsi, 0xe6, 0xd3);
-	mipi_dsi_dcs_write_seq(dsi, 0xeb, 0x03);
-	mipi_dsi_dcs_write_seq(dsi, 0xec, 0x28);
-	mipi_dsi_dcs_write_seq(dsi, 0xff, 0x2a);
-	mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0x00, 0x91);
-	mipi_dsi_dcs_write_seq(dsi, 0x03, 0x20);
-	mipi_dsi_dcs_write_seq(dsi, 0x07, 0x50);
-	mipi_dsi_dcs_write_seq(dsi, 0x0a, 0x70);
-	mipi_dsi_dcs_write_seq(dsi, 0x0c, 0x04);
-	mipi_dsi_dcs_write_seq(dsi, 0x0d, 0x40);
-	mipi_dsi_dcs_write_seq(dsi, 0x0f, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0x11, 0xe0);
-	mipi_dsi_dcs_write_seq(dsi, 0x15, 0x0f);
-	mipi_dsi_dcs_write_seq(dsi, 0x16, 0xa4);
-	mipi_dsi_dcs_write_seq(dsi, 0x19, 0x0f);
-	mipi_dsi_dcs_write_seq(dsi, 0x1a, 0x78);
-	mipi_dsi_dcs_write_seq(dsi, 0x1b, 0x23);
-	mipi_dsi_dcs_write_seq(dsi, 0x1d, 0x36);
-	mipi_dsi_dcs_write_seq(dsi, 0x1e, 0x3e);
-	mipi_dsi_dcs_write_seq(dsi, 0x1f, 0x3e);
-	mipi_dsi_dcs_write_seq(dsi, 0x20, 0x3e);
-	mipi_dsi_dcs_write_seq(dsi, 0x28, 0xfd);
-	mipi_dsi_dcs_write_seq(dsi, 0x29, 0x12);
-	mipi_dsi_dcs_write_seq(dsi, 0x2a, 0xe1);
-	mipi_dsi_dcs_write_seq(dsi, 0x2d, 0x0a);
-	mipi_dsi_dcs_write_seq(dsi, 0x30, 0x49);
-	mipi_dsi_dcs_write_seq(dsi, 0x33, 0x96);
-	mipi_dsi_dcs_write_seq(dsi, 0x34, 0xff);
-	mipi_dsi_dcs_write_seq(dsi, 0x35, 0x40);
-	mipi_dsi_dcs_write_seq(dsi, 0x36, 0xde);
-	mipi_dsi_dcs_write_seq(dsi, 0x37, 0xf9);
-	mipi_dsi_dcs_write_seq(dsi, 0x38, 0x45);
-	mipi_dsi_dcs_write_seq(dsi, 0x39, 0xd9);
-	mipi_dsi_dcs_write_seq(dsi, 0x3a, 0x49);
-	mipi_dsi_dcs_write_seq(dsi, 0x4a, 0xf0);
-	mipi_dsi_dcs_write_seq(dsi, 0x7a, 0x09);
-	mipi_dsi_dcs_write_seq(dsi, 0x7b, 0x40);
-	mipi_dsi_dcs_write_seq(dsi, 0x7f, 0xf0);
-	mipi_dsi_dcs_write_seq(dsi, 0x83, 0x0f);
-	mipi_dsi_dcs_write_seq(dsi, 0x84, 0xa4);
-	mipi_dsi_dcs_write_seq(dsi, 0x87, 0x0f);
-	mipi_dsi_dcs_write_seq(dsi, 0x88, 0x78);
-	mipi_dsi_dcs_write_seq(dsi, 0x89, 0x23);
-	mipi_dsi_dcs_write_seq(dsi, 0x8b, 0x36);
-	mipi_dsi_dcs_write_seq(dsi, 0x8c, 0x7d);
-	mipi_dsi_dcs_write_seq(dsi, 0x8d, 0x7d);
-	mipi_dsi_dcs_write_seq(dsi, 0x8e, 0x7d);
-	mipi_dsi_dcs_write_seq(dsi, 0xff, 0x20);
-	mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0xb0, 0x00, 0x00, 0x00, 0x17, 0x00, 0x49, 0x00,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0x1b, 0xa0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x01, 0x66);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x38);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2f, 0x83);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x69, 0x91);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x95, 0xd1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x96, 0xd1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xf2, 0x64);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xf3, 0x54);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xf4, 0x64);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xf5, 0x54);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xf6, 0x64);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xf7, 0x54);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xf8, 0x64);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xf9, 0x54);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x01, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x03, 0x0c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0x1d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x2f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x09, 0x2e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0a, 0x2d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0b, 0x2c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x11, 0x17);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x12, 0x13);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x13, 0x15);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x15, 0x14);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x16, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0x18);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1b, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1d, 0x1d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x2f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x21, 0x2e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x2d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x2c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x29, 0x17);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2a, 0x13);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2b, 0x15);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2f, 0x14);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x30, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x31, 0x18);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x32, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x34, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x35, 0x1f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x36, 0x1f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4d, 0x14);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4e, 0x36);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4f, 0x36);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x53, 0x36);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x71, 0x30);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x79, 0x11);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7a, 0x82);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7b, 0x8f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7d, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x80, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x81, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x82, 0x13);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x84, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x85, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x86, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x87, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x90, 0x13);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x92, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x93, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x94, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x95, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9c, 0xf4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9d, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa0, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa2, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa3, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa4, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa5, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0xc0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd9, 0x80);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x25);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x22);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0xe4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x21, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x66, 0xd8);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x68, 0x50);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x69, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6b, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6d, 0x0d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6e, 0x48);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x72, 0x41);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x73, 0x4a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x74, 0xd0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x77, 0x62);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x79, 0x7e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7d, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7e, 0x15);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7f, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x84, 0x4d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcf, 0x80);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd6, 0x80);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd7, 0x80);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xef, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xf0, 0x84);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x81, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x83, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x84, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x85, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x86, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x87, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x88, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x8a, 0x1a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x8b, 0x11);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x8c, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x8e, 0x42);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x8f, 0x11);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x90, 0x11);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x91, 0x11);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9a, 0x80);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9b, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9c, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9d, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9e, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x27);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x01, 0x68);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x81);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x21, 0x6a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x81);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0x94);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6e, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6f, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x70, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x71, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x72, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x75, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x76, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x77, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7d, 0x09);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7e, 0x67);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x80, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x82, 0x09);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x83, 0x67);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x88, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x89, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa5, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa6, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa7, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe5, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe6, 0xd3);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xeb, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xec, 0x28);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x2a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0x91);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x03, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x50);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0a, 0x70);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0c, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0d, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0f, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x11, 0xe0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x15, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x16, 0xa4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1a, 0x78);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1b, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1d, 0x36);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1e, 0x3e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1f, 0x3e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x3e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x28, 0xfd);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x29, 0x12);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2a, 0xe1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2d, 0x0a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x30, 0x49);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x33, 0x96);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x34, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x35, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x36, 0xde);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x37, 0xf9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x38, 0x45);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x39, 0xd9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3a, 0x49);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4a, 0xf0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7a, 0x09);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7b, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7f, 0xf0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x83, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x84, 0xa4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x87, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x88, 0x78);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x89, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x8b, 0x36);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x8c, 0x7d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x8d, 0x7d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x8e, 0x7d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00, 0x00, 0x00, 0x17, 0x00, 0x49, 0x00,
 				0x6a, 0x00, 0x89, 0x00, 0x9f, 0x00, 0xb6, 0x00, 0xc8);
-	mipi_dsi_dcs_write_seq(dsi, 0xb1, 0x00, 0xd9, 0x01, 0x10, 0x01, 0x3a, 0x01,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x00, 0xd9, 0x01, 0x10, 0x01, 0x3a, 0x01,
 				0x7a, 0x01, 0xa9, 0x01, 0xf2, 0x02, 0x2d, 0x02, 0x2e);
-	mipi_dsi_dcs_write_seq(dsi, 0xb2, 0x02, 0x64, 0x02, 0xa3, 0x02, 0xca, 0x03,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02, 0x64, 0x02, 0xa3, 0x02, 0xca, 0x03,
 				0x00, 0x03, 0x1e, 0x03, 0x4a, 0x03, 0x59, 0x03, 0x6a);
-	mipi_dsi_dcs_write_seq(dsi, 0xb3, 0x03, 0x7d, 0x03, 0x93, 0x03, 0xab, 0x03,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x03, 0x7d, 0x03, 0x93, 0x03, 0xab, 0x03,
 				0xc8, 0x03, 0xec, 0x03, 0xfe, 0x00, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0xb4, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x51, 0x00,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x51, 0x00,
 				0x71, 0x00, 0x90, 0x00, 0xa7, 0x00, 0xbf, 0x00, 0xd1);
-	mipi_dsi_dcs_write_seq(dsi, 0xb5, 0x00, 0xe2, 0x01, 0x1a, 0x01, 0x43, 0x01,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x00, 0xe2, 0x01, 0x1a, 0x01, 0x43, 0x01,
 				0x83, 0x01, 0xb2, 0x01, 0xfa, 0x02, 0x34, 0x02, 0x36);
-	mipi_dsi_dcs_write_seq(dsi, 0xb6, 0x02, 0x6b, 0x02, 0xa8, 0x02, 0xd0, 0x03,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x02, 0x6b, 0x02, 0xa8, 0x02, 0xd0, 0x03,
 				0x03, 0x03, 0x21, 0x03, 0x4d, 0x03, 0x5b, 0x03, 0x6b);
-	mipi_dsi_dcs_write_seq(dsi, 0xb7, 0x03, 0x7e, 0x03, 0x94, 0x03, 0xac, 0x03,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x03, 0x7e, 0x03, 0x94, 0x03, 0xac, 0x03,
 				0xc8, 0x03, 0xec, 0x03, 0xfe, 0x00, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0xb8, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x51, 0x00,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x51, 0x00,
 				0x72, 0x00, 0x92, 0x00, 0xa8, 0x00, 0xbf, 0x00, 0xd1);
-	mipi_dsi_dcs_write_seq(dsi, 0xb9, 0x00, 0xe2, 0x01, 0x18, 0x01, 0x42, 0x01,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x00, 0xe2, 0x01, 0x18, 0x01, 0x42, 0x01,
 				0x81, 0x01, 0xaf, 0x01, 0xf5, 0x02, 0x2f, 0x02, 0x31);
-	mipi_dsi_dcs_write_seq(dsi, 0xba, 0x02, 0x68, 0x02, 0xa6, 0x02, 0xcd, 0x03,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x02, 0x68, 0x02, 0xa6, 0x02, 0xcd, 0x03,
 				0x01, 0x03, 0x1f, 0x03, 0x4a, 0x03, 0x59, 0x03, 0x6a);
-	mipi_dsi_dcs_write_seq(dsi, 0xbb, 0x03, 0x7d, 0x03, 0x93, 0x03, 0xab, 0x03,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0x03, 0x7d, 0x03, 0x93, 0x03, 0xab, 0x03,
 				0xc8, 0x03, 0xec, 0x03, 0xfe, 0x00, 0x00);
-	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, 0x17, 0x00, 0x49, 0x00,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x21);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00, 0x00, 0x00, 0x17, 0x00, 0x49, 0x00,
 				0x6a, 0x00, 0x89, 0x00, 0x9f, 0x00, 0xb6, 0x00, 0xc8);
-	mipi_dsi_dcs_write_seq(dsi, 0xb1, 0x00, 0xd9, 0x01, 0x10, 0x01, 0x3a, 0x01,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x00, 0xd9, 0x01, 0x10, 0x01, 0x3a, 0x01,
 				0x7a, 0x01, 0xa9, 0x01, 0xf2, 0x02, 0x2d, 0x02, 0x2e);
-	mipi_dsi_dcs_write_seq(dsi, 0xb2, 0x02, 0x64, 0x02, 0xa3, 0x02, 0xca, 0x03,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02, 0x64, 0x02, 0xa3, 0x02, 0xca, 0x03,
 				0x00, 0x03, 0x1e, 0x03, 0x4a, 0x03, 0x59, 0x03, 0x6a);
-	mipi_dsi_dcs_write_seq(dsi, 0xb3, 0x03, 0x7d, 0x03, 0x93, 0x03, 0xab, 0x03,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x03, 0x7d, 0x03, 0x93, 0x03, 0xab, 0x03,
 				0xc8, 0x03, 0xec, 0x03, 0xfe, 0x00, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0xb4, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x51, 0x00,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x51, 0x00,
 				0x71, 0x00, 0x90, 0x00, 0xa7, 0x00, 0xbf, 0x00, 0xd1);
-	mipi_dsi_dcs_write_seq(dsi, 0xb5, 0x00, 0xe2, 0x01, 0x1a, 0x01, 0x43, 0x01,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x00, 0xe2, 0x01, 0x1a, 0x01, 0x43, 0x01,
 				0x83, 0x01, 0xb2, 0x01, 0xfa, 0x02, 0x34, 0x02, 0x36);
-	mipi_dsi_dcs_write_seq(dsi, 0xb6, 0x02, 0x6b, 0x02, 0xa8, 0x02, 0xd0, 0x03,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x02, 0x6b, 0x02, 0xa8, 0x02, 0xd0, 0x03,
 				0x03, 0x03, 0x21, 0x03, 0x4d, 0x03, 0x5b, 0x03, 0x6b);
-	mipi_dsi_dcs_write_seq(dsi, 0xb7, 0x03, 0x7e, 0x03, 0x94, 0x03, 0xac, 0x03,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x03, 0x7e, 0x03, 0x94, 0x03, 0xac, 0x03,
 				0xc8, 0x03, 0xec, 0x03, 0xfe, 0x00, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0xb8, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x51, 0x00,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x51, 0x00,
 				0x72, 0x00, 0x92, 0x00, 0xa8, 0x00, 0xbf, 0x00, 0xd1);
-	mipi_dsi_dcs_write_seq(dsi, 0xb9, 0x00, 0xe2, 0x01, 0x18, 0x01, 0x42, 0x01,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x00, 0xe2, 0x01, 0x18, 0x01, 0x42, 0x01,
 				0x81, 0x01, 0xaf, 0x01, 0xf5, 0x02, 0x2f, 0x02, 0x31);
-	mipi_dsi_dcs_write_seq(dsi, 0xba, 0x02, 0x68, 0x02, 0xa6, 0x02, 0xcd, 0x03,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x02, 0x68, 0x02, 0xa6, 0x02, 0xcd, 0x03,
 				0x01, 0x03, 0x1f, 0x03, 0x4a, 0x03, 0x59, 0x03, 0x6a);
-	mipi_dsi_dcs_write_seq(dsi, 0xbb, 0x03, 0x7d, 0x03, 0x93, 0x03, 0xab, 0x03,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0x03, 0x7d, 0x03, 0x93, 0x03, 0xab, 0x03,
 				0xc8, 0x03, 0xec, 0x03, 0xfe, 0x00, 0x00);
-	mipi_dsi_dcs_write_seq(dsi, 0xff, 0x2c);
-	mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0x61, 0x1f);
-	mipi_dsi_dcs_write_seq(dsi, 0x62, 0x1f);
-	mipi_dsi_dcs_write_seq(dsi, 0x7e, 0x03);
-	mipi_dsi_dcs_write_seq(dsi, 0x6a, 0x14);
-	mipi_dsi_dcs_write_seq(dsi, 0x6b, 0x36);
-	mipi_dsi_dcs_write_seq(dsi, 0x6c, 0x36);
-	mipi_dsi_dcs_write_seq(dsi, 0x6d, 0x36);
-	mipi_dsi_dcs_write_seq(dsi, 0x53, 0x04);
-	mipi_dsi_dcs_write_seq(dsi, 0x54, 0x04);
-	mipi_dsi_dcs_write_seq(dsi, 0x55, 0x04);
-	mipi_dsi_dcs_write_seq(dsi, 0x56, 0x0f);
-	mipi_dsi_dcs_write_seq(dsi, 0x58, 0x0f);
-	mipi_dsi_dcs_write_seq(dsi, 0x59, 0x0f);
-	mipi_dsi_dcs_write_seq(dsi, 0xff, 0xf0);
-	mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0x5a, 0x00);
-
-	mipi_dsi_dcs_write_seq(dsi, 0xff, 0x10);
-	mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01);
-	mipi_dsi_dcs_write_seq(dsi, 0x51, 0xff);
-	mipi_dsi_dcs_write_seq(dsi, 0x53, 0x24);
-	mipi_dsi_dcs_write_seq(dsi, 0x55, 0x01);
-
-	return 0;
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x2c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0x1f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x62, 0x1f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7e, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6a, 0x14);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6b, 0x36);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6c, 0x36);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6d, 0x36);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x53, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x54, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x55, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x56, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x58, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x59, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0xf0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5a, 0x00);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x51, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x53, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x55, 0x01);
+
+	return ctx.accum_err;
 }
 
 static int nt36672e_power_on(struct nt36672e_panel *ctx)
-- 
2.44.0.769.g3c40516874-goog


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

* [PATCH v2 7/8] drm/panel: boe-tv101wum-nl6: Don't use a table for initting commands
  2024-04-26 23:58 [PATCH v2 0/8] drm/mipi-dsi: Reduce bloat and add funcs for cleaner init seqs Douglas Anderson
                   ` (5 preceding siblings ...)
  2024-04-26 23:58 ` [PATCH v2 6/8] drm/panel: novatek-nt36672e: Switch to mipi_dsi_dcs_write_seq_multi() Douglas Anderson
@ 2024-04-26 23:58 ` Douglas Anderson
  2024-04-26 23:58 ` [PATCH v2 8/8] drm/panel: boe-tv101wum-nl6: Convert hex to lowercase Douglas Anderson
  2024-04-29  9:20 ` [PATCH v2 0/8] drm/mipi-dsi: Reduce bloat and add funcs for cleaner init seqs Jani Nikula
  8 siblings, 0 replies; 23+ messages in thread
From: Douglas Anderson @ 2024-04-26 23:58 UTC (permalink / raw)
  To: dri-devel
  Cc: Linus Walleij, lvzhaoxiong, Jani Nikula, Hsin-Yi Wang,
	Javier Martinez Canillas, Neil Armstrong, Joel Selvaraj,
	Dmitry Baryshkov, Cong Yang, Sam Ravnborg, Douglas Anderson,
	Daniel Vetter, David Airlie, Jessica Zhang, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, linux-kernel

Consensus on the mailing lists is that panels shouldn't use a table of
init commands but should instead use init functions. With the recently
introduced mipi_dsi_dcs_write_seq_multi() this is not only clean/easy
but also saves space. Measuring before/after this change:

$ scripts/bloat-o-meter \
  .../before/panel-boe-tv101wum-nl6.ko \
  .../after/panel-boe-tv101wum-nl6.ko
add/remove: 14/8 grow/shrink: 0/1 up/down: 27062/-31433 (-4371)
Function                                     old     new   delta
inx_hj110iz_init                               -    7040   +7040
boe_tv110c9m_init                              -    6440   +6440
boe_init                                       -    5916   +5916
starry_qfh032011_53g_init                      -    1944   +1944
starry_himax83102_j02_init                     -    1228   +1228
inx_hj110iz_init.d                             -    1040   +1040
boe_tv110c9m_init.d                            -     982    +982
auo_b101uan08_3_init                           -     944    +944
boe_init.d                                     -     580    +580
starry_himax83102_j02_init.d                   -     512    +512
starry_qfh032011_53g_init.d                    -     180    +180
auo_kd101n80_45na_init                         -     172    +172
auo_b101uan08_3_init.d                         -      82     +82
auo_kd101n80_45na_init.d                       -       2      +2
auo_kd101n80_45na_init_cmd                   144       -    -144
boe_panel_prepare                            592     440    -152
auo_b101uan08_3_init_cmd                    1056       -   -1056
starry_himax83102_j02_init_cmd              1392       -   -1392
starry_qfh032011_53g_init_cmd               2256       -   -2256
.compoundliteral                            3393       -   -3393
boe_init_cmd                                7008       -   -7008
boe_tv110c9m_init_cmd                       7656       -   -7656
inx_hj110iz_init_cmd                        8376       -   -8376
Total: Before=37297, After=32926, chg -11.72%

Let's do the conversion.

Signed-off-by: Douglas Anderson <dianders@chromium.org>
---

Changes in v2:
- New

 .../gpu/drm/panel/panel-boe-tv101wum-nl6.c    | 2712 +++++++++--------
 1 file changed, 1365 insertions(+), 1347 deletions(-)

diff --git a/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c b/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c
index 0ffe8f8c01de..a3ed33f660cb 100644
--- a/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c
+++ b/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c
@@ -17,6 +17,8 @@
 
 #include <video/mipi_display.h>
 
+struct boe_panel;
+
 struct panel_desc {
 	const struct drm_display_mode *modes;
 	unsigned int bpc;
@@ -32,7 +34,7 @@ struct panel_desc {
 
 	unsigned long mode_flags;
 	enum mipi_dsi_pixel_format format;
-	const struct panel_init_cmd *init_cmds;
+	int (*init)(struct boe_panel *boe);
 	unsigned int lanes;
 	bool discharge_on_disable;
 	bool lp11_before_reset;
@@ -54,1318 +56,1373 @@ struct boe_panel {
 	bool prepared;
 };
 
-enum dsi_cmd_type {
-	INIT_DCS_CMD,
-	DELAY_CMD,
-};
+static int boe_tv110c9m_init(struct boe_panel *boe)
+{
+	struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
 
-struct panel_init_cmd {
-	enum dsi_cmd_type type;
-	size_t len;
-	const char *data;
-};
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0xD9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x78);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x5A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x63);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0E, 0x91);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x73);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x95, 0xE6);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x96, 0xF0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x30, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6D, 0x66);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x75, 0xA2);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x77, 0x3B);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x89, 0x00, 0xA1, 0x00, 0xB6, 0x00, 0xC9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00, 0xDA, 0x01, 0x13, 0x01, 0x3C, 0x01, 0x7E, 0x01, 0xAB, 0x01, 0xF7, 0x02, 0x2F, 0x02, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02, 0x67, 0x02, 0xA6, 0x02, 0xD1, 0x03, 0x08, 0x03, 0x2E, 0x03, 0x5B, 0x03, 0x6B, 0x03, 0x7B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x03, 0x8E, 0x03, 0xA2, 0x03, 0xB7, 0x03, 0xE7, 0x03, 0xFD, 0x03, 0xFF);
 
-#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_multi(&ctx, 0xB4, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x89, 0x00, 0xA1, 0x00, 0xB6, 0x00, 0xC9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x00, 0xDA, 0x01, 0x13, 0x01, 0x3C, 0x01, 0x7E, 0x01, 0xAB, 0x01, 0xF7, 0x02, 0x2F, 0x02, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x02, 0x67, 0x02, 0xA6, 0x02, 0xD1, 0x03, 0x08, 0x03, 0x2E, 0x03, 0x5B, 0x03, 0x6B, 0x03, 0x7B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x03, 0x8E, 0x03, 0xA2, 0x03, 0xB7, 0x03, 0xE7, 0x03, 0xFD, 0x03, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x89, 0x00, 0xA1, 0x00, 0xB6, 0x00, 0xC9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x00, 0xDA, 0x01, 0x13, 0x01, 0x3C, 0x01, 0x7E, 0x01, 0xAB, 0x01, 0xF7, 0x02, 0x2F, 0x02, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x02, 0x67, 0x02, 0xA6, 0x02, 0xD1, 0x03, 0x08, 0x03, 0x2E, 0x03, 0x5B, 0x03, 0x6B, 0x03, 0x7B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x03, 0x8E, 0x03, 0xA2, 0x03, 0xB7, 0x03, 0xE7, 0x03, 0xFD, 0x03, 0xFF);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x21);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xAE, 0x00, 0xC1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00, 0xD2, 0x01, 0x0B, 0x01, 0x34, 0x01, 0x76, 0x01, 0xA3, 0x01, 0xEF, 0x02, 0x27, 0x02, 0x29);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02, 0x5F, 0x02, 0x9E, 0x02, 0xC9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x03, 0x86, 0x03, 0x9A, 0x03, 0xAF, 0x03, 0xDF, 0x03, 0xF5, 0x03, 0xE0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xAE, 0x00, 0xC1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x00, 0xD2, 0x01, 0x0B, 0x01, 0x34, 0x01, 0x76, 0x01, 0xA3, 0x01, 0xEF, 0x02, 0x27, 0x02, 0x29);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x02, 0x5F, 0x02, 0x9E, 0x02, 0xC9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x03, 0x86, 0x03, 0x9A, 0x03, 0xAF, 0x03, 0xDF, 0x03, 0xF5, 0x03, 0xE0);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xAE, 0x00, 0xC1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x00, 0xD2, 0x01, 0x0B, 0x01, 0x34, 0x01, 0x76, 0x01, 0xA3, 0x01, 0xEF, 0x02, 0x27, 0x02, 0x29);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x02, 0x5F, 0x02, 0x9E, 0x02, 0xC9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x03, 0x86, 0x03, 0x9A, 0x03, 0xAF, 0x03, 0xDF, 0x03, 0xF5, 0x03, 0xE0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x01, 0x00);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x02, 0x1C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x03, 0x1C);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x04, 0x1D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0x1D);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x04);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x0F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x09, 0x0F);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0A, 0x0E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0B, 0x0E);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0C, 0x0D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x0D);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0E, 0x0C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x0C);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x10, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x11, 0x08);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x12, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x13, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x14, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x15, 0x00);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x16, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0x00);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x1C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x1C);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1A, 0x1D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1B, 0x1D);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1C, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1D, 0x04);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1E, 0x0F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x0F);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x0E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x21, 0x0E);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x0D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x0D);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x0C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x0C);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x08);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x28, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x29, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x00);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2D, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2F, 0x0A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x30, 0x44);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x33, 0x0C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x34, 0x32);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x37, 0x44);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x38, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x39, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x5D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3B, 0x60);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3D, 0x42);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3F, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x43, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x47, 0x66);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4A, 0x5D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4B, 0x60);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4C, 0x91);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4D, 0x21);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4E, 0x43);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x51, 0x12);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x52, 0x34);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x55, 0x82, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x56, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x58, 0x21);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x59, 0x30);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5A, 0x60);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x50);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0x00, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5F, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x65, 0x82);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7E, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7F, 0x3C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x82, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x97, 0xC0);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x91, 0x44);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x92, 0xA9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x93, 0x1A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x94, 0x96);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x55);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x0A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0xA9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x22);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0xA9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0xA9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE3, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0xA9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE6, 0xA9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5D, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x8D, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x8E, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x90);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x25);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x60);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x50);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0x60);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x50);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x33, 0x60);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x34, 0x50);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3F, 0xE0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x40, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x44, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x45, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x48, 0x60);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x49, 0x50);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5D, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0xD0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0x60);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x62, 0x50);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xF1, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x2A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x64, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x67, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6A, 0x16);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x70, 0x30);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA2, 0xF3);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA3, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA4, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA5, 0xFF);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x08);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0xA1);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x02, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x04, 0x28);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0x30);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0C, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x0D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x11, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x12, 0x50);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x13, 0x56);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x14, 0x57);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x15, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x16, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0xA0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x86);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x0D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1A, 0x7F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1B, 0x0C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1C, 0xBF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x0D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x7F);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1D, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1E, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2F, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x30, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x31, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x32, 0x7D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x39, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x33, 0x11);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x34, 0x78);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x35, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x9E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x4E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x00);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA9, 0x49);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAA, 0x4B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAB, 0x48);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAC, 0x43);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAD, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAE, 0x50);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAF, 0x44);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x54);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x4E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x4D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x4C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x41);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x47);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x53);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x3E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x51);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x3C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x3B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x45);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x55);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0x3D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x3F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x52);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x4A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x39);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x4F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x3A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x42);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x27);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x56, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x58, 0x80);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x59, 0x75);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5A, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5D, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5F, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x60, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0x2E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x62, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x63, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x64, 0x43);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x65, 0x2D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x66, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x67, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x68, 0x44);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x78, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x00);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x2A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x2F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x08);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0xF8);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x28, 0x1A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x29, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x1A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2D, 0x1A);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0x80);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x00);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0xE0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x14, 0x60);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x16, 0xC0);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0xF0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x08);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x40);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x35, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x51, 0x00, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x53, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x55, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x13);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3B, 0x03, 0x96, 0x1A, 0x04, 0x04);
+	if (ctx.accum_err)
+		return ctx.accum_err;
+
+	msleep(100);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x11);
+	if (ctx.accum_err)
+		return ctx.accum_err;
+
+	msleep(200);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x29);
+	if (ctx.accum_err)
+		return ctx.accum_err;
+
+	msleep(100);
 
-	_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),
-	{},
+	return 0;
 };
 
-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(0x06, 0xC0),
-	_INIT_DCS_CMD(0x07, 0x87),
-	_INIT_DCS_CMD(0x08, 0x4B),
-
-	_INIT_DCS_CMD(0x0D, 0x63),
-	_INIT_DCS_CMD(0x0E, 0x91),
-	_INIT_DCS_CMD(0x0F, 0x69),
-	_INIT_DCS_CMD(0x94, 0x00),
-	_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(0x58, 0x43),
-	_INIT_DCS_CMD(0xFF, 0x24),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0x91, 0x44),
-	_INIT_DCS_CMD(0x92, 0x4C),
-	_INIT_DCS_CMD(0x94, 0x86),
-	_INIT_DCS_CMD(0x60, 0x96),
-	_INIT_DCS_CMD(0x61, 0xD0),
-	_INIT_DCS_CMD(0x63, 0x70),
-	_INIT_DCS_CMD(0xC2, 0xCA),
-
-	_INIT_DCS_CMD(0x00, 0x03),
-	_INIT_DCS_CMD(0x01, 0x03),
-	_INIT_DCS_CMD(0x02, 0x03),
-	_INIT_DCS_CMD(0x03, 0x29),
-	_INIT_DCS_CMD(0x04, 0x22),
-	_INIT_DCS_CMD(0x05, 0x22),
-	_INIT_DCS_CMD(0x06, 0x0B),
-	_INIT_DCS_CMD(0x07, 0x1D),
-	_INIT_DCS_CMD(0x08, 0x1C),
-	_INIT_DCS_CMD(0x09, 0x05),
-	_INIT_DCS_CMD(0x0A, 0x08),
-	_INIT_DCS_CMD(0x0B, 0x09),
-	_INIT_DCS_CMD(0x0C, 0x0A),
-	_INIT_DCS_CMD(0x0D, 0x0C),
-	_INIT_DCS_CMD(0x0E, 0x0D),
-	_INIT_DCS_CMD(0x0F, 0x0E),
-	_INIT_DCS_CMD(0x10, 0x0F),
-	_INIT_DCS_CMD(0x11, 0x10),
-	_INIT_DCS_CMD(0x12, 0x11),
-	_INIT_DCS_CMD(0x13, 0x04),
-	_INIT_DCS_CMD(0x14, 0x00),
-	_INIT_DCS_CMD(0x15, 0x03),
-	_INIT_DCS_CMD(0x16, 0x03),
-	_INIT_DCS_CMD(0x17, 0x03),
-	_INIT_DCS_CMD(0x18, 0x03),
-	_INIT_DCS_CMD(0x19, 0x29),
-	_INIT_DCS_CMD(0x1A, 0x22),
-	_INIT_DCS_CMD(0x1B, 0x22),
-	_INIT_DCS_CMD(0x1C, 0x0B),
-	_INIT_DCS_CMD(0x1D, 0x1D),
-	_INIT_DCS_CMD(0x1E, 0x1C),
-	_INIT_DCS_CMD(0x1F, 0x05),
-	_INIT_DCS_CMD(0x20, 0x08),
-	_INIT_DCS_CMD(0x21, 0x09),
-	_INIT_DCS_CMD(0x22, 0x0A),
-	_INIT_DCS_CMD(0x23, 0x0C),
-	_INIT_DCS_CMD(0x24, 0x0D),
-	_INIT_DCS_CMD(0x25, 0x0E),
-	_INIT_DCS_CMD(0x26, 0x0F),
-	_INIT_DCS_CMD(0x27, 0x10),
-	_INIT_DCS_CMD(0x28, 0x11),
-	_INIT_DCS_CMD(0x29, 0x04),
-	_INIT_DCS_CMD(0x2A, 0x00),
-	_INIT_DCS_CMD(0x2B, 0x03),
-
-	_INIT_DCS_CMD(0x2F, 0x0A),
-	_INIT_DCS_CMD(0x30, 0x35),
-	_INIT_DCS_CMD(0x37, 0xA7),
-	_INIT_DCS_CMD(0x39, 0x00),
-	_INIT_DCS_CMD(0x3A, 0x46),
-	_INIT_DCS_CMD(0x3B, 0x32),
-	_INIT_DCS_CMD(0x3D, 0x12),
-
-	_INIT_DCS_CMD(0x3F, 0x33),
-	_INIT_DCS_CMD(0x40, 0x31),
-	_INIT_DCS_CMD(0x41, 0x40),
-	_INIT_DCS_CMD(0x42, 0x42),
-	_INIT_DCS_CMD(0x47, 0x77),
-	_INIT_DCS_CMD(0x48, 0x77),
-	_INIT_DCS_CMD(0x4A, 0x45),
-	_INIT_DCS_CMD(0x4B, 0x45),
-	_INIT_DCS_CMD(0x4C, 0x14),
-
-	_INIT_DCS_CMD(0x4D, 0x21),
-	_INIT_DCS_CMD(0x4E, 0x43),
-	_INIT_DCS_CMD(0x4F, 0x65),
-	_INIT_DCS_CMD(0x55, 0x06),
-	_INIT_DCS_CMD(0x56, 0x06),
-	_INIT_DCS_CMD(0x58, 0x21),
-	_INIT_DCS_CMD(0x59, 0x70),
-	_INIT_DCS_CMD(0x5A, 0x46),
-	_INIT_DCS_CMD(0x5B, 0x32),
-	_INIT_DCS_CMD(0x5C, 0x88),
-	_INIT_DCS_CMD(0x5E, 0x00, 0x00),
-	_INIT_DCS_CMD(0x5F, 0x00),
-
-	_INIT_DCS_CMD(0x7A, 0xFF),
-	_INIT_DCS_CMD(0x7B, 0xFF),
-	_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(0xD7, 0x55),
-	_INIT_DCS_CMD(0xD8, 0x55),
-	_INIT_DCS_CMD(0xD9, 0x23),
-	_INIT_DCS_CMD(0xDA, 0x05),
-	_INIT_DCS_CMD(0xDB, 0x01),
-	_INIT_DCS_CMD(0xDC, 0x65),
-	_INIT_DCS_CMD(0xDD, 0x55),
-	_INIT_DCS_CMD(0xDE, 0x27),
-	_INIT_DCS_CMD(0xDF, 0x01),
-	_INIT_DCS_CMD(0xE0, 0x65),
-	_INIT_DCS_CMD(0xE1, 0x01),
-	_INIT_DCS_CMD(0xE2, 0x65),
-	_INIT_DCS_CMD(0xE3, 0x01),
-	_INIT_DCS_CMD(0xE4, 0x65),
-	_INIT_DCS_CMD(0xE5, 0x01),
-	_INIT_DCS_CMD(0xE6, 0x65),
-	_INIT_DCS_CMD(0xE7, 0x00),
-	_INIT_DCS_CMD(0xE8, 0x00),
-	_INIT_DCS_CMD(0xE9, 0x01),
-	_INIT_DCS_CMD(0xEA, 0x65),
-	_INIT_DCS_CMD(0xEB, 0x01),
-	_INIT_DCS_CMD(0xEE, 0x65),
-	_INIT_DCS_CMD(0xEF, 0x01),
-	_INIT_DCS_CMD(0xF0, 0x65),
-	_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(0xF1, 0x10),
-
-	_INIT_DCS_CMD(0x1E, 0x00),
-	_INIT_DCS_CMD(0x1F, 0x46),
-	_INIT_DCS_CMD(0x20, 0x32),
-
-	_INIT_DCS_CMD(0x25, 0x00),
-	_INIT_DCS_CMD(0x26, 0x46),
-	_INIT_DCS_CMD(0x27, 0x32),
-
-	_INIT_DCS_CMD(0x3F, 0x80),
-	_INIT_DCS_CMD(0x40, 0x00),
-	_INIT_DCS_CMD(0x43, 0x00),
-
-	_INIT_DCS_CMD(0x44, 0x46),
-	_INIT_DCS_CMD(0x45, 0x46),
-
-	_INIT_DCS_CMD(0x48, 0x46),
-	_INIT_DCS_CMD(0x49, 0x32),
-
-	_INIT_DCS_CMD(0x5B, 0x80),
-
-	_INIT_DCS_CMD(0x5C, 0x00),
-	_INIT_DCS_CMD(0x5D, 0x46),
-	_INIT_DCS_CMD(0x5E, 0x32),
-
-	_INIT_DCS_CMD(0x5F, 0x46),
-	_INIT_DCS_CMD(0x60, 0x32),
-
-	_INIT_DCS_CMD(0x61, 0x46),
-	_INIT_DCS_CMD(0x62, 0x32),
-	_INIT_DCS_CMD(0x68, 0x0C),
-
-	_INIT_DCS_CMD(0x6C, 0x0D),
-	_INIT_DCS_CMD(0x6E, 0x0D),
-	_INIT_DCS_CMD(0x78, 0x00),
-	_INIT_DCS_CMD(0x79, 0xC5),
-	_INIT_DCS_CMD(0x7A, 0x0C),
-	_INIT_DCS_CMD(0x7B, 0xB0),
-
-	_INIT_DCS_CMD(0xFF, 0x26),
-	_INIT_DCS_CMD(0xFB, 0x01),
-
-	_INIT_DCS_CMD(0x00, 0xA1),
-	_INIT_DCS_CMD(0x02, 0x31),
-	_INIT_DCS_CMD(0x0A, 0xF4),
-	_INIT_DCS_CMD(0x04, 0x50),
-	_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, 0x40),
-	_INIT_DCS_CMD(0x14, 0x58),
-	_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, 0x0E),
-	_INIT_DCS_CMD(0x1A, 0x31),
-	_INIT_DCS_CMD(0x1B, 0x0D),
-	_INIT_DCS_CMD(0x1C, 0x29),
-	_INIT_DCS_CMD(0x2A, 0x0E),
-	_INIT_DCS_CMD(0x2B, 0x31),
-
-	_INIT_DCS_CMD(0x1D, 0x00),
-	_INIT_DCS_CMD(0x1E, 0x62),
-	_INIT_DCS_CMD(0x1F, 0x62),
-
-	_INIT_DCS_CMD(0x2F, 0x06),
-	_INIT_DCS_CMD(0x30, 0x62),
-	_INIT_DCS_CMD(0x31, 0x06),
-	_INIT_DCS_CMD(0x32, 0x7F),
-	_INIT_DCS_CMD(0x33, 0x11),
-	_INIT_DCS_CMD(0x34, 0x89),
-	_INIT_DCS_CMD(0x35, 0x67),
-
-	_INIT_DCS_CMD(0x39, 0x0B),
-	_INIT_DCS_CMD(0x3A, 0x62),
-	_INIT_DCS_CMD(0x3B, 0x06),
-
-	_INIT_DCS_CMD(0xC8, 0x04),
-	_INIT_DCS_CMD(0xC9, 0x89),
-	_INIT_DCS_CMD(0xCA, 0x4E),
-	_INIT_DCS_CMD(0xCB, 0x00),
-	_INIT_DCS_CMD(0xA9, 0x3F),
-	_INIT_DCS_CMD(0xAA, 0x3E),
-	_INIT_DCS_CMD(0xAB, 0x3D),
-	_INIT_DCS_CMD(0xAC, 0x3C),
-	_INIT_DCS_CMD(0xAD, 0x3B),
-	_INIT_DCS_CMD(0xAE, 0x3A),
-	_INIT_DCS_CMD(0xAF, 0x39),
-	_INIT_DCS_CMD(0xB0, 0x38),
-
-	_INIT_DCS_CMD(0xFF, 0x27),
-	_INIT_DCS_CMD(0xFB, 0x01),
-
-	_INIT_DCS_CMD(0xD0, 0x11),
-	_INIT_DCS_CMD(0xD1, 0x54),
-	_INIT_DCS_CMD(0xDE, 0x43),
-	_INIT_DCS_CMD(0xDF, 0x02),
-
-	_INIT_DCS_CMD(0xC0, 0x18),
-	_INIT_DCS_CMD(0xC1, 0x00),
-	_INIT_DCS_CMD(0xC2, 0x00),
-	_INIT_DCS_CMD(0x00, 0x00),
-	_INIT_DCS_CMD(0xC3, 0x00),
-	_INIT_DCS_CMD(0x56, 0x06),
-
-	_INIT_DCS_CMD(0x58, 0x80),
-	_INIT_DCS_CMD(0x59, 0x78),
-	_INIT_DCS_CMD(0x5A, 0x00),
-	_INIT_DCS_CMD(0x5B, 0x18),
-	_INIT_DCS_CMD(0x5C, 0x00),
-	_INIT_DCS_CMD(0x5D, 0x01),
-	_INIT_DCS_CMD(0x5E, 0x20),
-	_INIT_DCS_CMD(0x5F, 0x10),
-	_INIT_DCS_CMD(0x60, 0x00),
-	_INIT_DCS_CMD(0x61, 0x1C),
-	_INIT_DCS_CMD(0x62, 0x00),
-	_INIT_DCS_CMD(0x63, 0x01),
-	_INIT_DCS_CMD(0x64, 0x44),
-	_INIT_DCS_CMD(0x65, 0x1B),
-	_INIT_DCS_CMD(0x66, 0x00),
-	_INIT_DCS_CMD(0x67, 0x01),
-	_INIT_DCS_CMD(0x68, 0x44),
-
-	_INIT_DCS_CMD(0x98, 0x01),
-	_INIT_DCS_CMD(0xB4, 0x03),
-	_INIT_DCS_CMD(0x9B, 0xBE),
-
-	_INIT_DCS_CMD(0xAB, 0x14),
-	_INIT_DCS_CMD(0xBC, 0x08),
-	_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, 0x62),
-	_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, 0x10),
-	_INIT_DCS_CMD(0x66, 0x00),
-	_INIT_DCS_CMD(0x67, 0x96),
-	_INIT_DCS_CMD(0x68, 0x10),
-	_INIT_DCS_CMD(0x69, 0x00),
-	_INIT_DCS_CMD(0x6A, 0x96),
-	_INIT_DCS_CMD(0x6B, 0x10),
-	_INIT_DCS_CMD(0x6C, 0x00),
-	_INIT_DCS_CMD(0x70, 0x92),
-	_INIT_DCS_CMD(0x71, 0x10),
-	_INIT_DCS_CMD(0x72, 0x00),
-	_INIT_DCS_CMD(0x79, 0x96),
-	_INIT_DCS_CMD(0x7A, 0x10),
-	_INIT_DCS_CMD(0x88, 0x96),
-	_INIT_DCS_CMD(0x89, 0x10),
-
-	_INIT_DCS_CMD(0xA2, 0x3F),
-	_INIT_DCS_CMD(0xA3, 0x30),
-	_INIT_DCS_CMD(0xA4, 0xC0),
-	_INIT_DCS_CMD(0xA5, 0x03),
-
-	_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, 0x25),
-	_INIT_DCS_CMD(0x13, 0x02),
-	_INIT_DCS_CMD(0x14, 0xD7),
-	_INIT_DCS_CMD(0xDB, 0x02),
-	_INIT_DCS_CMD(0xDC, 0xD7),
-	_INIT_DCS_CMD(0x17, 0xCF),
-	_INIT_DCS_CMD(0x19, 0x0F),
-	_INIT_DCS_CMD(0x1B, 0x5B),
-
-	_INIT_DCS_CMD(0xFF, 0x20),
-
-	_INIT_DCS_CMD(0xB0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x24, 0x00, 0x38, 0x00, 0x4C, 0x00, 0x5E, 0x00, 0x6F, 0x00, 0x7E),
-	_INIT_DCS_CMD(0xB1, 0x00, 0x8C, 0x00, 0xBE, 0x00, 0xE5, 0x01, 0x27, 0x01, 0x58, 0x01, 0xA8, 0x01, 0xE8, 0x01, 0xEA),
-	_INIT_DCS_CMD(0xB2, 0x02, 0x28, 0x02, 0x71, 0x02, 0x9E, 0x02, 0xDA, 0x03, 0x00, 0x03, 0x31, 0x03, 0x40, 0x03, 0x51),
-	_INIT_DCS_CMD(0xB3, 0x03, 0x62, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9C, 0x03, 0xAA, 0x03, 0xB2),
-
-	_INIT_DCS_CMD(0xB4, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x27, 0x00, 0x3D, 0x00, 0x52, 0x00, 0x64, 0x00, 0x75, 0x00, 0x84),
-	_INIT_DCS_CMD(0xB5, 0x00, 0x93, 0x00, 0xC5, 0x00, 0xEC, 0x01, 0x2C, 0x01, 0x5D, 0x01, 0xAC, 0x01, 0xEC, 0x01, 0xEE),
-	_INIT_DCS_CMD(0xB6, 0x02, 0x2B, 0x02, 0x73, 0x02, 0xA0, 0x02, 0xDB, 0x03, 0x01, 0x03, 0x31, 0x03, 0x41, 0x03, 0x51),
-	_INIT_DCS_CMD(0xB7, 0x03, 0x63, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9C, 0x03, 0xAA, 0x03, 0xB2),
-
-	_INIT_DCS_CMD(0xB8, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x2A, 0x00, 0x40, 0x00, 0x56, 0x00, 0x68, 0x00, 0x7A, 0x00, 0x89),
-	_INIT_DCS_CMD(0xB9, 0x00, 0x98, 0x00, 0xC9, 0x00, 0xF1, 0x01, 0x30, 0x01, 0x61, 0x01, 0xB0, 0x01, 0xEF, 0x01, 0xF1),
-	_INIT_DCS_CMD(0xBA, 0x02, 0x2E, 0x02, 0x76, 0x02, 0xA3, 0x02, 0xDD, 0x03, 0x02, 0x03, 0x32, 0x03, 0x42, 0x03, 0x53),
-	_INIT_DCS_CMD(0xBB, 0x03, 0x66, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9C, 0x03, 0xAA, 0x03, 0xB2),
-
-	_INIT_DCS_CMD(0xFF, 0x21),
-	_INIT_DCS_CMD(0xB0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x24, 0x00, 0x38, 0x00, 0x4C, 0x00, 0x5E, 0x00, 0x6F, 0x00, 0x7E),
-	_INIT_DCS_CMD(0xB1, 0x00, 0x8C, 0x00, 0xBE, 0x00, 0xE5, 0x01, 0x27, 0x01, 0x58, 0x01, 0xA8, 0x01, 0xE8, 0x01, 0xEA),
-	_INIT_DCS_CMD(0xB2, 0x02, 0x28, 0x02, 0x71, 0x02, 0x9E, 0x02, 0xDA, 0x03, 0x00, 0x03, 0x31, 0x03, 0x40, 0x03, 0x51),
-	_INIT_DCS_CMD(0xB3, 0x03, 0x62, 0x03, 0x77, 0x03, 0x90, 0x03, 0xAC, 0x03, 0xCA, 0x03, 0xDA),
-
-	_INIT_DCS_CMD(0xB4, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x27, 0x00, 0x3D, 0x00, 0x52, 0x00, 0x64, 0x00, 0x75, 0x00, 0x84),
-	_INIT_DCS_CMD(0xB5, 0x00, 0x93, 0x00, 0xC5, 0x00, 0xEC, 0x01, 0x2C, 0x01, 0x5D, 0x01, 0xAC, 0x01, 0xEC, 0x01, 0xEE),
-	_INIT_DCS_CMD(0xB6, 0x02, 0x2B, 0x02, 0x73, 0x02, 0xA0, 0x02, 0xDB, 0x03, 0x01, 0x03, 0x31, 0x03, 0x41, 0x03, 0x51),
-	_INIT_DCS_CMD(0xB7, 0x03, 0x63, 0x03, 0x77, 0x03, 0x90, 0x03, 0xAC, 0x03, 0xCA, 0x03, 0xDA),
-
-	_INIT_DCS_CMD(0xB8, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x2A, 0x00, 0x40, 0x00, 0x56, 0x00, 0x68, 0x00, 0x7A, 0x00, 0x89),
-	_INIT_DCS_CMD(0xB9, 0x00, 0x98, 0x00, 0xC9, 0x00, 0xF1, 0x01, 0x30, 0x01, 0x61, 0x01, 0xB0, 0x01, 0xEF, 0x01, 0xF1),
-	_INIT_DCS_CMD(0xBA, 0x02, 0x2E, 0x02, 0x76, 0x02, 0xA3, 0x02, 0xDD, 0x03, 0x02, 0x03, 0x32, 0x03, 0x42, 0x03, 0x53),
-	_INIT_DCS_CMD(0xBB, 0x03, 0x66, 0x03, 0x77, 0x03, 0x90, 0x03, 0xAC, 0x03, 0xCA, 0x03, 0xDA),
-
-	_INIT_DCS_CMD(0xFF, 0xF0),
-	_INIT_DCS_CMD(0xFB, 0x01),
-	_INIT_DCS_CMD(0x3A, 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(0xB0, 0x01),
-	_INIT_DCS_CMD(0x35, 0x00),
-	_INIT_DCS_CMD(0x3B, 0x03, 0xAE, 0x1A, 0x04, 0x04),
-	_INIT_DELAY_CMD(100),
-	_INIT_DCS_CMD(0x11),
-	_INIT_DELAY_CMD(200),
-	_INIT_DCS_CMD(0x29),
-	_INIT_DELAY_CMD(100),
-	{},
+static int inx_hj110iz_init(struct boe_panel *boe)
+{
+	struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0xD1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0xC0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x87);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x4B);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x63);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0E, 0x91);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x69);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x94, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x95, 0xF5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x96, 0xF5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9D, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9E, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x69, 0x98);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x75, 0xA2);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x77, 0xB3);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x58, 0x43);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x91, 0x44);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x92, 0x4C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x94, 0x86);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x60, 0x96);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0xD0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x63, 0x70);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xCA);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x01, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x02, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x03, 0x29);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x04, 0x22);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0x22);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0x0B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x1D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x1C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x09, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0A, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0B, 0x09);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0C, 0x0A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x0C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0E, 0x0D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x0E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x10, 0x0F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x11, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x12, 0x11);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x13, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x14, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x15, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x16, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x29);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1A, 0x22);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1B, 0x22);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1C, 0x0B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1D, 0x1D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1E, 0x1C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x21, 0x09);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x0A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x0C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x0D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x0E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0x0F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x28, 0x11);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x29, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x03);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2F, 0x0A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x30, 0x35);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x37, 0xA7);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x39, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3B, 0x32);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3D, 0x12);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3F, 0x33);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x40, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x41, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x42, 0x42);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x47, 0x77);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x48, 0x77);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4A, 0x45);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4B, 0x45);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4C, 0x14);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4D, 0x21);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4E, 0x43);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4F, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x55, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x56, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x58, 0x21);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x59, 0x70);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5A, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x32);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x88);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0x00, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5F, 0x00);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7A, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7B, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7C, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7D, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7E, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7F, 0x3C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x80, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x81, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x82, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x97, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x10);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x55);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x55);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x55);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x27);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE3, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE6, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE8, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xEA, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xEB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xEE, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xEF, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xF0, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x25);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xF1, 0x10);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1E, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x32);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x32);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3F, 0x80);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x40, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x43, 0x00);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x44, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x45, 0x46);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x48, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x49, 0x32);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x80);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5D, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0x32);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5F, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x60, 0x32);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x62, 0x32);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x68, 0x0C);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6C, 0x0D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6E, 0x0D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x78, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x79, 0xC5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7A, 0x0C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7B, 0xB0);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0xA1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x02, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0A, 0xF4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x04, 0x50);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0x30);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0C, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x0D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x11, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x12, 0x50);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x13, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x14, 0x58);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x15, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x16, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0xA0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x86);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x00);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x0E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1A, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1B, 0x0D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1C, 0x29);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x0E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x31);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1D, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1E, 0x62);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x62);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2F, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x30, 0x62);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x31, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x32, 0x7F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x33, 0x11);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x34, 0x89);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x35, 0x67);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x39, 0x0B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x62);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3B, 0x06);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x89);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x4E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA9, 0x3F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAA, 0x3E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAB, 0x3D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAC, 0x3C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAD, 0x3B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAE, 0x3A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAF, 0x39);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x38);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x27);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x11);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD1, 0x54);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x43);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x02);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x18);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x56, 0x06);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x58, 0x80);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x59, 0x78);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5A, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x18);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5D, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5F, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x60, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0x1C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x62, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x63, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x64, 0x44);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x65, 0x1B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x66, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x67, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x68, 0x44);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x98, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9B, 0xBE);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAB, 0x14);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x28);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x2A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x2F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x08);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x62);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0xF8);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x28, 0x1A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x29, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x1A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2D, 0x1A);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x64, 0x96);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x65, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x66, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x67, 0x96);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x68, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x69, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6A, 0x96);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6B, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6C, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x70, 0x92);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x71, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x72, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x79, 0x96);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7A, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x88, 0x96);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x89, 0x10);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA2, 0x3F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA3, 0x30);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA4, 0xC0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA5, 0x03);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE8, 0x00);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x97, 0x3C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x98, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x99, 0x95);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9A, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9B, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9C, 0x0B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9D, 0x0A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9E, 0x90);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x25);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x13, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x14, 0xD7);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0xD7);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0xCF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x0F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1B, 0x5B);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x20);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x24, 0x00, 0x38, 0x00, 0x4C, 0x00, 0x5E, 0x00, 0x6F, 0x00, 0x7E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00, 0x8C, 0x00, 0xBE, 0x00, 0xE5, 0x01, 0x27, 0x01, 0x58, 0x01, 0xA8, 0x01, 0xE8, 0x01, 0xEA);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02, 0x28, 0x02, 0x71, 0x02, 0x9E, 0x02, 0xDA, 0x03, 0x00, 0x03, 0x31, 0x03, 0x40, 0x03, 0x51);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x03, 0x62, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9C, 0x03, 0xAA, 0x03, 0xB2);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x27, 0x00, 0x3D, 0x00, 0x52, 0x00, 0x64, 0x00, 0x75, 0x00, 0x84);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x00, 0x93, 0x00, 0xC5, 0x00, 0xEC, 0x01, 0x2C, 0x01, 0x5D, 0x01, 0xAC, 0x01, 0xEC, 0x01, 0xEE);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x02, 0x2B, 0x02, 0x73, 0x02, 0xA0, 0x02, 0xDB, 0x03, 0x01, 0x03, 0x31, 0x03, 0x41, 0x03, 0x51);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x03, 0x63, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9C, 0x03, 0xAA, 0x03, 0xB2);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x2A, 0x00, 0x40, 0x00, 0x56, 0x00, 0x68, 0x00, 0x7A, 0x00, 0x89);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x00, 0x98, 0x00, 0xC9, 0x00, 0xF1, 0x01, 0x30, 0x01, 0x61, 0x01, 0xB0, 0x01, 0xEF, 0x01, 0xF1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x02, 0x2E, 0x02, 0x76, 0x02, 0xA3, 0x02, 0xDD, 0x03, 0x02, 0x03, 0x32, 0x03, 0x42, 0x03, 0x53);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x03, 0x66, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9C, 0x03, 0xAA, 0x03, 0xB2);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x21);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x24, 0x00, 0x38, 0x00, 0x4C, 0x00, 0x5E, 0x00, 0x6F, 0x00, 0x7E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00, 0x8C, 0x00, 0xBE, 0x00, 0xE5, 0x01, 0x27, 0x01, 0x58, 0x01, 0xA8, 0x01, 0xE8, 0x01, 0xEA);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02, 0x28, 0x02, 0x71, 0x02, 0x9E, 0x02, 0xDA, 0x03, 0x00, 0x03, 0x31, 0x03, 0x40, 0x03, 0x51);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x03, 0x62, 0x03, 0x77, 0x03, 0x90, 0x03, 0xAC, 0x03, 0xCA, 0x03, 0xDA);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x27, 0x00, 0x3D, 0x00, 0x52, 0x00, 0x64, 0x00, 0x75, 0x00, 0x84);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x00, 0x93, 0x00, 0xC5, 0x00, 0xEC, 0x01, 0x2C, 0x01, 0x5D, 0x01, 0xAC, 0x01, 0xEC, 0x01, 0xEE);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x02, 0x2B, 0x02, 0x73, 0x02, 0xA0, 0x02, 0xDB, 0x03, 0x01, 0x03, 0x31, 0x03, 0x41, 0x03, 0x51);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x03, 0x63, 0x03, 0x77, 0x03, 0x90, 0x03, 0xAC, 0x03, 0xCA, 0x03, 0xDA);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x2A, 0x00, 0x40, 0x00, 0x56, 0x00, 0x68, 0x00, 0x7A, 0x00, 0x89);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x00, 0x98, 0x00, 0xC9, 0x00, 0xF1, 0x01, 0x30, 0x01, 0x61, 0x01, 0xB0, 0x01, 0xEF, 0x01, 0xF1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x02, 0x2E, 0x02, 0x76, 0x02, 0xA3, 0x02, 0xDD, 0x03, 0x02, 0x03, 0x32, 0x03, 0x42, 0x03, 0x53);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x03, 0x66, 0x03, 0x77, 0x03, 0x90, 0x03, 0xAC, 0x03, 0xCA, 0x03, 0xDA);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0xF0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x08);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x01);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x20);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x10);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x10);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x35, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3B, 0x03, 0xAE, 0x1A, 0x04, 0x04);
+	if (ctx.accum_err)
+		return ctx.accum_err;
+
+	msleep(100);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x11);
+	if (ctx.accum_err)
+		return ctx.accum_err;
+
+	msleep(200);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x29);
+	if (ctx.accum_err)
+		return ctx.accum_err;
+
+	msleep(100);
+
+	return 0;
 };
 
-static const struct panel_init_cmd boe_init_cmd[] = {
-	_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 boe_init(struct boe_panel *boe)
+{
+	struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0xE5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x52);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x88);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x8B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x1A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x0F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x0C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x0C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE6, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x09);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x09);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x0A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x0A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x0B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x0B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x0C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x0C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD4, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x0D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x17);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x1C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0x2C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x33);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x37);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x37);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x37);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x39);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x2E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0x2F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCF, 0x2F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x0D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD4, 0x17);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x3F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x3F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x3F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x3F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x37);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x37);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x37);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x39);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x2E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x2F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x2F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x0B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x2A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x2A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x43);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0xC0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x0D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0xA5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0xA5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x0F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x32);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x0F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x25);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x39);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x72);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x97);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xDC);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x22);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xA4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x2B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x2F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xA9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x25);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x61);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x97);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB2);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xCD);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xD9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE7);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x11);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x39);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x72);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x98);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xDC);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xA6);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x2C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x30);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xAA);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x62);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x9B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xCF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xDB);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE8);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x09);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x3B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x73);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x99);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xE0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xAD);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x36);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x3A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xAE);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x2A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x66);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x9E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB8);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xD1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xDD);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF6);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x0A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x0F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x25);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x39);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x72);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x97);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xDC);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x22);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xA4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x2B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x2F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xA9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x25);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x61);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x97);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB2);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xCD);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xD9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE7);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x0B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x11);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x39);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x72);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x98);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xDC);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xA6);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x2C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x30);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xAA);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x62);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x9B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xCF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xDB);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE8);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x0C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x3B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x73);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x99);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xE0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xAD);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x36);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x3A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xAE);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x2A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x66);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x9E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB8);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xD1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xDD);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF6);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x68);
+	if (ctx.accum_err)
+		return ctx.accum_err;
+
+	msleep(150);
+
+	return 0;
 };
 
-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),
-	{},
+static int auo_kd101n80_45na_init(struct boe_panel *boe)
+{
+	struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
+
+	msleep(24);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x11);
+	if (ctx.accum_err)
+		return ctx.accum_err;
+
+	msleep(120);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x29);
+	if (ctx.accum_err)
+		return ctx.accum_err;
+
+	msleep(120);
+
+	return 0;
 };
 
-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),
-	{},
+static int auo_b101uan08_3_init(struct boe_panel *boe)
+{
+	struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
+
+	msleep(24);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x48);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x48);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x47);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x47);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0x45);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x45);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x64);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x64);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x4F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x4F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0x66);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCF, 0x66);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x4F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD1, 0x4F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x41);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x41);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD4, 0x48);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x48);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x47);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x47);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x45);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x45);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x64);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x64);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x4F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x4F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0x66);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE3, 0x66);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0x4F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x4F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE6, 0x41);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x41);
+	if (ctx.accum_err)
+		return ctx.accum_err;
+
+	msleep(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),
-	{},
+static int starry_qfh032011_53g_init(struct boe_panel *boe)
+{
+	struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x4F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x4D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x52);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x51);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x5D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0x5B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCF, 0x4B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x49);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD1, 0x47);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x45);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x41);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x50);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x4E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x52);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x51);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x5E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0x5C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE3, 0x4C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0x4A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x48);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE6, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x42);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x44);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x42);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x3E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCF, 0x60);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD4, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0xF0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x0A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x0A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x29);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x1C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x19);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x17);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x17);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x18);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x1A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x1E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCF, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD1, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x0A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD4, 0x13);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x1C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x1A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x13);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x17);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x1C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x19);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x17);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x17);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x18);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x1A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x1E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0X11);
+	if (ctx.accum_err)
+		return ctx.accum_err;
+
+	msleep(120);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0X29);
+	if (ctx.accum_err)
+		return ctx.accum_err;
+
+	msleep(80);
+
+	return 0;
 };
 
-static const struct panel_init_cmd starry_himax83102_j02_init_cmd[] = {
-	_INIT_DCS_CMD(0xB9, 0x83, 0x10, 0x21, 0x55, 0x00),
-	_INIT_DCS_CMD(0xB1, 0x2C, 0xB5, 0xB5, 0x31, 0xF1, 0x31, 0xD7, 0x2F, 0x36, 0x36, 0x36, 0x36, 0x1A, 0x8B, 0x11,
-		0x65, 0x00, 0x88, 0xFA, 0xFF, 0xFF, 0x8F, 0xFF, 0x08, 0x74, 0x33),
-	_INIT_DCS_CMD(0xB2, 0x00, 0x47, 0xB0, 0x80, 0x00, 0x12, 0x72, 0x3C, 0xA3, 0x03, 0x03, 0x00, 0x00, 0x88, 0xF5),
-	_INIT_DCS_CMD(0xB4, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x63, 0x5C, 0x63, 0x5C, 0x01, 0x9E),
-	_INIT_DCS_CMD(0xE9, 0xCD),
-	_INIT_DCS_CMD(0xBA, 0x84),
-	_INIT_DCS_CMD(0xE9, 0x3F),
-	_INIT_DCS_CMD(0xBC, 0x1B, 0x04),
-	_INIT_DCS_CMD(0xBE, 0x20),
-	_INIT_DCS_CMD(0xBF, 0xFC, 0xC4),
-	_INIT_DCS_CMD(0xC0, 0x36, 0x36, 0x22, 0x11, 0x22, 0xA0, 0x61, 0x08, 0xF5, 0x03),
-	_INIT_DCS_CMD(0xE9, 0xCC),
-	_INIT_DCS_CMD(0xC7, 0x80),
-	_INIT_DCS_CMD(0xE9, 0x3F),
-	_INIT_DCS_CMD(0xE9, 0xC6),
-	_INIT_DCS_CMD(0xC8, 0x97),
-	_INIT_DCS_CMD(0xE9, 0x3F),
-	_INIT_DCS_CMD(0xC9, 0x00, 0x1E, 0x13, 0x88, 0x01),
-	_INIT_DCS_CMD(0xCB, 0x08, 0x13, 0x07, 0x00, 0x0F, 0x33),
-	_INIT_DCS_CMD(0xCC, 0x02),
-	_INIT_DCS_CMD(0xE9, 0xC4),
-	_INIT_DCS_CMD(0xD0, 0x03),
-	_INIT_DCS_CMD(0xE9, 0x3F),
-	_INIT_DCS_CMD(0xD1, 0x37, 0x06, 0x00, 0x02, 0x04, 0x0C, 0xFF),
-	_INIT_DCS_CMD(0xD2, 0x1F, 0x11, 0x1F),
-	_INIT_DCS_CMD(0xD3, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x37, 0x47, 0x34, 0x3B, 0x12, 0x12, 0x03,
-		0x03, 0x32, 0x10, 0x10, 0x00, 0x10, 0x32, 0x10, 0x08, 0x00, 0x08, 0x32, 0x17, 0x94, 0x07, 0x94, 0x00, 0x00),
-	_INIT_DCS_CMD(0xD5, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x40, 0x40, 0x1A, 0x1A,
-		0x1B, 0x1B, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x20, 0x21, 0x28, 0x29, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18),
-	_INIT_DCS_CMD(0xD6, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x40, 0x40, 0x19, 0x19, 0x1A, 0x1A,
-		0x1B, 0x1B, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x29, 0x28, 0x21, 0x20, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18),
-	_INIT_DCS_CMD(0xD8, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA,
-		0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0),
-	_INIT_DCS_CMD(0xE0, 0x00, 0x09, 0x14, 0x1E, 0x26, 0x48, 0x61, 0x67, 0x6C, 0x67, 0x7D, 0x7F, 0x80, 0x8B, 0x87, 0x8F, 0x98, 0xAB,
-		0xAB, 0x55, 0x5C, 0x68, 0x73, 0x00, 0x09, 0x14, 0x1E, 0x26, 0x48, 0x61, 0x67, 0x6C, 0x67, 0x7D, 0x7F, 0x80, 0x8B, 0x87, 0x8F, 0x98, 0xAB, 0xAB, 0x55, 0x5C, 0x68, 0x73),
-	_INIT_DCS_CMD(0xE7, 0x0E, 0x10, 0x10, 0x21, 0x2B, 0x9A, 0x02, 0x54, 0x9A, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x12, 0x05, 0x02, 0x02, 0x10),
-	_INIT_DCS_CMD(0xBD, 0x01),
-	_INIT_DCS_CMD(0xB1, 0x01, 0xBF, 0x11),
-	_INIT_DCS_CMD(0xCB, 0x86),
-	_INIT_DCS_CMD(0xD2, 0x3C, 0xFA),
-	_INIT_DCS_CMD(0xD3, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0C, 0x01),
-	_INIT_DCS_CMD(0xE7, 0x02, 0x00, 0x28, 0x01, 0x7E, 0x0F, 0x7E, 0x10, 0xA0, 0x00, 0x00, 0x20, 0x40, 0x50, 0x40),
-	_INIT_DCS_CMD(0xBD, 0x02),
-	_INIT_DCS_CMD(0xD8, 0xFF, 0xFF, 0xBF, 0xFE, 0xAA, 0xA0, 0xFF, 0xFF, 0xBF, 0xFE, 0xAA, 0xA0),
-	_INIT_DCS_CMD(0xE7, 0xFE, 0x04, 0xFE, 0x04, 0xFE, 0x04, 0x03, 0x03, 0x03, 0x26, 0x00, 0x26, 0x81, 0x02, 0x40, 0x00, 0x20, 0x9E, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00),
-	_INIT_DCS_CMD(0xBD, 0x03),
-	_INIT_DCS_CMD(0xE9, 0xC6),
-	_INIT_DCS_CMD(0xB4, 0x03, 0xFF, 0xF8),
-	_INIT_DCS_CMD(0xE9, 0x3F),
-	_INIT_DCS_CMD(0xD8, 0x00, 0x2A, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA8,
-		0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA8, 0x00, 0x00),
-	_INIT_DCS_CMD(0xBD, 0x00),
-	_INIT_DCS_CMD(0xE9, 0xC4),
-	_INIT_DCS_CMD(0xBA, 0x96),
-	_INIT_DCS_CMD(0xE9, 0x3F),
-	_INIT_DCS_CMD(0xBD, 0x01),
-	_INIT_DCS_CMD(0xE9, 0xC5),
-	_INIT_DCS_CMD(0xBA, 0x4F),
-	_INIT_DCS_CMD(0xE9, 0x3F),
-	_INIT_DCS_CMD(0xBD, 0x00),
-	_INIT_DCS_CMD(0x11),
-	_INIT_DELAY_CMD(120),
-	_INIT_DCS_CMD(0x29),
-	{},
+static int starry_himax83102_j02_init(struct boe_panel *boe)
+{
+	struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x83, 0x10, 0x21, 0x55, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x2C, 0xB5, 0xB5, 0x31, 0xF1, 0x31, 0xD7, 0x2F, 0x36, 0x36, 0x36, 0x36, 0x1A, 0x8B, 0x11,
+		0x65, 0x00, 0x88, 0xFA, 0xFF, 0xFF, 0x8F, 0xFF, 0x08, 0x74, 0x33);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x00, 0x47, 0xB0, 0x80, 0x00, 0x12, 0x72, 0x3C, 0xA3, 0x03, 0x03, 0x00, 0x00, 0x88, 0xF5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x63, 0x5C, 0x63, 0x5C, 0x01, 0x9E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xCD);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x84);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x1B, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0xFC, 0xC4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x36, 0x36, 0x22, 0x11, 0x22, 0xA0, 0x61, 0x08, 0xF5, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xCC);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x80);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xC6);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x97);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00, 0x1E, 0x13, 0x88, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x08, 0x13, 0x07, 0x00, 0x0F, 0x33);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xC4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD1, 0x37, 0x06, 0x00, 0x02, 0x04, 0x0C, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x1F, 0x11, 0x1F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x37, 0x47, 0x34, 0x3B, 0x12, 0x12, 0x03,
+		0x03, 0x32, 0x10, 0x10, 0x00, 0x10, 0x32, 0x10, 0x08, 0x00, 0x08, 0x32, 0x17, 0x94, 0x07, 0x94, 0x00, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x40, 0x40, 0x1A, 0x1A,
+		0x1B, 0x1B, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x20, 0x21, 0x28, 0x29, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x40, 0x40, 0x19, 0x19, 0x1A, 0x1A,
+		0x1B, 0x1B, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x29, 0x28, 0x21, 0x20, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA,
+		0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x00, 0x09, 0x14, 0x1E, 0x26, 0x48, 0x61, 0x67, 0x6C, 0x67, 0x7D, 0x7F, 0x80, 0x8B, 0x87, 0x8F, 0x98, 0xAB,
+		0xAB, 0x55, 0x5C, 0x68, 0x73, 0x00, 0x09, 0x14, 0x1E, 0x26, 0x48, 0x61, 0x67, 0x6C, 0x67, 0x7D, 0x7F, 0x80, 0x8B, 0x87, 0x8F, 0x98, 0xAB, 0xAB, 0x55, 0x5C, 0x68, 0x73);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x0E, 0x10, 0x10, 0x21, 0x2B, 0x9A, 0x02, 0x54, 0x9A, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x12, 0x05, 0x02, 0x02, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x01, 0xBF, 0x11);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x86);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x3C, 0xFA);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0C, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x02, 0x00, 0x28, 0x01, 0x7E, 0x0F, 0x7E, 0x10, 0xA0, 0x00, 0x00, 0x20, 0x40, 0x50, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0xFF, 0xFF, 0xBF, 0xFE, 0xAA, 0xA0, 0xFF, 0xFF, 0xBF, 0xFE, 0xAA, 0xA0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0xFE, 0x04, 0xFE, 0x04, 0xFE, 0x04, 0x03, 0x03, 0x03, 0x26, 0x00, 0x26, 0x81, 0x02, 0x40, 0x00, 0x20, 0x9E, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xC6);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x03, 0xFF, 0xF8);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x00, 0x2A, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA8,
+		0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA8, 0x00, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xC4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x96);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xC5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x4F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x11);
+	if (ctx.accum_err)
+		return ctx.accum_err;
+
+	msleep(120);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x29);
+
+	return ctx.accum_err;
 };
 
 static inline struct boe_panel *to_boe_panel(struct drm_panel *panel)
@@ -1373,45 +1430,6 @@ static inline struct boe_panel *to_boe_panel(struct drm_panel *panel)
 	return container_of(panel, struct boe_panel, base);
 }
 
-static int boe_panel_init_dcs_cmd(struct boe_panel *boe)
-{
-	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;
-			}
-		}
-	}
-	return 0;
-}
-
 static int boe_panel_enter_sleep_mode(struct boe_panel *boe)
 {
 	struct mipi_dsi_device *dsi = boe->dsi;
@@ -1517,7 +1535,7 @@ 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);
+	ret = boe->desc->init(boe);
 	if (ret < 0) {
 		dev_err(panel->dev, "failed to init panel: %d\n", ret);
 		goto poweroff;
@@ -1571,7 +1589,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 = {
@@ -1600,7 +1618,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 = {
@@ -1626,7 +1644,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,
 };
 
@@ -1653,7 +1671,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,
 };
 
@@ -1681,7 +1699,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 = {
@@ -1708,7 +1726,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,
 	.lp11_before_reset = true,
 };
 
@@ -1736,7 +1754,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,
 	.lp11_before_reset = true,
 };
 
@@ -1763,7 +1781,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,
 	.lp11_before_reset = true,
 };
 
@@ -1791,7 +1809,7 @@ static const struct panel_desc starry_himax83102_j02_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_himax83102_j02_init_cmd,
+	.init = starry_himax83102_j02_init,
 	.lp11_before_reset = true,
 };
 
-- 
2.44.0.769.g3c40516874-goog


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

* [PATCH v2 8/8] drm/panel: boe-tv101wum-nl6: Convert hex to lowercase
  2024-04-26 23:58 [PATCH v2 0/8] drm/mipi-dsi: Reduce bloat and add funcs for cleaner init seqs Douglas Anderson
                   ` (6 preceding siblings ...)
  2024-04-26 23:58 ` [PATCH v2 7/8] drm/panel: boe-tv101wum-nl6: Don't use a table for initting commands Douglas Anderson
@ 2024-04-26 23:58 ` Douglas Anderson
  2024-04-27  8:48   ` Dmitry Baryshkov
  2024-04-29  9:20 ` [PATCH v2 0/8] drm/mipi-dsi: Reduce bloat and add funcs for cleaner init seqs Jani Nikula
  8 siblings, 1 reply; 23+ messages in thread
From: Douglas Anderson @ 2024-04-26 23:58 UTC (permalink / raw)
  To: dri-devel
  Cc: Linus Walleij, lvzhaoxiong, Jani Nikula, Hsin-Yi Wang,
	Javier Martinez Canillas, Neil Armstrong, Joel Selvaraj,
	Dmitry Baryshkov, Cong Yang, Sam Ravnborg, Douglas Anderson,
	Daniel Vetter, David Airlie, Jessica Zhang, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, linux-kernel

Kernel convention is that we use 0xabcd, not 0xABCD. Convert the
boe-tv101wum-nl6 driver to this convention.

Signed-off-by: Douglas Anderson <dianders@chromium.org>
---

Changes in v2:
- New

 .../gpu/drm/panel/panel-boe-tv101wum-nl6.c    | 1912 ++++++++---------
 1 file changed, 956 insertions(+), 956 deletions(-)

diff --git a/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c b/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c
index a3ed33f660cb..9518a45c29e0 100644
--- a/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c
+++ b/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c
@@ -60,79 +60,79 @@ static int boe_tv110c9m_init(struct boe_panel *boe)
 {
 	struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x20);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0xD9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0xd9);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x78);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x5A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x63);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0E, 0x91);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x73);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x95, 0xE6);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x96, 0xF0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x5a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0d, 0x63);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0e, 0x91);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0f, 0x73);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x95, 0xe6);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x96, 0xf0);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x30, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6D, 0x66);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x75, 0xA2);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x77, 0x3B);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x89, 0x00, 0xA1, 0x00, 0xB6, 0x00, 0xC9);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00, 0xDA, 0x01, 0x13, 0x01, 0x3C, 0x01, 0x7E, 0x01, 0xAB, 0x01, 0xF7, 0x02, 0x2F, 0x02, 0x31);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02, 0x67, 0x02, 0xA6, 0x02, 0xD1, 0x03, 0x08, 0x03, 0x2E, 0x03, 0x5B, 0x03, 0x6B, 0x03, 0x7B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x03, 0x8E, 0x03, 0xA2, 0x03, 0xB7, 0x03, 0xE7, 0x03, 0xFD, 0x03, 0xFF);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x89, 0x00, 0xA1, 0x00, 0xB6, 0x00, 0xC9);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x00, 0xDA, 0x01, 0x13, 0x01, 0x3C, 0x01, 0x7E, 0x01, 0xAB, 0x01, 0xF7, 0x02, 0x2F, 0x02, 0x31);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x02, 0x67, 0x02, 0xA6, 0x02, 0xD1, 0x03, 0x08, 0x03, 0x2E, 0x03, 0x5B, 0x03, 0x6B, 0x03, 0x7B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x03, 0x8E, 0x03, 0xA2, 0x03, 0xB7, 0x03, 0xE7, 0x03, 0xFD, 0x03, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x89, 0x00, 0xA1, 0x00, 0xB6, 0x00, 0xC9);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x00, 0xDA, 0x01, 0x13, 0x01, 0x3C, 0x01, 0x7E, 0x01, 0xAB, 0x01, 0xF7, 0x02, 0x2F, 0x02, 0x31);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x02, 0x67, 0x02, 0xA6, 0x02, 0xD1, 0x03, 0x08, 0x03, 0x2E, 0x03, 0x5B, 0x03, 0x6B, 0x03, 0x7B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x03, 0x8E, 0x03, 0xA2, 0x03, 0xB7, 0x03, 0xE7, 0x03, 0xFD, 0x03, 0xFF);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x21);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xAE, 0x00, 0xC1);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00, 0xD2, 0x01, 0x0B, 0x01, 0x34, 0x01, 0x76, 0x01, 0xA3, 0x01, 0xEF, 0x02, 0x27, 0x02, 0x29);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02, 0x5F, 0x02, 0x9E, 0x02, 0xC9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x03, 0x86, 0x03, 0x9A, 0x03, 0xAF, 0x03, 0xDF, 0x03, 0xF5, 0x03, 0xE0);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xAE, 0x00, 0xC1);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x00, 0xD2, 0x01, 0x0B, 0x01, 0x34, 0x01, 0x76, 0x01, 0xA3, 0x01, 0xEF, 0x02, 0x27, 0x02, 0x29);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x02, 0x5F, 0x02, 0x9E, 0x02, 0xC9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x03, 0x86, 0x03, 0x9A, 0x03, 0xAF, 0x03, 0xDF, 0x03, 0xF5, 0x03, 0xE0);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xAE, 0x00, 0xC1);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x00, 0xD2, 0x01, 0x0B, 0x01, 0x34, 0x01, 0x76, 0x01, 0xA3, 0x01, 0xEF, 0x02, 0x27, 0x02, 0x29);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x02, 0x5F, 0x02, 0x9E, 0x02, 0xC9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x03, 0x86, 0x03, 0x9A, 0x03, 0xAF, 0x03, 0xDF, 0x03, 0xF5, 0x03, 0xE0);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x24);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6d, 0x66);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x75, 0xa2);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x77, 0x3b);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4d, 0x00, 0x6d, 0x00, 0x89, 0x00, 0xa1, 0x00, 0xb6, 0x00, 0xc9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x00, 0xda, 0x01, 0x13, 0x01, 0x3c, 0x01, 0x7e, 0x01, 0xab, 0x01, 0xf7, 0x02, 0x2f, 0x02, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02, 0x67, 0x02, 0xa6, 0x02, 0xd1, 0x03, 0x08, 0x03, 0x2e, 0x03, 0x5b, 0x03, 0x6b, 0x03, 0x7b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x03, 0x8e, 0x03, 0xa2, 0x03, 0xb7, 0x03, 0xe7, 0x03, 0xfd, 0x03, 0xff);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4d, 0x00, 0x6d, 0x00, 0x89, 0x00, 0xa1, 0x00, 0xb6, 0x00, 0xc9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x00, 0xda, 0x01, 0x13, 0x01, 0x3c, 0x01, 0x7e, 0x01, 0xab, 0x01, 0xf7, 0x02, 0x2f, 0x02, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x02, 0x67, 0x02, 0xa6, 0x02, 0xd1, 0x03, 0x08, 0x03, 0x2e, 0x03, 0x5b, 0x03, 0x6b, 0x03, 0x7b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x03, 0x8e, 0x03, 0xa2, 0x03, 0xb7, 0x03, 0xe7, 0x03, 0xfd, 0x03, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4d, 0x00, 0x6d, 0x00, 0x89, 0x00, 0xa1, 0x00, 0xb6, 0x00, 0xc9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x00, 0xda, 0x01, 0x13, 0x01, 0x3c, 0x01, 0x7e, 0x01, 0xab, 0x01, 0xf7, 0x02, 0x2f, 0x02, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x02, 0x67, 0x02, 0xa6, 0x02, 0xd1, 0x03, 0x08, 0x03, 0x2e, 0x03, 0x5b, 0x03, 0x6b, 0x03, 0x7b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0x03, 0x8e, 0x03, 0xa2, 0x03, 0xb7, 0x03, 0xe7, 0x03, 0xfd, 0x03, 0xff);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x21);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xae, 0x00, 0xc1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x00, 0xd2, 0x01, 0x0b, 0x01, 0x34, 0x01, 0x76, 0x01, 0xa3, 0x01, 0xef, 0x02, 0x27, 0x02, 0x29);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02, 0x5f, 0x02, 0x9e, 0x02, 0xc9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x03, 0x86, 0x03, 0x9a, 0x03, 0xaf, 0x03, 0xdf, 0x03, 0xf5, 0x03, 0xe0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xae, 0x00, 0xc1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x00, 0xd2, 0x01, 0x0b, 0x01, 0x34, 0x01, 0x76, 0x01, 0xa3, 0x01, 0xef, 0x02, 0x27, 0x02, 0x29);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x02, 0x5f, 0x02, 0x9e, 0x02, 0xc9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x03, 0x86, 0x03, 0x9a, 0x03, 0xaf, 0x03, 0xdf, 0x03, 0xf5, 0x03, 0xe0);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xae, 0x00, 0xc1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x00, 0xd2, 0x01, 0x0b, 0x01, 0x34, 0x01, 0x76, 0x01, 0xa3, 0x01, 0xef, 0x02, 0x27, 0x02, 0x29);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x02, 0x5f, 0x02, 0x9e, 0x02, 0xc9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0x03, 0x86, 0x03, 0x9a, 0x03, 0xaf, 0x03, 0xdf, 0x03, 0xf5, 0x03, 0xe0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x01, 0x00);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x02, 0x1C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x03, 0x1C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x02, 0x1c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x03, 0x1c);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x04, 0x1D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0x1D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x04, 0x1d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0x1d);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0x04);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x04);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x0F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x09, 0x0F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x09, 0x0f);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0A, 0x0E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0B, 0x0E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0a, 0x0e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0b, 0x0e);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0C, 0x0D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x0D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0c, 0x0d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0d, 0x0d);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0E, 0x0C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x0C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0e, 0x0c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0f, 0x0c);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x10, 0x08);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x11, 0x08);
@@ -145,284 +145,284 @@ static int boe_tv110c9m_init(struct boe_panel *boe)
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x16, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0x00);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x1C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x1C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x1c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x1c);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1A, 0x1D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1B, 0x1D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1a, 0x1d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1b, 0x1d);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1C, 0x04);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1D, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1c, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1d, 0x04);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1E, 0x0F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x0F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1e, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1f, 0x0f);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x0E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x21, 0x0E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x0e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x21, 0x0e);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x0D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x0D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x0d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x0d);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x0C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x0C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x0c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x0c);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0x08);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x08);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x28, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x29, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2a, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2b, 0x00);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2D, 0x20);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2F, 0x0A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2d, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2f, 0x0a);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x30, 0x44);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x33, 0x0C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x33, 0x0c);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x34, 0x32);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x37, 0x44);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x38, 0x40);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x39, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x5D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3B, 0x60);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3D, 0x42);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3F, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3a, 0x5d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3b, 0x60);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3d, 0x42);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3f, 0x06);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x43, 0x06);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x47, 0x66);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4A, 0x5D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4B, 0x60);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4C, 0x91);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4D, 0x21);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4E, 0x43);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4a, 0x5d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4b, 0x60);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4c, 0x91);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4d, 0x21);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4e, 0x43);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x51, 0x12);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x52, 0x34);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x55, 0x82, 0x02);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x56, 0x04);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x58, 0x21);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x59, 0x30);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5A, 0x60);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x50);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0x00, 0x06);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5F, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5a, 0x60);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5b, 0x50);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5e, 0x00, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5f, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x65, 0x82);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7E, 0x20);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7F, 0x3C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7e, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7f, 0x3c);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x82, 0x04);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x97, 0xC0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x97, 0xc0);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x91, 0x44);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x92, 0xA9);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x93, 0x1A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x92, 0xa9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x93, 0x1a);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x94, 0x96);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x55);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x0A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x08);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x05);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0xA9);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x22);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x05);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0xA9);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x05);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0xA9);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE3, 0x05);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0xA9);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x05);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE6, 0xA9);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5D, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x8D, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x8E, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x90);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x25);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd7, 0x55);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xda, 0x0a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdb, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdc, 0xa9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdd, 0x22);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdf, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe0, 0xa9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe1, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe2, 0xa9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe3, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe4, 0xa9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe5, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe6, 0xa9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5c, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5d, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x8d, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x8e, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x90);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x25);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x07);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x60);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1f, 0x60);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x50);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0x60);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x50);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x33, 0x60);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x34, 0x50);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3F, 0xE0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3f, 0xe0);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x40, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x44, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x45, 0x40);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x48, 0x60);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x49, 0x50);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5D, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0xD0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5b, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5c, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5d, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5e, 0xd0);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0x60);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x62, 0x50);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xF1, 0x10);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x2A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xf1, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x2a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x64, 0x16);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x67, 0x16);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6A, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6a, 0x16);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x70, 0x30);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA2, 0xF3);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA3, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA4, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA5, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa2, 0xf3);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa3, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa4, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa5, 0xff);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd6, 0x08);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x26);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0xA1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0xa1);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x02, 0x31);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x04, 0x28);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0x30);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0C, 0x16);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x0D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0c, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0d, 0x0d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0f, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x11, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x12, 0x50);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x13, 0x56);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x14, 0x57);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x15, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x16, 0x10);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0xA0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0xa0);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x86);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x0D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1A, 0x7F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1B, 0x0C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1C, 0xBF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x0d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1a, 0x7f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1b, 0x0c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1c, 0xbf);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x0D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x7F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2a, 0x0d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2b, 0x7f);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1D, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1E, 0x65);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1d, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1e, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1f, 0x65);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x65);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2F, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2f, 0x05);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x30, 0x65);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x31, 0x05);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x32, 0x7D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x32, 0x7d);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x39, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3a, 0x65);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x01);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x33, 0x11);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x34, 0x78);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x35, 0x16);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x04);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x9E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x4E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x00);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA9, 0x49);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAA, 0x4B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAB, 0x48);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAC, 0x43);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAD, 0x40);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAE, 0x50);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAF, 0x44);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x54);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x4E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x4D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x4C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x41);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x47);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x53);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x3E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x51);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x3C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x3B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x46);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x45);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x55);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0x3D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x3F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x52);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x4A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x39);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x4F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x3A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x42);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x27);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x9e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x4e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x00);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa9, 0x49);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xaa, 0x4b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xab, 0x48);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xac, 0x43);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xad, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xae, 0x50);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xaf, 0x44);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x54);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x4e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x4d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x4c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x41);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x47);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x53);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x3e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x51);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x3c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x3b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x45);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x55);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0x3d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0x3f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x52);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x4a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0x39);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x4f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0x3a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x42);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x27);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x56, 0x06);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x58, 0x80);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x59, 0x75);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5A, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x02);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5D, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0x20);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5F, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5a, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5b, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5c, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5d, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5e, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5f, 0x10);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x60, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0x2E);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0x2e);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x62, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x63, 0x01);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x64, 0x43);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x65, 0x2D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x65, 0x2d);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x66, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x67, 0x01);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x68, 0x44);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x78, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x00);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x2A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x2a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x2F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x2f);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x08);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x65);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0xF8);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0xf8);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x28, 0x1A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x28, 0x1a);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x29, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x1A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2D, 0x1A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2a, 0x1a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2b, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2d, 0x1a);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x23);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0x80);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x00);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0xE0);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0xe0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x14, 0x60);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x16, 0xC0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x16, 0xc0);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0xF0);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0xf0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3a, 0x08);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x10);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x20);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x40);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x10);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x02);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x35, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x51, 0x00, 0xFF);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x51, 0x00, 0xff);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x53, 0x24);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x55, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x13);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3B, 0x03, 0x96, 0x1A, 0x04, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0x13);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3b, 0x03, 0x96, 0x1a, 0x04, 0x04);
 	if (ctx.accum_err)
 		return ctx.accum_err;
 
@@ -447,35 +447,35 @@ static int inx_hj110iz_init(struct boe_panel *boe)
 {
 	struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x20);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0xD1);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0xC0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0xd1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0xc0);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x87);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x4B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x4b);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x63);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0E, 0x91);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x69);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0d, 0x63);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0e, 0x91);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0f, 0x69);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x94, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x95, 0xF5);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x96, 0xF5);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9D, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9E, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x95, 0xf5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x96, 0xf5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9d, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9e, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x69, 0x98);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x75, 0xA2);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x77, 0xB3);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x75, 0xa2);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x77, 0xb3);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x58, 0x43);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x24);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x91, 0x44);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x92, 0x4C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x92, 0x4c);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x94, 0x86);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x60, 0x96);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0xD0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0xd0);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x63, 0x70);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xCA);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0xca);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0x03);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x01, 0x03);
@@ -483,17 +483,17 @@ static int inx_hj110iz_init(struct boe_panel *boe)
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x03, 0x29);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x04, 0x22);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0x22);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0x0B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x1D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x1C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0x0b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x1d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x1c);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x09, 0x05);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0A, 0x08);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0B, 0x09);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0C, 0x0A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x0C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0E, 0x0D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x0E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x10, 0x0F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0a, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0b, 0x09);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0c, 0x0a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0d, 0x0c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0e, 0x0d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0f, 0x0e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x10, 0x0f);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x11, 0x10);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x12, 0x11);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x13, 0x04);
@@ -503,109 +503,109 @@ static int inx_hj110iz_init(struct boe_panel *boe)
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0x03);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x03);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x29);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1A, 0x22);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1B, 0x22);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1C, 0x0B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1D, 0x1D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1E, 0x1C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1a, 0x22);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1b, 0x22);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1c, 0x0b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1d, 0x1d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1e, 0x1c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1f, 0x05);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x08);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x21, 0x09);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x0A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x0C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x0D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x0E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0x0F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x0a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x0c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x0d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x0e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0x0f);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x10);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x28, 0x11);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x29, 0x04);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2a, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2b, 0x03);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2F, 0x0A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2f, 0x0a);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x30, 0x35);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x37, 0xA7);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x37, 0xa7);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x39, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x46);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3B, 0x32);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3D, 0x12);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3a, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3b, 0x32);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3d, 0x12);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3F, 0x33);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3f, 0x33);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x40, 0x31);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x41, 0x40);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x42, 0x42);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x47, 0x77);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x48, 0x77);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4A, 0x45);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4B, 0x45);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4C, 0x14);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4a, 0x45);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4b, 0x45);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4c, 0x14);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4D, 0x21);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4E, 0x43);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4F, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4d, 0x21);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4e, 0x43);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x4f, 0x65);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x55, 0x06);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x56, 0x06);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x58, 0x21);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x59, 0x70);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5A, 0x46);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x32);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x88);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0x00, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5F, 0x00);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7A, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7B, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7C, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7D, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7E, 0x20);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7F, 0x3C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5a, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5b, 0x32);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5c, 0x88);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5e, 0x00, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5f, 0x00);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7a, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7b, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7c, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7d, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7e, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7f, 0x3c);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x80, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x81, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x82, 0x08);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x97, 0x02);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x10);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x55);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x55);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x23);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x05);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x65);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x55);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x27);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x65);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0x65);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE3, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0x65);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE6, 0x65);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE8, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xEA, 0x65);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xEB, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xEE, 0x65);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xEF, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xF0, 0x65);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x25);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x10);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd7, 0x55);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0x55);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd9, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xda, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdc, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdd, 0x55);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x27);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdf, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe0, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe1, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe2, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe3, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe4, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe5, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe6, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe8, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xea, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xeb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xee, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xef, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xf0, 0x65);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x25);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xF1, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xf1, 0x10);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1E, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1e, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1f, 0x46);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x32);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0x46);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x32);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3F, 0x80);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3f, 0x80);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x40, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x43, 0x00);
 
@@ -615,139 +615,139 @@ static int inx_hj110iz_init(struct boe_panel *boe)
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x48, 0x46);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x49, 0x32);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x80);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5b, 0x80);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5D, 0x46);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0x32);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5c, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5d, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5e, 0x32);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5F, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5f, 0x46);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x60, 0x32);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0x46);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x62, 0x32);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x68, 0x0C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x68, 0x0c);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6C, 0x0D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6E, 0x0D);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6c, 0x0d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6e, 0x0d);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x78, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x79, 0xC5);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7A, 0x0C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7B, 0xB0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x79, 0xc5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7a, 0x0c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7b, 0xb0);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x26);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0xA1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0xa1);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x02, 0x31);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0A, 0xF4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0a, 0xf4);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x04, 0x50);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0x30);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0C, 0x16);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x0D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0c, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0d, 0x0d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x0f, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x11, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x12, 0x50);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x13, 0x40);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x14, 0x58);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x15, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x16, 0x10);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0xA0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0xa0);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x86);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x00);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x0E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1A, 0x31);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1B, 0x0D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1C, 0x29);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x0E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x0e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1a, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1b, 0x0d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1c, 0x29);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2a, 0x0e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2b, 0x31);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1D, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1E, 0x62);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x62);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1d, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1e, 0x62);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1f, 0x62);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2F, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2f, 0x06);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x30, 0x62);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x31, 0x06);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x32, 0x7F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x32, 0x7f);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x33, 0x11);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x34, 0x89);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x35, 0x67);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x39, 0x0B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x62);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3B, 0x06);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x04);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x89);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x4E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA9, 0x3F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAA, 0x3E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAB, 0x3D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAC, 0x3C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAD, 0x3B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAE, 0x3A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAF, 0x39);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x38);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x27);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x11);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD1, 0x54);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x43);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x02);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x18);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x39, 0x0b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3a, 0x62);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3b, 0x06);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x89);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x4e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa9, 0x3f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xaa, 0x3e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xab, 0x3d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xac, 0x3c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xad, 0x3b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xae, 0x3a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xaf, 0x39);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x38);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x27);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd0, 0x11);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd1, 0x54);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x43);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdf, 0x02);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x18);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x56, 0x06);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x58, 0x80);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x59, 0x78);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5A, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x18);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5D, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0x20);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5F, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5a, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5b, 0x18);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5c, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5d, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5e, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x5f, 0x10);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x60, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0x1C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0x1c);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x62, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x63, 0x01);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x64, 0x44);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x65, 0x1B);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x65, 0x1b);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x66, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x67, 0x01);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x68, 0x44);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x98, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x03);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9B, 0xBE);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9b, 0xbe);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xAB, 0x14);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x08);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x28);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xab, 0x14);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x28);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x2A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x2F);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x2a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x2f);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x08);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x62);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0xF8);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0xf8);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x28, 0x1A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x28, 0x1a);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x29, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x1A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2D, 0x1A);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2a, 0x1a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2b, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x2d, 0x1a);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x64, 0x96);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x65, 0x10);
@@ -755,94 +755,94 @@ static int inx_hj110iz_init(struct boe_panel *boe)
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x67, 0x96);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x68, 0x10);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x69, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6A, 0x96);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6B, 0x10);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6C, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6a, 0x96);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6b, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x6c, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x70, 0x92);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x71, 0x10);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x72, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x79, 0x96);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7A, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x7a, 0x10);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x88, 0x96);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x89, 0x10);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA2, 0x3F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA3, 0x30);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA4, 0xC0);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xA5, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa2, 0x3f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa3, 0x30);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa4, 0xc0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xa5, 0x03);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE8, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe8, 0x00);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x97, 0x3C);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x97, 0x3c);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x98, 0x02);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x99, 0x95);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9A, 0x06);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9B, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9C, 0x0B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9D, 0x0A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9E, 0x90);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9a, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9b, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9c, 0x0b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9d, 0x0a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x9e, 0x90);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x25);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x25);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x13, 0x02);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x14, 0xD7);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x02);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0xD7);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0xCF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x0F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1B, 0x5B);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x20);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x24, 0x00, 0x38, 0x00, 0x4C, 0x00, 0x5E, 0x00, 0x6F, 0x00, 0x7E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00, 0x8C, 0x00, 0xBE, 0x00, 0xE5, 0x01, 0x27, 0x01, 0x58, 0x01, 0xA8, 0x01, 0xE8, 0x01, 0xEA);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02, 0x28, 0x02, 0x71, 0x02, 0x9E, 0x02, 0xDA, 0x03, 0x00, 0x03, 0x31, 0x03, 0x40, 0x03, 0x51);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x03, 0x62, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9C, 0x03, 0xAA, 0x03, 0xB2);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x27, 0x00, 0x3D, 0x00, 0x52, 0x00, 0x64, 0x00, 0x75, 0x00, 0x84);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x00, 0x93, 0x00, 0xC5, 0x00, 0xEC, 0x01, 0x2C, 0x01, 0x5D, 0x01, 0xAC, 0x01, 0xEC, 0x01, 0xEE);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x02, 0x2B, 0x02, 0x73, 0x02, 0xA0, 0x02, 0xDB, 0x03, 0x01, 0x03, 0x31, 0x03, 0x41, 0x03, 0x51);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x03, 0x63, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9C, 0x03, 0xAA, 0x03, 0xB2);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x2A, 0x00, 0x40, 0x00, 0x56, 0x00, 0x68, 0x00, 0x7A, 0x00, 0x89);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x00, 0x98, 0x00, 0xC9, 0x00, 0xF1, 0x01, 0x30, 0x01, 0x61, 0x01, 0xB0, 0x01, 0xEF, 0x01, 0xF1);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x02, 0x2E, 0x02, 0x76, 0x02, 0xA3, 0x02, 0xDD, 0x03, 0x02, 0x03, 0x32, 0x03, 0x42, 0x03, 0x53);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x03, 0x66, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9C, 0x03, 0xAA, 0x03, 0xB2);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x21);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x24, 0x00, 0x38, 0x00, 0x4C, 0x00, 0x5E, 0x00, 0x6F, 0x00, 0x7E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00, 0x8C, 0x00, 0xBE, 0x00, 0xE5, 0x01, 0x27, 0x01, 0x58, 0x01, 0xA8, 0x01, 0xE8, 0x01, 0xEA);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02, 0x28, 0x02, 0x71, 0x02, 0x9E, 0x02, 0xDA, 0x03, 0x00, 0x03, 0x31, 0x03, 0x40, 0x03, 0x51);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x03, 0x62, 0x03, 0x77, 0x03, 0x90, 0x03, 0xAC, 0x03, 0xCA, 0x03, 0xDA);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x27, 0x00, 0x3D, 0x00, 0x52, 0x00, 0x64, 0x00, 0x75, 0x00, 0x84);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x00, 0x93, 0x00, 0xC5, 0x00, 0xEC, 0x01, 0x2C, 0x01, 0x5D, 0x01, 0xAC, 0x01, 0xEC, 0x01, 0xEE);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x02, 0x2B, 0x02, 0x73, 0x02, 0xA0, 0x02, 0xDB, 0x03, 0x01, 0x03, 0x31, 0x03, 0x41, 0x03, 0x51);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x03, 0x63, 0x03, 0x77, 0x03, 0x90, 0x03, 0xAC, 0x03, 0xCA, 0x03, 0xDA);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x2A, 0x00, 0x40, 0x00, 0x56, 0x00, 0x68, 0x00, 0x7A, 0x00, 0x89);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x00, 0x98, 0x00, 0xC9, 0x00, 0xF1, 0x01, 0x30, 0x01, 0x61, 0x01, 0xB0, 0x01, 0xEF, 0x01, 0xF1);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x02, 0x2E, 0x02, 0x76, 0x02, 0xA3, 0x02, 0xDD, 0x03, 0x02, 0x03, 0x32, 0x03, 0x42, 0x03, 0x53);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x03, 0x66, 0x03, 0x77, 0x03, 0x90, 0x03, 0xAC, 0x03, 0xCA, 0x03, 0xDA);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0xF0);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x08);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x10);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x01);
-
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x14, 0xd7);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdb, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdc, 0xd7);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0xcf);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x1b, 0x5b);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x20);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x24, 0x00, 0x38, 0x00, 0x4c, 0x00, 0x5e, 0x00, 0x6f, 0x00, 0x7e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x00, 0x8c, 0x00, 0xbe, 0x00, 0xe5, 0x01, 0x27, 0x01, 0x58, 0x01, 0xa8, 0x01, 0xe8, 0x01, 0xea);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02, 0x28, 0x02, 0x71, 0x02, 0x9e, 0x02, 0xda, 0x03, 0x00, 0x03, 0x31, 0x03, 0x40, 0x03, 0x51);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x03, 0x62, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9c, 0x03, 0xaa, 0x03, 0xb2);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x27, 0x00, 0x3d, 0x00, 0x52, 0x00, 0x64, 0x00, 0x75, 0x00, 0x84);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x00, 0x93, 0x00, 0xc5, 0x00, 0xec, 0x01, 0x2c, 0x01, 0x5d, 0x01, 0xac, 0x01, 0xec, 0x01, 0xee);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x02, 0x2b, 0x02, 0x73, 0x02, 0xa0, 0x02, 0xdb, 0x03, 0x01, 0x03, 0x31, 0x03, 0x41, 0x03, 0x51);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x03, 0x63, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9c, 0x03, 0xaa, 0x03, 0xb2);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x2a, 0x00, 0x40, 0x00, 0x56, 0x00, 0x68, 0x00, 0x7a, 0x00, 0x89);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x00, 0x98, 0x00, 0xc9, 0x00, 0xf1, 0x01, 0x30, 0x01, 0x61, 0x01, 0xb0, 0x01, 0xef, 0x01, 0xf1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x02, 0x2e, 0x02, 0x76, 0x02, 0xa3, 0x02, 0xdd, 0x03, 0x02, 0x03, 0x32, 0x03, 0x42, 0x03, 0x53);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0x03, 0x66, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9c, 0x03, 0xaa, 0x03, 0xb2);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x21);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x24, 0x00, 0x38, 0x00, 0x4c, 0x00, 0x5e, 0x00, 0x6f, 0x00, 0x7e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x00, 0x8c, 0x00, 0xbe, 0x00, 0xe5, 0x01, 0x27, 0x01, 0x58, 0x01, 0xa8, 0x01, 0xe8, 0x01, 0xea);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02, 0x28, 0x02, 0x71, 0x02, 0x9e, 0x02, 0xda, 0x03, 0x00, 0x03, 0x31, 0x03, 0x40, 0x03, 0x51);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x03, 0x62, 0x03, 0x77, 0x03, 0x90, 0x03, 0xac, 0x03, 0xca, 0x03, 0xda);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x27, 0x00, 0x3d, 0x00, 0x52, 0x00, 0x64, 0x00, 0x75, 0x00, 0x84);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x00, 0x93, 0x00, 0xc5, 0x00, 0xec, 0x01, 0x2c, 0x01, 0x5d, 0x01, 0xac, 0x01, 0xec, 0x01, 0xee);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x02, 0x2b, 0x02, 0x73, 0x02, 0xa0, 0x02, 0xdb, 0x03, 0x01, 0x03, 0x31, 0x03, 0x41, 0x03, 0x51);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x03, 0x63, 0x03, 0x77, 0x03, 0x90, 0x03, 0xac, 0x03, 0xca, 0x03, 0xda);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x2a, 0x00, 0x40, 0x00, 0x56, 0x00, 0x68, 0x00, 0x7a, 0x00, 0x89);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x00, 0x98, 0x00, 0xc9, 0x00, 0xf1, 0x01, 0x30, 0x01, 0x61, 0x01, 0xb0, 0x01, 0xef, 0x01, 0xf1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x02, 0x2e, 0x02, 0x76, 0x02, 0xa3, 0x02, 0xdd, 0x03, 0x02, 0x03, 0x32, 0x03, 0x42, 0x03, 0x53);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0x03, 0x66, 0x03, 0x77, 0x03, 0x90, 0x03, 0xac, 0x03, 0xca, 0x03, 0xda);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0xf0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3a, 0x08);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x01);
+
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x20);
 
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x40);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x10);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x02);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x10);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x01);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x35, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3B, 0x03, 0xAE, 0x1A, 0x04, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0x3b, 0x03, 0xae, 0x1a, 0x04, 0x04);
 	if (ctx.accum_err)
 		return ctx.accum_err;
 
@@ -867,296 +867,296 @@ static int boe_init(struct boe_panel *boe)
 {
 	struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x05);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0xE5);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x52);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x88);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x04);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x03);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x8B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x1A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x0F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x0C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x02);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x0C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x02);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x26);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x26);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x26);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x26);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x03);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x03);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE6, 0x04);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x04);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x09);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x09);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x0A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x0A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x0B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x0B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x0C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x0C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x05);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x05);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD4, 0x06);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x06);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x07);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x07);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x08);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x08);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x02);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x0D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x17);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x26);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x31);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x1C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0x2C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x33);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x31);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x37);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x37);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x37);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x39);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x2E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0x2F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCF, 0x2F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x07);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x0D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD4, 0x17);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x26);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x31);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x3F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x3F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x3F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x3F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x37);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x37);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x37);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x39);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x2E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x2F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x2F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0x07);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x03);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x0B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x07);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x2A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x2A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x43);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x07);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0xC0);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x0D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x06);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0xA5);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0xA5);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x0F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x32);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x07);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x0F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x25);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x39);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x72);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x97);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xDC);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x22);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xA4);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x2B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x2F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xA9);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x25);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x61);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x97);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB2);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xCD);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xD9);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE7);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF4);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x08);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x04);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x05);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x11);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x24);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x39);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x72);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x98);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xDC);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x23);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xA6);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x2C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x30);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xAA);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x26);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x62);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x9B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB5);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xCF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xDB);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE8);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF5);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x09);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x04);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x16);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x24);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x3B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x73);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x99);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xE0);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x26);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xAD);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x36);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x3A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xAE);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x2A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x66);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x9E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB8);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xD1);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xDD);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE9);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF6);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x0A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x0F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x25);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x39);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x72);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x97);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xDC);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x22);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xA4);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x2B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x2F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xA9);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x25);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x61);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x97);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB2);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xCD);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xD9);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE7);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF4);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x0B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x04);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x05);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x11);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x24);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x39);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x72);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x98);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xDC);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x23);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xA6);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x2C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x30);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xAA);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x26);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x62);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x9B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB5);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xCF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xDB);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE8);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF5);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x0C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x04);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x16);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x24);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x3B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x73);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x99);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xE0);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x26);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xAD);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x36);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x3A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xAE);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x2A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x66);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x9E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB8);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xD1);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xDD);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE9);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF6);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x08);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x04);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x68);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0xe5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x52);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x88);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x8b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0x1a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0x0c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0x0c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe0, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe1, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdc, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdd, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe6, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0x09);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x09);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0x0a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd9, 0x0a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0x0b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x0b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd6, 0x0c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd7, 0x0c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd4, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd5, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdf, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x0d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0x17);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x1c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0x2c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0x33);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x37);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x37);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x37);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0x39);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0x2e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0x2f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcf, 0x2f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd0, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x0d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd4, 0x17);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd5, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd6, 0x31);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd7, 0x3f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0x3f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd9, 0x3f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xda, 0x3f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdb, 0x37);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdc, 0x37);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdd, 0x37);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x39);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdf, 0x2e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe0, 0x2f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe1, 0x2f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe2, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x0b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x2a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x2a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x43);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe4, 0xc0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe5, 0x0d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x06);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0xa5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0xa5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd5, 0x32);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x25);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x39);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x4e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x72);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x97);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0xdc);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x22);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0xa4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x2b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x2f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0xa9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0x25);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x61);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x97);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0xb2);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0xcd);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0xd9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0xe7);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0xf4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0xfa);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0xfc);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0xaf);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x11);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x39);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x4f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x72);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x98);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0xdc);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0xa6);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x2c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x30);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0xaa);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x62);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x9b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0xb5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0xcf);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0xdb);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0xe8);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0xf5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0xfa);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0xfc);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0xaf);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x09);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x3b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x4f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x73);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x99);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0xe0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0xad);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x36);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x3a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0xae);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0x2a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x66);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x9e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0xb8);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0xd1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0xdd);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0xe9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0xf6);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0xfa);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0xfc);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0xaf);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x0a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x0f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x25);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x39);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x4e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x72);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x97);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0xdc);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x22);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0xa4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x2b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x2f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0xa9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0x25);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x61);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x97);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0xb2);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0xcd);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0xd9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0xe7);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0xf4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0xfa);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0xfc);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0xaf);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x0b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x11);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x39);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x4f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x72);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x98);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0xdc);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0xa6);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x2c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x30);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0xaa);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x62);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x9b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0xb5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0xcf);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0xdb);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0xe8);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0xf5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0xfa);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0xfc);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0xaf);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x0c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x3b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x4f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x73);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x99);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0xe0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x26);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0xad);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x36);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x3a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0xae);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0x2a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x66);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x9e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0xb8);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0xd1);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0xdd);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0xe9);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0xf6);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0xfa);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0xfc);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x16);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0xaf);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x68);
 	if (ctx.accum_err)
 		return ctx.accum_err;
 
@@ -1192,47 +1192,47 @@ static int auo_b101uan08_3_init(struct boe_panel *boe)
 
 	msleep(24);
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x48);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x48);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x47);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x47);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x46);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x46);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0x45);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x45);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x64);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x64);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x4F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x4F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x40);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x40);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0x66);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCF, 0x66);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x4F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD1, 0x4F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x41);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x41);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD4, 0x48);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x48);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x47);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x47);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x46);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x46);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x45);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x45);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x64);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x64);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x4F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x4F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x40);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x40);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0x66);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE3, 0x66);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0x4F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x4F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE6, 0x41);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x41);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x48);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x48);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0x47);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x47);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0x45);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0x45);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x64);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x64);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x4f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x4f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0x66);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcf, 0x66);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd0, 0x4f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd1, 0x4f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x41);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x41);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd4, 0x48);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd5, 0x48);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd6, 0x47);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd7, 0x47);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd9, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xda, 0x45);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdb, 0x45);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdc, 0x64);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdd, 0x64);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x4f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdf, 0x4f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe0, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe1, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe2, 0x66);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe3, 0x66);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe4, 0x4f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe5, 0x4f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe6, 0x41);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0x41);
 	if (ctx.accum_err)
 		return ctx.accum_err;
 
@@ -1245,95 +1245,95 @@ static int starry_qfh032011_53g_init(struct boe_panel *boe)
 {
 	struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x4F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x40);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x40);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0x40);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x40);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x4D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x52);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x51);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x5D);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0x5B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCF, 0x4B);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x49);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD1, 0x47);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x45);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x41);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x50);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x40);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x40);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x40);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x40);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x4E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x52);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x51);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x5E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0x5C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE3, 0x4C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0x4A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x48);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE6, 0x46);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x42);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x03);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0x03);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x44);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x07);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x05);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x42);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x3E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCF, 0x60);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x04);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x04);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD4, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x03);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x04);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0xF0);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x0A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x08);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x08);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x10);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x02);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x0A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x20);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x24);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x23);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x29);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0x23);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x1C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x19);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x17);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x17);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x18);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x1A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x1E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0x20);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCF, 0x23);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x07);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD1, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x0A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD4, 0x13);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x1C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x1A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x13);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x17);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x1C);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x19);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x17);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x17);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x18);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x1A);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x1E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x20);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x23);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x4f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x4d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x52);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x51);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0x5d);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0x5b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcf, 0x4b);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd0, 0x49);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd1, 0x47);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x45);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x41);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd7, 0x50);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd9, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xda, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdb, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdc, 0x4e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdd, 0x52);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x51);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe1, 0x5e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe2, 0x5c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe3, 0x4c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe4, 0x4a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe5, 0x48);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe6, 0x46);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0x42);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0x44);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x05);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x42);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0x3e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcf, 0x60);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd4, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd5, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd6, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd7, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd9, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdb, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe4, 0xf0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe5, 0x0a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0x08);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x0a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x24);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x29);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0x1c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x19);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x17);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x17);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x18);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0x1a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0x1e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcf, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd0, 0x07);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd1, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x0a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd4, 0x13);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd5, 0x1c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd6, 0x1a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd7, 0x13);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0x17);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd9, 0x1c);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xda, 0x19);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdb, 0x17);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdc, 0x17);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdd, 0x18);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x1a);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xdf, 0x1e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe0, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe1, 0x23);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe2, 0x07);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0X11);
 	if (ctx.accum_err)
 		return ctx.accum_err;
@@ -1353,67 +1353,67 @@ static int starry_himax83102_j02_init(struct boe_panel *boe)
 {
 	struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
 
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x83, 0x10, 0x21, 0x55, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x2C, 0xB5, 0xB5, 0x31, 0xF1, 0x31, 0xD7, 0x2F, 0x36, 0x36, 0x36, 0x36, 0x1A, 0x8B, 0x11,
-		0x65, 0x00, 0x88, 0xFA, 0xFF, 0xFF, 0x8F, 0xFF, 0x08, 0x74, 0x33);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x00, 0x47, 0xB0, 0x80, 0x00, 0x12, 0x72, 0x3C, 0xA3, 0x03, 0x03, 0x00, 0x00, 0x88, 0xF5);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x63, 0x5C, 0x63, 0x5C, 0x01, 0x9E);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xCD);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x84);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x1B, 0x04);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0x20);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0xFC, 0xC4);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x36, 0x36, 0x22, 0x11, 0x22, 0xA0, 0x61, 0x08, 0xF5, 0x03);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xCC);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x80);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xC6);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x97);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00, 0x1E, 0x13, 0x88, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x08, 0x13, 0x07, 0x00, 0x0F, 0x33);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x02);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xC4);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x03);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD1, 0x37, 0x06, 0x00, 0x02, 0x04, 0x0C, 0xFF);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x1F, 0x11, 0x1F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x37, 0x47, 0x34, 0x3B, 0x12, 0x12, 0x03,
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x83, 0x10, 0x21, 0x55, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x2c, 0xb5, 0xb5, 0x31, 0xf1, 0x31, 0xd7, 0x2f, 0x36, 0x36, 0x36, 0x36, 0x1a, 0x8b, 0x11,
+		0x65, 0x00, 0x88, 0xfa, 0xff, 0xff, 0x8f, 0xff, 0x08, 0x74, 0x33);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x00, 0x47, 0xb0, 0x80, 0x00, 0x12, 0x72, 0x3c, 0xa3, 0x03, 0x03, 0x00, 0x00, 0x88, 0xf5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x63, 0x5c, 0x63, 0x5c, 0x01, 0x9e);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xcd);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x84);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x1b, 0x04);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0x20);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0xfc, 0xc4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x36, 0x36, 0x22, 0x11, 0x22, 0xa0, 0x61, 0x08, 0xf5, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xcc);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0x80);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xc6);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x97);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00, 0x1e, 0x13, 0x88, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x08, 0x13, 0x07, 0x00, 0x0f, 0x33);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xc4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd0, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd1, 0x37, 0x06, 0x00, 0x02, 0x04, 0x0c, 0xff);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x1f, 0x11, 0x1f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x37, 0x47, 0x34, 0x3b, 0x12, 0x12, 0x03,
 		0x03, 0x32, 0x10, 0x10, 0x00, 0x10, 0x32, 0x10, 0x08, 0x00, 0x08, 0x32, 0x17, 0x94, 0x07, 0x94, 0x00, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x40, 0x40, 0x1A, 0x1A,
-		0x1B, 0x1B, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x20, 0x21, 0x28, 0x29, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x40, 0x40, 0x19, 0x19, 0x1A, 0x1A,
-		0x1B, 0x1B, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x29, 0x28, 0x21, 0x20, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA,
-		0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x00, 0x09, 0x14, 0x1E, 0x26, 0x48, 0x61, 0x67, 0x6C, 0x67, 0x7D, 0x7F, 0x80, 0x8B, 0x87, 0x8F, 0x98, 0xAB,
-		0xAB, 0x55, 0x5C, 0x68, 0x73, 0x00, 0x09, 0x14, 0x1E, 0x26, 0x48, 0x61, 0x67, 0x6C, 0x67, 0x7D, 0x7F, 0x80, 0x8B, 0x87, 0x8F, 0x98, 0xAB, 0xAB, 0x55, 0x5C, 0x68, 0x73);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x0E, 0x10, 0x10, 0x21, 0x2B, 0x9A, 0x02, 0x54, 0x9A, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x12, 0x05, 0x02, 0x02, 0x10);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x01, 0xBF, 0x11);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x86);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x3C, 0xFA);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0C, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x02, 0x00, 0x28, 0x01, 0x7E, 0x0F, 0x7E, 0x10, 0xA0, 0x00, 0x00, 0x20, 0x40, 0x50, 0x40);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x02);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0xFF, 0xFF, 0xBF, 0xFE, 0xAA, 0xA0, 0xFF, 0xFF, 0xBF, 0xFE, 0xAA, 0xA0);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0xFE, 0x04, 0xFE, 0x04, 0xFE, 0x04, 0x03, 0x03, 0x03, 0x26, 0x00, 0x26, 0x81, 0x02, 0x40, 0x00, 0x20, 0x9E, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x03);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xC6);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x03, 0xFF, 0xF8);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x00, 0x2A, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA8,
-		0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA8, 0x00, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x00);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xC4);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x96);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x01);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xC5);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x4F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
-	mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd5, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x40, 0x40, 0x1a, 0x1a,
+		0x1b, 0x1b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x20, 0x21, 0x28, 0x29, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd6, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x40, 0x40, 0x19, 0x19, 0x1a, 0x1a,
+		0x1b, 0x1b, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x29, 0x28, 0x21, 0x20, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0xaa, 0xba, 0xea, 0xaa, 0xaa, 0xa0, 0xaa, 0xba, 0xea, 0xaa, 0xaa, 0xa0, 0xaa, 0xba, 0xea, 0xaa,
+		0xaa, 0xa0, 0xaa, 0xba, 0xea, 0xaa, 0xaa, 0xa0, 0xaa, 0xba, 0xea, 0xaa, 0xaa, 0xa0, 0xaa, 0xba, 0xea, 0xaa, 0xaa, 0xa0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe0, 0x00, 0x09, 0x14, 0x1e, 0x26, 0x48, 0x61, 0x67, 0x6c, 0x67, 0x7d, 0x7f, 0x80, 0x8b, 0x87, 0x8f, 0x98, 0xab,
+		0xab, 0x55, 0x5c, 0x68, 0x73, 0x00, 0x09, 0x14, 0x1e, 0x26, 0x48, 0x61, 0x67, 0x6c, 0x67, 0x7d, 0x7f, 0x80, 0x8b, 0x87, 0x8f, 0x98, 0xab, 0xab, 0x55, 0x5c, 0x68, 0x73);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0x0e, 0x10, 0x10, 0x21, 0x2b, 0x9a, 0x02, 0x54, 0x9a, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x12, 0x05, 0x02, 0x02, 0x10);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x01, 0xbf, 0x11);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x86);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x3c, 0xfa);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0c, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0x02, 0x00, 0x28, 0x01, 0x7e, 0x0f, 0x7e, 0x10, 0xa0, 0x00, 0x00, 0x20, 0x40, 0x50, 0x40);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x02);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0xff, 0xff, 0xbf, 0xfe, 0xaa, 0xa0, 0xff, 0xff, 0xbf, 0xfe, 0xaa, 0xa0);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0xfe, 0x04, 0xfe, 0x04, 0xfe, 0x04, 0x03, 0x03, 0x03, 0x26, 0x00, 0x26, 0x81, 0x02, 0x40, 0x00, 0x20, 0x9e, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x03);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xc6);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x03, 0xff, 0xf8);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0x00, 0x2a, 0xaa, 0xa8, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8,
+		0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, 0x00, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x00);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xc4);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x96);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x01);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xc5);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x4f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f);
+	mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x00);
 	mipi_dsi_dcs_write_seq_multi(&ctx, 0x11);
 	if (ctx.accum_err)
 		return ctx.accum_err;
-- 
2.44.0.769.g3c40516874-goog


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

* Re: [PATCH v2 1/8] drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_dcs_write_seq()
  2024-04-26 23:58 ` [PATCH v2 1/8] drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_dcs_write_seq() Douglas Anderson
@ 2024-04-27  1:44   ` Dmitry Baryshkov
  2024-04-27  6:22     ` Sam Ravnborg
  0 siblings, 1 reply; 23+ messages in thread
From: Dmitry Baryshkov @ 2024-04-27  1:44 UTC (permalink / raw)
  To: Douglas Anderson
  Cc: dri-devel, Linus Walleij, lvzhaoxiong, Jani Nikula, Hsin-Yi Wang,
	Javier Martinez Canillas, Neil Armstrong, Joel Selvaraj,
	Cong Yang, Sam Ravnborg, Daniel Vetter, David Airlie,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	linux-kernel

On Sat, 27 Apr 2024 at 02:59, Douglas Anderson <dianders@chromium.org> wrote:
>
> The mipi_dsi_dcs_write_seq() macro makes a call to
> mipi_dsi_dcs_write_buffer() which returns a type ssize_t. The macro
> then stores it in an int and checks to see if it's negative. This
> could theoretically be a problem if "ssize_t" is larger than "int".
>
> To see the issue, imagine that "ssize_t" is 32-bits and "int" is
> 16-bits, you could see a problem if there was some code out there that
> looked like:
>
>   mipi_dsi_dcs_write_seq(dsi, cmd, <32767 bytes as arguments>);
>
> ...since we'd get back that 32768 bytes were transferred and 32768
> stored in a 16-bit int would look negative.
>
> Though there are no callsites where we'd actually hit this (even if
> "int" was only 16-bit), it's cleaner to make the types match so let's
> fix it.
>
> Fixes: 2a9e9daf7523 ("drm/mipi-dsi: Introduce mipi_dsi_dcs_write_seq macro")
> Signed-off-by: Douglas Anderson <dianders@chromium.org>
> ---
>
> Changes in v2:
> - New
>
>  include/drm/drm_mipi_dsi.h | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h
> index 82b1cc434ea3..b3576be22bfa 100644
> --- a/include/drm/drm_mipi_dsi.h
> +++ b/include/drm/drm_mipi_dsi.h
> @@ -337,12 +337,12 @@ int mipi_dsi_dcs_get_display_brightness_large(struct mipi_dsi_device *dsi,
>         do {                                                               \
>                 static const u8 d[] = { cmd, seq };                        \
>                 struct device *dev = &dsi->dev;                            \
> -               int ret;                                                   \
> +               ssize_t ret;                                               \
>                 ret = mipi_dsi_dcs_write_buffer(dsi, d, ARRAY_SIZE(d));    \
>                 if (ret < 0) {                                             \
>                         dev_err_ratelimited(                               \
>                                 dev, "sending command %#02x failed: %d\n", \
> -                               cmd, ret);                                 \
> +                               cmd, (int)ret);                            \

Please consider using %zd instead

>                         return ret;                                        \
>                 }                                                          \
>         } while (0)
> --
> 2.44.0.769.g3c40516874-goog
>


-- 
With best wishes
Dmitry

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

* Re: [PATCH v2 3/8] drm/mipi-dsi: Reduce driver bloat of mipi_dsi_*_write_seq()
  2024-04-26 23:58 ` [PATCH v2 3/8] drm/mipi-dsi: Reduce driver bloat of mipi_dsi_*_write_seq() Douglas Anderson
@ 2024-04-27  2:05   ` Dmitry Baryshkov
  0 siblings, 0 replies; 23+ messages in thread
From: Dmitry Baryshkov @ 2024-04-27  2:05 UTC (permalink / raw)
  To: Douglas Anderson
  Cc: dri-devel, Linus Walleij, lvzhaoxiong, Jani Nikula, Hsin-Yi Wang,
	Javier Martinez Canillas, Neil Armstrong, Joel Selvaraj,
	Cong Yang, Sam Ravnborg, Daniel Vetter, David Airlie,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	linux-kernel

On Sat, 27 Apr 2024 at 02:59, Douglas Anderson <dianders@chromium.org> wrote:
>
> Through a cooperative effort between Hsin-Yi Wang and Dmitry
> Baryshkov, we have realized the dev_err_ratelimited() in the
> mipi_dsi_*_write_seq() macros was causing quite a bit of bloat to the
> kernel. Let's hoist this call into drm_mipi_dsi.c by adding a "chatty"
> version of the functions that includes the print. While doing this,
> add a bit more comments to these macros making it clear that they
> print errors and also that they return out of _the caller's_ function.
>
> Without any changes to clients this gives a dramatic savings. Building
> with my build system shows one example:
>
> $ scripts/bloat-o-meter \
>   .../before/panel-novatek-nt36672e.ko \
>   .../after/panel-novatek-nt36672e.ko
>
> add/remove: 0/1 grow/shrink: 0/1 up/down: 0/-21496 (-21496)
> Function                                     old     new   delta
> nt36672e_1080x2408_60hz_init._rs           10320       -  -10320
> nt36672e_1080x2408_60hz_init               17412    6236  -11176
> Total: Before=32147, After=10651, chg -66.87%
>
> Note that given the change in location of the print it's harder to
> include the "cmd" in the printout for mipi_dsi_dcs_write_seq() since,
> theoretically, someone could call the new chatty function with a
> zero-size array and it would be illegal to dereference data[0].
> There's a printk format to print the whole buffer and this is probably
> more useful for debugging anyway. Given that we're doing this for
> mipi_dsi_dcs_write_seq(), let's also print the buffer for
> mipi_dsi_generic_write_seq() in the error case.
>
> It should be noted that the current consensus of DRM folks is that the
> mipi_dsi_*_write_seq() should be deprecated due to the non-intuitive
> return behavior. A future patch will formally mark them as deprecated
> and provide an alternative.
>
> Signed-off-by: Douglas Anderson <dianders@chromium.org>
> ---
>
> Changes in v2:
> - Add some comments to the macros about printing and returning.
> - Modify commit message now that this is part of a series.
> - Change the way err value is handled in prep for next patch.
> - Rebased upon patches to avoid theoretical int overflow.
>

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>


-- 
With best wishes
Dmitry

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

* Re: [PATCH v2 1/8] drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_dcs_write_seq()
  2024-04-27  1:44   ` Dmitry Baryshkov
@ 2024-04-27  6:22     ` Sam Ravnborg
  2024-04-29 21:42       ` Doug Anderson
  0 siblings, 1 reply; 23+ messages in thread
From: Sam Ravnborg @ 2024-04-27  6:22 UTC (permalink / raw)
  To: Dmitry Baryshkov, Douglas Anderson
  Cc: Douglas Anderson, dri-devel, Linus Walleij, lvzhaoxiong,
	Jani Nikula, Hsin-Yi Wang, Javier Martinez Canillas,
	Neil Armstrong, Joel Selvaraj, Cong Yang, Daniel Vetter,
	David Airlie, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, linux-kernel

On Sat, Apr 27, 2024 at 04:44:33AM +0300, Dmitry Baryshkov wrote:
> On Sat, 27 Apr 2024 at 02:59, Douglas Anderson <dianders@chromium.org> wrote:
> >
> > The mipi_dsi_dcs_write_seq() macro makes a call to
> > mipi_dsi_dcs_write_buffer() which returns a type ssize_t. The macro
> > then stores it in an int and checks to see if it's negative. This
> > could theoretically be a problem if "ssize_t" is larger than "int".
> >
> > To see the issue, imagine that "ssize_t" is 32-bits and "int" is
> > 16-bits, you could see a problem if there was some code out there that
> > looked like:
> >
> >   mipi_dsi_dcs_write_seq(dsi, cmd, <32767 bytes as arguments>);
> >
> > ...since we'd get back that 32768 bytes were transferred and 32768
> > stored in a 16-bit int would look negative.
> >
> > Though there are no callsites where we'd actually hit this (even if
> > "int" was only 16-bit), it's cleaner to make the types match so let's
> > fix it.
> >
> > Fixes: 2a9e9daf7523 ("drm/mipi-dsi: Introduce mipi_dsi_dcs_write_seq macro")
> > Signed-off-by: Douglas Anderson <dianders@chromium.org>
> > ---
> >
> > Changes in v2:
> > - New
> >
> >  include/drm/drm_mipi_dsi.h | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h
> > index 82b1cc434ea3..b3576be22bfa 100644
> > --- a/include/drm/drm_mipi_dsi.h
> > +++ b/include/drm/drm_mipi_dsi.h
> > @@ -337,12 +337,12 @@ int mipi_dsi_dcs_get_display_brightness_large(struct mipi_dsi_device *dsi,
> >         do {                                                               \
> >                 static const u8 d[] = { cmd, seq };                        \
> >                 struct device *dev = &dsi->dev;                            \
> > -               int ret;                                                   \
> > +               ssize_t ret;                                               \
> >                 ret = mipi_dsi_dcs_write_buffer(dsi, d, ARRAY_SIZE(d));    \
> >                 if (ret < 0) {                                             \
> >                         dev_err_ratelimited(                               \
> >                                 dev, "sending command %#02x failed: %d\n", \
> > -                               cmd, ret);                                 \
> > +                               cmd, (int)ret);                            \
> 
> Please consider using %zd instead

Hi Douglas,
please consider the above for all the pathces, there are more places
where a cast can be dropped.

	Sam

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

* Re: [PATCH v2 4/8] drm/mipi-dsi: Introduce mipi_dsi_*_write_seq_multi()
  2024-04-26 23:58 ` [PATCH v2 4/8] drm/mipi-dsi: Introduce mipi_dsi_*_write_seq_multi() Douglas Anderson
@ 2024-04-27  6:32   ` Sam Ravnborg
  2024-04-29 14:13     ` Doug Anderson
  2024-04-29  9:38   ` Neil Armstrong
  1 sibling, 1 reply; 23+ messages in thread
From: Sam Ravnborg @ 2024-04-27  6:32 UTC (permalink / raw)
  To: Douglas Anderson
  Cc: dri-devel, Linus Walleij, lvzhaoxiong, Jani Nikula, Hsin-Yi Wang,
	Javier Martinez Canillas, Neil Armstrong, Joel Selvaraj,
	Dmitry Baryshkov, Cong Yang, Daniel Vetter, David Airlie,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	linux-kernel

Hi Douglas.

On Fri, Apr 26, 2024 at 04:58:37PM -0700, Douglas Anderson wrote:
> The current mipi_dsi_*_write_seq() macros are non-intutitive because
> they contain a hidden "return" statement that will return out of the
> _caller_ of the macro. Let's mark them as deprecated and instead
> introduce some new macros that are more intuitive.
> 
> These new macros are less optimal when an error occurs but should
> behave more optimally when there is no error. Specifically these new
> macros cause smaller code to get generated and the code size savings
> (less to fetch from RAM, less cache space used, less RAM used) are
> important. Since the error case isn't something we need to optimize
> for and these new macros are easier to understand and more flexible,
> they should be used.

The whole ignore-and-return-early-if-an-error-occured concept is nice
and make this easy to understand and use. I have a few nits in the
following, but the overall concept is nice.

	Sam

> 
> After converting to use these new functions, one example shows some
> nice savings while also being easier to understand.
> 
> $ scripts/bloat-o-meter \
>   ...after/panel-novatek-nt36672e.ko \
>   ...ctx/panel-novatek-nt36672e.ko
> add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-988 (-988)
> Function                                     old     new   delta
> nt36672e_1080x2408_60hz_init                6236    5248    -988
> Total: Before=10651, After=9663, chg -9.28%
> 
> Signed-off-by: Douglas Anderson <dianders@chromium.org>
> ---
> Right now this patch introduces two new functions in
> drm_mipi_dsi.c. Alternatively we could have changed the prototype of
> the "chatty" functions and made the deprecated macros adapt to the new
> prototype. While this sounds nice, it bloated callers of the
> deprecated functioin a bit because it caused the compiler to emit less
> optimal code. It doesn't seem terrible to add two more functions, so I
> went that way.
The concern here is when it will be cleaned up. As a minimum please
consider adding an item to todo.rst that details what should be done
to get rid of the now obsolete chatty functions so someone can pick it
up.


> 
> Changes in v2:
> - New
> 
>  drivers/gpu/drm/drm_mipi_dsi.c | 56 +++++++++++++++++++++++++++++++++
>  include/drm/drm_mipi_dsi.h     | 57 ++++++++++++++++++++++++++++++++++
>  2 files changed, 113 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c
> index 1e062eda3b88..b7c75a4396e6 100644
> --- a/drivers/gpu/drm/drm_mipi_dsi.c
> +++ b/drivers/gpu/drm/drm_mipi_dsi.c
> @@ -792,6 +792,34 @@ int mipi_dsi_generic_write_chatty(struct mipi_dsi_device *dsi,
>  }
>  EXPORT_SYMBOL(mipi_dsi_generic_write_chatty);
>  
> +/**
> + * mipi_dsi_generic_write_multi() - mipi_dsi_generic_write_chatty() w/ accum_err
> + * @ctx: Context for multiple DSI transactions
> + * @payload: buffer containing the payload
> + * @size: size of payload buffer
> + *
> + * Like mipi_dsi_generic_write_chatty() but deals with errors in a way that
> + * makes it convenient to make several calls in a row.
> + */
> +void mipi_dsi_generic_write_multi(struct mipi_dsi_multi_context *ctx,
> +				  const void *payload, size_t size)
> +{
> +	struct mipi_dsi_device *dsi = ctx->dsi;
> +	struct device *dev = &dsi->dev;
> +	ssize_t ret;
> +
> +	if (ctx->accum_err)
> +		return;
> +
> +	ret = mipi_dsi_generic_write(dsi, payload, size);
> +	if (ret < 0) {
> +		ctx->accum_err = ret;
> +		dev_err_ratelimited(dev, "sending generic data %*ph failed: %d\n",
> +				    (int)size, payload, ctx->accum_err);
> +	}
I see no point in using ratelimited and then change it in the next
patch.

> +}
> +EXPORT_SYMBOL(mipi_dsi_generic_write_multi);
> +
>  /**
>   * mipi_dsi_generic_read() - receive data using a generic read packet
>   * @dsi: DSI peripheral device
> @@ -908,6 +936,34 @@ int mipi_dsi_dcs_write_buffer_chatty(struct mipi_dsi_device *dsi,
>  }
>  EXPORT_SYMBOL(mipi_dsi_dcs_write_buffer_chatty);
>  
> +/**
> + * mipi_dsi_dcs_write_buffer_multi - mipi_dsi_dcs_write_buffer_chatty() w/ accum_err
> + * @ctx: Context for multiple DSI transactions
> + * @data: buffer containing data to be transmitted
> + * @len: size of transmission buffer
> + *
> + * Like mipi_dsi_dcs_write_buffer_chatty() but deals with errors in a way that
> + * makes it convenient to make several calls in a row.
> + */
> +void mipi_dsi_dcs_write_buffer_multi(struct mipi_dsi_multi_context *ctx,
> +				     const void *data, size_t len)
> +{
> +	struct mipi_dsi_device *dsi = ctx->dsi;
> +	struct device *dev = &dsi->dev;
> +	ssize_t ret;
> +
> +	if (ctx->accum_err)
> +		return;
> +
> +	ret = mipi_dsi_dcs_write_buffer(dsi, data, len);
> +	if (ret < 0) {
> +		ctx->accum_err = ret;
> +		dev_err_ratelimited(dev, "sending dcs data %*ph failed: %d\n",
> +				    (int)len, data, ctx->accum_err);
> +	}
> +}
> +EXPORT_SYMBOL(mipi_dsi_dcs_write_buffer_multi);
> +
>  /**
>   * mipi_dsi_dcs_write() - send DCS write command
>   * @dsi: DSI peripheral device
> diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h
> index 6d68d9927f46..379594649a42 100644
> --- a/include/drm/drm_mipi_dsi.h
> +++ b/include/drm/drm_mipi_dsi.h
> @@ -197,6 +197,22 @@ struct mipi_dsi_device {
>  	struct drm_dsc_config *dsc;
>  };
>  
> +/**
> + * struct mipi_dsi_multi_context - Context to call multiple MIPI DSI funcs in a row
> + * @dsi: Pointer to the MIPI DSI device
> + * @accum_err: Storage for the accumulated error over the multiple calls. Init
> + *	to 0. If a function encounters an error then the error code will be
> + *	stored here. If you call a function and this points to a non-zero
> + *	value then the function will be a noop. This allows calling a function
> + *	many times in a row and just checking the error at the end to see if
> + *	any of them failed.
> + */
> +
> +struct mipi_dsi_multi_context {
> +	struct mipi_dsi_device *dsi;
> +	int accum_err;
> +};
Inline comments is - I think - preferred.



> +
>  #define MIPI_DSI_MODULE_PREFIX "mipi-dsi:"
>  
>  #define to_mipi_dsi_device(__dev)	container_of_const(__dev, struct mipi_dsi_device, dev)
> @@ -258,6 +274,8 @@ ssize_t mipi_dsi_generic_write(struct mipi_dsi_device *dsi, const void *payload,
>  			       size_t size);
>  int mipi_dsi_generic_write_chatty(struct mipi_dsi_device *dsi,
>  				  const void *payload, size_t size);
> +void mipi_dsi_generic_write_multi(struct mipi_dsi_multi_context *ctx,
> +				  const void *payload, size_t size);
>  ssize_t mipi_dsi_generic_read(struct mipi_dsi_device *dsi, const void *params,
>  			      size_t num_params, void *data, size_t size);
>  
> @@ -283,6 +301,8 @@ ssize_t mipi_dsi_dcs_write_buffer(struct mipi_dsi_device *dsi,
>  				  const void *data, size_t len);
>  int mipi_dsi_dcs_write_buffer_chatty(struct mipi_dsi_device *dsi,
>  				     const void *data, size_t len);
> +void mipi_dsi_dcs_write_buffer_multi(struct mipi_dsi_multi_context *ctx,
> +				     const void *data, size_t len);
>  ssize_t mipi_dsi_dcs_write(struct mipi_dsi_device *dsi, u8 cmd,
>  			   const void *data, size_t len);
>  ssize_t mipi_dsi_dcs_read(struct mipi_dsi_device *dsi, u8 cmd, void *data,
> @@ -319,6 +339,9 @@ int mipi_dsi_dcs_get_display_brightness_large(struct mipi_dsi_device *dsi,
>   * This macro will print errors for you and will RETURN FROM THE CALLING
>   * FUNCTION (yes this is non-intuitive) upon error.
>   *
> + * Because of the non-intuitive return behavior, THIS MACRO IS DEPRECATED.
> + * Please replace calls of it with mipi_dsi_generic_write_seq_multi().
> + *
>   * @dsi: DSI peripheral device
>   * @seq: buffer containing the payload
>   */
> @@ -331,12 +354,30 @@ int mipi_dsi_dcs_get_display_brightness_large(struct mipi_dsi_device *dsi,
>  			return ret;                                            \
>  	} while (0)
>  
> +/**
> + * mipi_dsi_generic_write_seq_multi - transmit data using a generic write packet
> + *
> + * This macro will print errors for you and error handling is optimized for
> + * callers that call this multiple times in a row.
> + *
> + * @ctx: Context for multiple DSI transactions
> + * @seq: buffer containing the payload
> + */
> +#define mipi_dsi_generic_write_seq_multi(ctx, seq...)                \
> +	do {                                                         \
> +		static const u8 d[] = { seq };                       \
> +		mipi_dsi_generic_write_multi(ctx, d, ARRAY_SIZE(d)); \
> +	} while (0)
> +
>  /**
>   * mipi_dsi_dcs_write_seq - transmit a DCS command with payload
>   *
>   * This macro will print errors for you and will RETURN FROM THE CALLING
>   * FUNCTION (yes this is non-intuitive) upon error.
>   *
> + * Because of the non-intuitive return behavior, THIS MACRO IS DEPRECATED.
> + * Please replace calls of it with mipi_dsi_dcs_write_seq_multi().
> + *
>   * @dsi: DSI peripheral device
>   * @cmd: Command
>   * @seq: buffer containing data to be transmitted
> @@ -350,6 +391,22 @@ int mipi_dsi_dcs_get_display_brightness_large(struct mipi_dsi_device *dsi,
>  			return ret;                                            \
>  	} while (0)
>  
> +/**
> + * mipi_dsi_dcs_write_seq_multi - transmit a DCS command with payload
> + *
> + * This macro will print errors for you and error handling is optimized for
> + * callers that call this multiple times in a row.
> + *
> + * @ctx: Context for multiple DSI transactions
> + * @cmd: Command
> + * @seq: buffer containing data to be transmitted
> + */
> +#define mipi_dsi_dcs_write_seq_multi(ctx, cmd, seq...)                  \
> +	do {                                                            \
> +		static const u8 d[] = { cmd, seq };                     \
> +		mipi_dsi_dcs_write_buffer_multi(ctx, d, ARRAY_SIZE(d)); \
> +	} while (0)
> +
>  /**
>   * struct mipi_dsi_driver - DSI driver
>   * @driver: device driver model driver
> -- 
> 2.44.0.769.g3c40516874-goog

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

* Re: [PATCH v2 8/8] drm/panel: boe-tv101wum-nl6: Convert hex to lowercase
  2024-04-26 23:58 ` [PATCH v2 8/8] drm/panel: boe-tv101wum-nl6: Convert hex to lowercase Douglas Anderson
@ 2024-04-27  8:48   ` Dmitry Baryshkov
  0 siblings, 0 replies; 23+ messages in thread
From: Dmitry Baryshkov @ 2024-04-27  8:48 UTC (permalink / raw)
  To: Douglas Anderson
  Cc: dri-devel, Linus Walleij, lvzhaoxiong, Jani Nikula, Hsin-Yi Wang,
	Javier Martinez Canillas, Neil Armstrong, Joel Selvaraj,
	Cong Yang, Sam Ravnborg, Daniel Vetter, David Airlie,
	Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, linux-kernel

On Sat, 27 Apr 2024 at 02:59, Douglas Anderson <dianders@chromium.org> wrote:
>
> Kernel convention is that we use 0xabcd, not 0xABCD. Convert the
> boe-tv101wum-nl6 driver to this convention.
>
> Signed-off-by: Douglas Anderson <dianders@chromium.org>

I think it's better to squash this into the corresponding previous patch.

> ---
>
> Changes in v2:
> - New
>
>  .../gpu/drm/panel/panel-boe-tv101wum-nl6.c    | 1912 ++++++++---------
>  1 file changed, 956 insertions(+), 956 deletions(-)
>
> diff --git a/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c b/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c
> index a3ed33f660cb..9518a45c29e0 100644
> --- a/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c
> +++ b/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c
> @@ -60,79 +60,79 @@ static int boe_tv110c9m_init(struct boe_panel *boe)
>  {
>         struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x20);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0xD9);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x20);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0xd9);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x78);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x5A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x63);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0E, 0x91);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x73);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x95, 0xE6);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x96, 0xF0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x5a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0d, 0x63);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0e, 0x91);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0f, 0x73);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x95, 0xe6);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x96, 0xf0);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x30, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x6D, 0x66);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x75, 0xA2);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x77, 0x3B);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x89, 0x00, 0xA1, 0x00, 0xB6, 0x00, 0xC9);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00, 0xDA, 0x01, 0x13, 0x01, 0x3C, 0x01, 0x7E, 0x01, 0xAB, 0x01, 0xF7, 0x02, 0x2F, 0x02, 0x31);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02, 0x67, 0x02, 0xA6, 0x02, 0xD1, 0x03, 0x08, 0x03, 0x2E, 0x03, 0x5B, 0x03, 0x6B, 0x03, 0x7B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x03, 0x8E, 0x03, 0xA2, 0x03, 0xB7, 0x03, 0xE7, 0x03, 0xFD, 0x03, 0xFF);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x89, 0x00, 0xA1, 0x00, 0xB6, 0x00, 0xC9);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x00, 0xDA, 0x01, 0x13, 0x01, 0x3C, 0x01, 0x7E, 0x01, 0xAB, 0x01, 0xF7, 0x02, 0x2F, 0x02, 0x31);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x02, 0x67, 0x02, 0xA6, 0x02, 0xD1, 0x03, 0x08, 0x03, 0x2E, 0x03, 0x5B, 0x03, 0x6B, 0x03, 0x7B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x03, 0x8E, 0x03, 0xA2, 0x03, 0xB7, 0x03, 0xE7, 0x03, 0xFD, 0x03, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x89, 0x00, 0xA1, 0x00, 0xB6, 0x00, 0xC9);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x00, 0xDA, 0x01, 0x13, 0x01, 0x3C, 0x01, 0x7E, 0x01, 0xAB, 0x01, 0xF7, 0x02, 0x2F, 0x02, 0x31);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x02, 0x67, 0x02, 0xA6, 0x02, 0xD1, 0x03, 0x08, 0x03, 0x2E, 0x03, 0x5B, 0x03, 0x6B, 0x03, 0x7B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x03, 0x8E, 0x03, 0xA2, 0x03, 0xB7, 0x03, 0xE7, 0x03, 0xFD, 0x03, 0xFF);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x21);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xAE, 0x00, 0xC1);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00, 0xD2, 0x01, 0x0B, 0x01, 0x34, 0x01, 0x76, 0x01, 0xA3, 0x01, 0xEF, 0x02, 0x27, 0x02, 0x29);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02, 0x5F, 0x02, 0x9E, 0x02, 0xC9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x03, 0x86, 0x03, 0x9A, 0x03, 0xAF, 0x03, 0xDF, 0x03, 0xF5, 0x03, 0xE0);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xAE, 0x00, 0xC1);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x00, 0xD2, 0x01, 0x0B, 0x01, 0x34, 0x01, 0x76, 0x01, 0xA3, 0x01, 0xEF, 0x02, 0x27, 0x02, 0x29);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x02, 0x5F, 0x02, 0x9E, 0x02, 0xC9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x03, 0x86, 0x03, 0x9A, 0x03, 0xAF, 0x03, 0xDF, 0x03, 0xF5, 0x03, 0xE0);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xAE, 0x00, 0xC1);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x00, 0xD2, 0x01, 0x0B, 0x01, 0x34, 0x01, 0x76, 0x01, 0xA3, 0x01, 0xEF, 0x02, 0x27, 0x02, 0x29);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x02, 0x5F, 0x02, 0x9E, 0x02, 0xC9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x03, 0x86, 0x03, 0x9A, 0x03, 0xAF, 0x03, 0xDF, 0x03, 0xF5, 0x03, 0xE0);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x24);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x6d, 0x66);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x75, 0xa2);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x77, 0x3b);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4d, 0x00, 0x6d, 0x00, 0x89, 0x00, 0xa1, 0x00, 0xb6, 0x00, 0xc9);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x00, 0xda, 0x01, 0x13, 0x01, 0x3c, 0x01, 0x7e, 0x01, 0xab, 0x01, 0xf7, 0x02, 0x2f, 0x02, 0x31);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02, 0x67, 0x02, 0xa6, 0x02, 0xd1, 0x03, 0x08, 0x03, 0x2e, 0x03, 0x5b, 0x03, 0x6b, 0x03, 0x7b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x03, 0x8e, 0x03, 0xa2, 0x03, 0xb7, 0x03, 0xe7, 0x03, 0xfd, 0x03, 0xff);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4d, 0x00, 0x6d, 0x00, 0x89, 0x00, 0xa1, 0x00, 0xb6, 0x00, 0xc9);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x00, 0xda, 0x01, 0x13, 0x01, 0x3c, 0x01, 0x7e, 0x01, 0xab, 0x01, 0xf7, 0x02, 0x2f, 0x02, 0x31);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x02, 0x67, 0x02, 0xa6, 0x02, 0xd1, 0x03, 0x08, 0x03, 0x2e, 0x03, 0x5b, 0x03, 0x6b, 0x03, 0x7b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x03, 0x8e, 0x03, 0xa2, 0x03, 0xb7, 0x03, 0xe7, 0x03, 0xfd, 0x03, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4d, 0x00, 0x6d, 0x00, 0x89, 0x00, 0xa1, 0x00, 0xb6, 0x00, 0xc9);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x00, 0xda, 0x01, 0x13, 0x01, 0x3c, 0x01, 0x7e, 0x01, 0xab, 0x01, 0xf7, 0x02, 0x2f, 0x02, 0x31);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x02, 0x67, 0x02, 0xa6, 0x02, 0xd1, 0x03, 0x08, 0x03, 0x2e, 0x03, 0x5b, 0x03, 0x6b, 0x03, 0x7b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0x03, 0x8e, 0x03, 0xa2, 0x03, 0xb7, 0x03, 0xe7, 0x03, 0xfd, 0x03, 0xff);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x21);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xae, 0x00, 0xc1);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x00, 0xd2, 0x01, 0x0b, 0x01, 0x34, 0x01, 0x76, 0x01, 0xa3, 0x01, 0xef, 0x02, 0x27, 0x02, 0x29);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02, 0x5f, 0x02, 0x9e, 0x02, 0xc9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x03, 0x86, 0x03, 0x9a, 0x03, 0xaf, 0x03, 0xdf, 0x03, 0xf5, 0x03, 0xe0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xae, 0x00, 0xc1);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x00, 0xd2, 0x01, 0x0b, 0x01, 0x34, 0x01, 0x76, 0x01, 0xa3, 0x01, 0xef, 0x02, 0x27, 0x02, 0x29);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x02, 0x5f, 0x02, 0x9e, 0x02, 0xc9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x03, 0x86, 0x03, 0x9a, 0x03, 0xaf, 0x03, 0xdf, 0x03, 0xf5, 0x03, 0xe0);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x45, 0x00, 0x65, 0x00, 0x81, 0x00, 0x99, 0x00, 0xae, 0x00, 0xc1);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x00, 0xd2, 0x01, 0x0b, 0x01, 0x34, 0x01, 0x76, 0x01, 0xa3, 0x01, 0xef, 0x02, 0x27, 0x02, 0x29);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x02, 0x5f, 0x02, 0x9e, 0x02, 0xc9, 0x03, 0x00, 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0x03, 0x86, 0x03, 0x9a, 0x03, 0xaf, 0x03, 0xdf, 0x03, 0xf5, 0x03, 0xe0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x24);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x01, 0x00);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x02, 0x1C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x03, 0x1C);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x02, 0x1c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x03, 0x1c);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x04, 0x1D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0x1D);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x04, 0x1d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0x1d);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0x04);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x04);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x0F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x09, 0x0F);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x0f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x09, 0x0f);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0A, 0x0E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0B, 0x0E);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0a, 0x0e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0b, 0x0e);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0C, 0x0D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x0D);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0c, 0x0d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0d, 0x0d);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0E, 0x0C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x0C);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0e, 0x0c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0f, 0x0c);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x10, 0x08);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x11, 0x08);
> @@ -145,284 +145,284 @@ static int boe_tv110c9m_init(struct boe_panel *boe)
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x16, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0x00);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x1C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x1C);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x1c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x1c);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1A, 0x1D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1B, 0x1D);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1a, 0x1d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1b, 0x1d);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1C, 0x04);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1D, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1c, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1d, 0x04);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1E, 0x0F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x0F);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1e, 0x0f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1f, 0x0f);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x0E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x21, 0x0E);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x0e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x21, 0x0e);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x0D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x0D);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x0d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x0d);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x0C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x0C);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x0c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x0c);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0x08);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x08);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x28, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x29, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2a, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2b, 0x00);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2D, 0x20);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2F, 0x0A);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2d, 0x20);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2f, 0x0a);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x30, 0x44);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x33, 0x0C);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x33, 0x0c);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x34, 0x32);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x37, 0x44);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x38, 0x40);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x39, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x5D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3B, 0x60);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3D, 0x42);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3F, 0x06);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3a, 0x5d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3b, 0x60);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3d, 0x42);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3f, 0x06);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x43, 0x06);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x47, 0x66);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4A, 0x5D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4B, 0x60);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4C, 0x91);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4D, 0x21);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4E, 0x43);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4a, 0x5d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4b, 0x60);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4c, 0x91);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4d, 0x21);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4e, 0x43);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x51, 0x12);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x52, 0x34);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x55, 0x82, 0x02);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x56, 0x04);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x58, 0x21);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x59, 0x30);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5A, 0x60);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x50);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0x00, 0x06);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5F, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5a, 0x60);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5b, 0x50);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5e, 0x00, 0x06);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5f, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x65, 0x82);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7E, 0x20);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7F, 0x3C);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7e, 0x20);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7f, 0x3c);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x82, 0x04);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x97, 0xC0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x97, 0xc0);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x91, 0x44);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x92, 0xA9);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x93, 0x1A);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x92, 0xa9);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x93, 0x1a);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x94, 0x96);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x55);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x0A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x08);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x05);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0xA9);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x22);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x05);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0xA9);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x05);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0xA9);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE3, 0x05);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0xA9);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x05);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE6, 0xA9);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5D, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x8D, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x8E, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x90);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x25);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd7, 0x55);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xda, 0x0a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x08);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdb, 0x05);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdc, 0xa9);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdd, 0x22);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdf, 0x05);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe0, 0xa9);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe1, 0x05);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe2, 0xa9);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe3, 0x05);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe4, 0xa9);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe5, 0x05);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe6, 0xa9);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5c, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5d, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x8d, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x8e, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x90);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x25);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x07);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x60);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1f, 0x60);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x50);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0x60);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x50);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x33, 0x60);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x34, 0x50);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3F, 0xE0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3f, 0xe0);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x40, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x44, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x45, 0x40);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x48, 0x60);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x49, 0x50);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5D, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0xD0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5b, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5c, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5d, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5e, 0xd0);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0x60);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x62, 0x50);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xF1, 0x10);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x2A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xf1, 0x10);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x2a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x64, 0x16);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x67, 0x16);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x6A, 0x16);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x6a, 0x16);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x70, 0x30);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xA2, 0xF3);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xA3, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xA4, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xA5, 0xFF);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xa2, 0xf3);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xa3, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xa4, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xa5, 0xff);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x08);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd6, 0x08);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x26);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0xA1);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x26);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0xa1);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x02, 0x31);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x04, 0x28);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0x30);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0C, 0x16);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x0D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0c, 0x16);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0d, 0x0d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0f, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x11, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x12, 0x50);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x13, 0x56);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x14, 0x57);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x15, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x16, 0x10);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0xA0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0xa0);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x86);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x0D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1A, 0x7F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1B, 0x0C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1C, 0xBF);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x0d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1a, 0x7f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1b, 0x0c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1c, 0xbf);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x0D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x7F);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2a, 0x0d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2b, 0x7f);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1D, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1E, 0x65);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x65);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1d, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1e, 0x65);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1f, 0x65);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x65);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2F, 0x05);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2f, 0x05);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x30, 0x65);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x31, 0x05);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x32, 0x7D);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x32, 0x7d);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x39, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x65);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3a, 0x65);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x01);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x33, 0x11);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x34, 0x78);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x35, 0x16);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x04);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x9E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x4E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x00);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xA9, 0x49);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xAA, 0x4B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xAB, 0x48);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xAC, 0x43);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xAD, 0x40);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xAE, 0x50);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xAF, 0x44);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x54);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x4E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x4D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x4C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x41);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x47);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x53);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x3E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x51);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x3C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x3B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x46);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x45);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x55);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0x3D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x3F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x52);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x4A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x39);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x4F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x3A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x42);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x27);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x9e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x4e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x00);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xa9, 0x49);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xaa, 0x4b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xab, 0x48);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xac, 0x43);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xad, 0x40);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xae, 0x50);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xaf, 0x44);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x54);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x4e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x4d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x4c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x41);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x47);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x53);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x3e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x51);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x3c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x3b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0x46);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x45);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x55);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0x3d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0x3f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x52);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x4a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0x39);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x4f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0x3a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x42);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x27);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x56, 0x06);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x58, 0x80);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x59, 0x75);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5A, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x02);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5D, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0x20);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5F, 0x10);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5a, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5b, 0x02);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5c, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5d, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5e, 0x20);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5f, 0x10);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x60, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0x2E);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0x2e);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x62, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x63, 0x01);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x64, 0x43);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x65, 0x2D);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x65, 0x2d);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x66, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x67, 0x01);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x68, 0x44);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x78, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x00);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x2A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x2a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x2F);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x2f);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x08);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x65);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0xF8);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0xf8);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x28, 0x1A);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x28, 0x1a);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x29, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x1A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2D, 0x1A);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2a, 0x1a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2b, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2d, 0x1a);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x23);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x23);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0x80);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x00);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0xE0);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0xe0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x14, 0x60);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x16, 0xC0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x16, 0xc0);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0xF0);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x08);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0xf0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3a, 0x08);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x10);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x20);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x10);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x20);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x40);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x10);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x02);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x10);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x02);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x35, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x51, 0x00, 0xFF);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x51, 0x00, 0xff);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x53, 0x24);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x55, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x13);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3B, 0x03, 0x96, 0x1A, 0x04, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0x13);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3b, 0x03, 0x96, 0x1a, 0x04, 0x04);
>         if (ctx.accum_err)
>                 return ctx.accum_err;
>
> @@ -447,35 +447,35 @@ static int inx_hj110iz_init(struct boe_panel *boe)
>  {
>         struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x20);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0xD1);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0xC0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x20);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0xd1);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0xc0);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x87);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x4B);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x4b);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x63);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0E, 0x91);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x69);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0d, 0x63);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0e, 0x91);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0f, 0x69);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x94, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x95, 0xF5);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x96, 0xF5);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x9D, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x9E, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x95, 0xf5);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x96, 0xf5);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x9d, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x9e, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x69, 0x98);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x75, 0xA2);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x77, 0xB3);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x75, 0xa2);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x77, 0xb3);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x58, 0x43);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x24);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x24);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x91, 0x44);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x92, 0x4C);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x92, 0x4c);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x94, 0x86);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x60, 0x96);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0xD0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0xd0);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x63, 0x70);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xCA);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0xca);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0x03);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x01, 0x03);
> @@ -483,17 +483,17 @@ static int inx_hj110iz_init(struct boe_panel *boe)
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x03, 0x29);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x04, 0x22);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0x22);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0x0B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x1D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x1C);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0x0b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x07, 0x1d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x08, 0x1c);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x09, 0x05);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0A, 0x08);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0B, 0x09);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0C, 0x0A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x0C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0E, 0x0D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x0E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x10, 0x0F);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0a, 0x08);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0b, 0x09);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0c, 0x0a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0d, 0x0c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0e, 0x0d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0f, 0x0e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x10, 0x0f);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x11, 0x10);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x12, 0x11);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x13, 0x04);
> @@ -503,109 +503,109 @@ static int inx_hj110iz_init(struct boe_panel *boe)
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0x03);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x03);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x29);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1A, 0x22);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1B, 0x22);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1C, 0x0B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1D, 0x1D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1E, 0x1C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x05);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1a, 0x22);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1b, 0x22);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1c, 0x0b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1d, 0x1d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1e, 0x1c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1f, 0x05);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x08);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x21, 0x09);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x0A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x0C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x0D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x0E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0x0F);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x0a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x0c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x0d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x0e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0x0f);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x10);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x28, 0x11);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x29, 0x04);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x03);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2a, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2b, 0x03);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2F, 0x0A);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2f, 0x0a);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x30, 0x35);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x37, 0xA7);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x37, 0xa7);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x39, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x46);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3B, 0x32);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3D, 0x12);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3a, 0x46);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3b, 0x32);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3d, 0x12);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3F, 0x33);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3f, 0x33);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x40, 0x31);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x41, 0x40);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x42, 0x42);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x47, 0x77);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x48, 0x77);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4A, 0x45);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4B, 0x45);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4C, 0x14);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4a, 0x45);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4b, 0x45);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4c, 0x14);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4D, 0x21);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4E, 0x43);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4F, 0x65);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4d, 0x21);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4e, 0x43);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x4f, 0x65);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x55, 0x06);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x56, 0x06);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x58, 0x21);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x59, 0x70);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5A, 0x46);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x32);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x88);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0x00, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5F, 0x00);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7A, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7B, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7C, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7D, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7E, 0x20);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7F, 0x3C);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5a, 0x46);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5b, 0x32);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5c, 0x88);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5e, 0x00, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5f, 0x00);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7a, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7b, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7c, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7d, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7e, 0x20);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7f, 0x3c);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x80, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x81, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x82, 0x08);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x97, 0x02);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x10);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x55);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x55);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x23);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x05);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x65);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x55);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x27);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x65);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0x65);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE3, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0x65);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE6, 0x65);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE8, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xEA, 0x65);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xEB, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xEE, 0x65);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xEF, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xF0, 0x65);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x25);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x10);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd7, 0x55);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0x55);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd9, 0x23);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xda, 0x05);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdb, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdc, 0x65);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdd, 0x55);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x27);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdf, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe0, 0x65);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe1, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe2, 0x65);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe3, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe4, 0x65);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe5, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe6, 0x65);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe8, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xea, 0x65);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xeb, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xee, 0x65);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xef, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xf0, 0x65);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x25);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x05, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xF1, 0x10);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xf1, 0x10);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1E, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x46);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1e, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1f, 0x46);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x20, 0x32);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0x46);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x32);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3F, 0x80);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3f, 0x80);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x40, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x43, 0x00);
>
> @@ -615,139 +615,139 @@ static int inx_hj110iz_init(struct boe_panel *boe)
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x48, 0x46);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x49, 0x32);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x80);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5b, 0x80);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5D, 0x46);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0x32);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5c, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5d, 0x46);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5e, 0x32);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5F, 0x46);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5f, 0x46);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x60, 0x32);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0x46);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x62, 0x32);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x68, 0x0C);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x68, 0x0c);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x6C, 0x0D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x6E, 0x0D);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x6c, 0x0d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x6e, 0x0d);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x78, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x79, 0xC5);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7A, 0x0C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7B, 0xB0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x79, 0xc5);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7a, 0x0c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7b, 0xb0);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x26);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x26);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0xA1);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0xa1);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x02, 0x31);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0A, 0xF4);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0a, 0xf4);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x04, 0x50);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x06, 0x30);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0C, 0x16);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0D, 0x0D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0F, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0c, 0x16);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0d, 0x0d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x0f, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x11, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x12, 0x50);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x13, 0x40);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x14, 0x58);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x15, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x16, 0x10);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0xA0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0xa0);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x86);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x00);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x0E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1A, 0x31);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1B, 0x0D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1C, 0x29);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x0E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x31);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x0e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1a, 0x31);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1b, 0x0d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1c, 0x29);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2a, 0x0e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2b, 0x31);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1D, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1E, 0x62);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1F, 0x62);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1d, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1e, 0x62);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1f, 0x62);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2F, 0x06);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2f, 0x06);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x30, 0x62);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x31, 0x06);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x32, 0x7F);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x32, 0x7f);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x33, 0x11);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x34, 0x89);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x35, 0x67);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x39, 0x0B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x62);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3B, 0x06);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x04);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x89);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x4E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xA9, 0x3F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xAA, 0x3E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xAB, 0x3D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xAC, 0x3C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xAD, 0x3B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xAE, 0x3A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xAF, 0x39);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x38);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x27);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x11);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD1, 0x54);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x43);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x02);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x18);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x39, 0x0b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3a, 0x62);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3b, 0x06);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x89);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x4e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xa9, 0x3f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xaa, 0x3e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xab, 0x3d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xac, 0x3c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xad, 0x3b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xae, 0x3a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xaf, 0x39);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x38);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x27);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd0, 0x11);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd1, 0x54);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x43);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdf, 0x02);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x18);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x00, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x56, 0x06);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x58, 0x80);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x59, 0x78);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5A, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5B, 0x18);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5C, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5D, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5E, 0x20);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5F, 0x10);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5a, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5b, 0x18);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5c, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5d, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5e, 0x20);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x5f, 0x10);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x60, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0x1C);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x61, 0x1c);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x62, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x63, 0x01);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x64, 0x44);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x65, 0x1B);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x65, 0x1b);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x66, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x67, 0x01);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x68, 0x44);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x98, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x03);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x9B, 0xBE);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x03);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x9b, 0xbe);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xAB, 0x14);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x08);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x28);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xab, 0x14);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x08);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x28);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x2A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x2F);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x2a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x22, 0x2f);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x23, 0x08);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x24, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x25, 0x62);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0xF8);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x26, 0xf8);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x27, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x28, 0x1A);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x28, 0x1a);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x29, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2A, 0x1A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2B, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2D, 0x1A);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2a, 0x1a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2b, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x2d, 0x1a);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x64, 0x96);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x65, 0x10);
> @@ -755,94 +755,94 @@ static int inx_hj110iz_init(struct boe_panel *boe)
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x67, 0x96);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x68, 0x10);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x69, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x6A, 0x96);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x6B, 0x10);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x6C, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x6a, 0x96);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x6b, 0x10);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x6c, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x70, 0x92);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x71, 0x10);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x72, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x79, 0x96);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7A, 0x10);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x7a, 0x10);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x88, 0x96);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x89, 0x10);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xA2, 0x3F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xA3, 0x30);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xA4, 0xC0);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xA5, 0x03);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xa2, 0x3f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xa3, 0x30);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xa4, 0xc0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xa5, 0x03);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE8, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe8, 0x00);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x97, 0x3C);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x97, 0x3c);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x98, 0x02);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x99, 0x95);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x9A, 0x06);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x9B, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x9C, 0x0B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x9D, 0x0A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x9E, 0x90);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x9a, 0x06);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x9b, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x9c, 0x0b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x9d, 0x0a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x9e, 0x90);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x25);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x25);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x13, 0x02);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x14, 0xD7);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x02);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0xD7);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0xCF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x0F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1B, 0x5B);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x20);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x24, 0x00, 0x38, 0x00, 0x4C, 0x00, 0x5E, 0x00, 0x6F, 0x00, 0x7E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00, 0x8C, 0x00, 0xBE, 0x00, 0xE5, 0x01, 0x27, 0x01, 0x58, 0x01, 0xA8, 0x01, 0xE8, 0x01, 0xEA);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02, 0x28, 0x02, 0x71, 0x02, 0x9E, 0x02, 0xDA, 0x03, 0x00, 0x03, 0x31, 0x03, 0x40, 0x03, 0x51);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x03, 0x62, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9C, 0x03, 0xAA, 0x03, 0xB2);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x27, 0x00, 0x3D, 0x00, 0x52, 0x00, 0x64, 0x00, 0x75, 0x00, 0x84);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x00, 0x93, 0x00, 0xC5, 0x00, 0xEC, 0x01, 0x2C, 0x01, 0x5D, 0x01, 0xAC, 0x01, 0xEC, 0x01, 0xEE);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x02, 0x2B, 0x02, 0x73, 0x02, 0xA0, 0x02, 0xDB, 0x03, 0x01, 0x03, 0x31, 0x03, 0x41, 0x03, 0x51);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x03, 0x63, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9C, 0x03, 0xAA, 0x03, 0xB2);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x2A, 0x00, 0x40, 0x00, 0x56, 0x00, 0x68, 0x00, 0x7A, 0x00, 0x89);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x00, 0x98, 0x00, 0xC9, 0x00, 0xF1, 0x01, 0x30, 0x01, 0x61, 0x01, 0xB0, 0x01, 0xEF, 0x01, 0xF1);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x02, 0x2E, 0x02, 0x76, 0x02, 0xA3, 0x02, 0xDD, 0x03, 0x02, 0x03, 0x32, 0x03, 0x42, 0x03, 0x53);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x03, 0x66, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9C, 0x03, 0xAA, 0x03, 0xB2);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x21);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x24, 0x00, 0x38, 0x00, 0x4C, 0x00, 0x5E, 0x00, 0x6F, 0x00, 0x7E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00, 0x8C, 0x00, 0xBE, 0x00, 0xE5, 0x01, 0x27, 0x01, 0x58, 0x01, 0xA8, 0x01, 0xE8, 0x01, 0xEA);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02, 0x28, 0x02, 0x71, 0x02, 0x9E, 0x02, 0xDA, 0x03, 0x00, 0x03, 0x31, 0x03, 0x40, 0x03, 0x51);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x03, 0x62, 0x03, 0x77, 0x03, 0x90, 0x03, 0xAC, 0x03, 0xCA, 0x03, 0xDA);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x27, 0x00, 0x3D, 0x00, 0x52, 0x00, 0x64, 0x00, 0x75, 0x00, 0x84);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x00, 0x93, 0x00, 0xC5, 0x00, 0xEC, 0x01, 0x2C, 0x01, 0x5D, 0x01, 0xAC, 0x01, 0xEC, 0x01, 0xEE);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x02, 0x2B, 0x02, 0x73, 0x02, 0xA0, 0x02, 0xDB, 0x03, 0x01, 0x03, 0x31, 0x03, 0x41, 0x03, 0x51);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x03, 0x63, 0x03, 0x77, 0x03, 0x90, 0x03, 0xAC, 0x03, 0xCA, 0x03, 0xDA);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x2A, 0x00, 0x40, 0x00, 0x56, 0x00, 0x68, 0x00, 0x7A, 0x00, 0x89);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x00, 0x98, 0x00, 0xC9, 0x00, 0xF1, 0x01, 0x30, 0x01, 0x61, 0x01, 0xB0, 0x01, 0xEF, 0x01, 0xF1);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x02, 0x2E, 0x02, 0x76, 0x02, 0xA3, 0x02, 0xDD, 0x03, 0x02, 0x03, 0x32, 0x03, 0x42, 0x03, 0x53);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0x03, 0x66, 0x03, 0x77, 0x03, 0x90, 0x03, 0xAC, 0x03, 0xCA, 0x03, 0xDA);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0xF0);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3A, 0x08);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x10);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x01);
> -
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x20);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x14, 0xd7);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdb, 0x02);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdc, 0xd7);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x17, 0xcf);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x19, 0x0f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x1b, 0x5b);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x20);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x24, 0x00, 0x38, 0x00, 0x4c, 0x00, 0x5e, 0x00, 0x6f, 0x00, 0x7e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x00, 0x8c, 0x00, 0xbe, 0x00, 0xe5, 0x01, 0x27, 0x01, 0x58, 0x01, 0xa8, 0x01, 0xe8, 0x01, 0xea);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02, 0x28, 0x02, 0x71, 0x02, 0x9e, 0x02, 0xda, 0x03, 0x00, 0x03, 0x31, 0x03, 0x40, 0x03, 0x51);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x03, 0x62, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9c, 0x03, 0xaa, 0x03, 0xb2);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x27, 0x00, 0x3d, 0x00, 0x52, 0x00, 0x64, 0x00, 0x75, 0x00, 0x84);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x00, 0x93, 0x00, 0xc5, 0x00, 0xec, 0x01, 0x2c, 0x01, 0x5d, 0x01, 0xac, 0x01, 0xec, 0x01, 0xee);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x02, 0x2b, 0x02, 0x73, 0x02, 0xa0, 0x02, 0xdb, 0x03, 0x01, 0x03, 0x31, 0x03, 0x41, 0x03, 0x51);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x03, 0x63, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9c, 0x03, 0xaa, 0x03, 0xb2);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x2a, 0x00, 0x40, 0x00, 0x56, 0x00, 0x68, 0x00, 0x7a, 0x00, 0x89);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x00, 0x98, 0x00, 0xc9, 0x00, 0xf1, 0x01, 0x30, 0x01, 0x61, 0x01, 0xb0, 0x01, 0xef, 0x01, 0xf1);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x02, 0x2e, 0x02, 0x76, 0x02, 0xa3, 0x02, 0xdd, 0x03, 0x02, 0x03, 0x32, 0x03, 0x42, 0x03, 0x53);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0x03, 0x66, 0x03, 0x75, 0x03, 0x89, 0x03, 0x9c, 0x03, 0xaa, 0x03, 0xb2);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x21);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x24, 0x00, 0x38, 0x00, 0x4c, 0x00, 0x5e, 0x00, 0x6f, 0x00, 0x7e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x00, 0x8c, 0x00, 0xbe, 0x00, 0xe5, 0x01, 0x27, 0x01, 0x58, 0x01, 0xa8, 0x01, 0xe8, 0x01, 0xea);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02, 0x28, 0x02, 0x71, 0x02, 0x9e, 0x02, 0xda, 0x03, 0x00, 0x03, 0x31, 0x03, 0x40, 0x03, 0x51);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x03, 0x62, 0x03, 0x77, 0x03, 0x90, 0x03, 0xac, 0x03, 0xca, 0x03, 0xda);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x27, 0x00, 0x3d, 0x00, 0x52, 0x00, 0x64, 0x00, 0x75, 0x00, 0x84);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x00, 0x93, 0x00, 0xc5, 0x00, 0xec, 0x01, 0x2c, 0x01, 0x5d, 0x01, 0xac, 0x01, 0xec, 0x01, 0xee);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x02, 0x2b, 0x02, 0x73, 0x02, 0xa0, 0x02, 0xdb, 0x03, 0x01, 0x03, 0x31, 0x03, 0x41, 0x03, 0x51);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x03, 0x63, 0x03, 0x77, 0x03, 0x90, 0x03, 0xac, 0x03, 0xca, 0x03, 0xda);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x2a, 0x00, 0x40, 0x00, 0x56, 0x00, 0x68, 0x00, 0x7a, 0x00, 0x89);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x00, 0x98, 0x00, 0xc9, 0x00, 0xf1, 0x01, 0x30, 0x01, 0x61, 0x01, 0xb0, 0x01, 0xef, 0x01, 0xf1);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x02, 0x2e, 0x02, 0x76, 0x02, 0xa3, 0x02, 0xdd, 0x03, 0x02, 0x03, 0x32, 0x03, 0x42, 0x03, 0x53);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0x03, 0x66, 0x03, 0x77, 0x03, 0x90, 0x03, 0xac, 0x03, 0xca, 0x03, 0xda);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0xf0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3a, 0x08);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x10);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x01);
> +
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x20);
>
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x18, 0x40);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x10);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x10);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x02);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFF, 0x10);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x02);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xff, 0x10);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xFB, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xfb, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x01);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x35, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3B, 0x03, 0xAE, 0x1A, 0x04, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0x3b, 0x03, 0xae, 0x1a, 0x04, 0x04);
>         if (ctx.accum_err)
>                 return ctx.accum_err;
>
> @@ -867,296 +867,296 @@ static int boe_init(struct boe_panel *boe)
>  {
>         struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x05);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0xE5);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x52);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x88);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x04);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x03);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x8B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x1A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x0F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x0C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x02);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x0C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x02);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x26);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x26);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x26);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x26);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x03);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x03);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE6, 0x04);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x04);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x09);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x09);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x0A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x0A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x0B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x0B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x0C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x0C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x05);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x05);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD4, 0x06);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x06);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x07);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x07);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x08);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x08);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x02);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x0D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x17);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x26);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x31);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x1C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0x2C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x33);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x31);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x37);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x37);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x37);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x39);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x2E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0x2F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCF, 0x2F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x07);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x0D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD4, 0x17);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x26);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x31);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x3F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x3F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x3F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x3F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x37);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x37);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x37);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x39);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x2E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x2F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x2F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0x07);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x03);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x0B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x07);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x2A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x2A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x43);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x07);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0xC0);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x0D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x06);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0xA5);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0xA5);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x0F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x32);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x07);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x0F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x25);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x39);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x72);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x97);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xDC);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x22);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xA4);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x2B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x2F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xA9);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x25);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x61);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x97);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB2);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xCD);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xD9);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE7);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF4);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x08);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x04);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x05);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x11);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x24);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x39);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x72);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x98);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xDC);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x23);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xA6);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x2C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x30);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xAA);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x26);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x62);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x9B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB5);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xCF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xDB);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE8);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF5);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x09);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x04);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x16);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x24);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x3B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x73);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x99);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xE0);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x26);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xAD);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x36);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x3A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xAE);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x2A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x66);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x9E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB8);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xD1);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xDD);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE9);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF6);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x0A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x0F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x25);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x39);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x72);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x97);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xDC);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x22);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xA4);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x2B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x2F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xA9);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x25);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x61);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x97);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB2);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xCD);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xD9);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE7);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF4);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x0B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x04);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x05);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x11);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x24);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x39);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x72);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x98);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xDC);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x23);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xA6);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x2C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x30);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xAA);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x26);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x62);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x9B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB5);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xCF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xDB);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE8);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF5);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x0C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x04);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x02);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x16);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x24);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB5, 0x3B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB6, 0x4F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB7, 0x73);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x99);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0xE0);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x26);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBB, 0xAD);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x36);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x3A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0xAE);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0x2A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x66);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x9E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0xB8);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0xD1);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0xDD);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0xE9);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0xF6);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0xFA);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0xFC);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x16);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0xAF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB3, 0x08);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x04);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB8, 0x68);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x05);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0xe5);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x52);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x88);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x03);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x8b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0x1a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x0f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0x0c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x02);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0x0c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x02);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe0, 0x26);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe1, 0x26);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdc, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdd, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0x26);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0x26);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x03);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x03);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe6, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0x09);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x09);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0x0a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd9, 0x0a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0x0b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x0b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd6, 0x0c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd7, 0x0c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x05);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x05);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd4, 0x06);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd5, 0x06);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x07);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x07);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x08);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdf, 0x08);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x02);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x0d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0x17);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x26);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0x31);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x1c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0x2c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0x33);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x31);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x37);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x37);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x37);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0x39);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0x2e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0x2f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcf, 0x2f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd0, 0x07);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x0d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd4, 0x17);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd5, 0x26);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd6, 0x31);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd7, 0x3f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0x3f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd9, 0x3f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xda, 0x3f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdb, 0x37);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdc, 0x37);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdd, 0x37);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x39);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdf, 0x2e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe0, 0x2f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe1, 0x2f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe2, 0x07);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x03);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x0b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x07);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x2a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x2a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x43);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x07);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe4, 0xc0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe5, 0x0d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x06);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0xa5);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0xa5);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0x0f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd5, 0x32);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x07);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x0f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x25);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x39);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x4e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x72);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x97);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0xdc);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x22);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0xa4);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x2b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x2f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0xa9);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0x25);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x61);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x97);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0xb2);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0xcd);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0xd9);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0xe7);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0xf4);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0xfa);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0xfc);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x16);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0xaf);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x08);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x05);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x11);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x24);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x39);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x4f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x72);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x98);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0xdc);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x23);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0xa6);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x2c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x30);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0xaa);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0x26);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x62);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x9b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0xb5);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0xcf);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0xdb);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0xe8);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0xf5);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0xfa);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0xfc);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x16);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0xaf);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x09);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x16);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x24);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x3b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x4f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x73);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x99);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0xe0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x26);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0xad);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x36);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x3a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0xae);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0x2a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x66);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x9e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0xb8);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0xd1);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0xdd);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0xe9);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0xf6);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0xfa);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0xfc);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x16);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0xaf);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x0a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x0f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x25);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x39);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x4e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x72);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x97);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0xdc);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x22);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0xa4);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x2b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x2f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0xa9);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0x25);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x61);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x97);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0xb2);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0xcd);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0xd9);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0xe7);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0xf4);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0xfa);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0xfc);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x16);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0xaf);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x0b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x05);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x11);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x24);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x39);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x4f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x72);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x98);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0xdc);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x23);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0xa6);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x2c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x30);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0xaa);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0x26);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x62);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x9b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0xb5);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0xcf);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0xdb);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0xe8);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0xf5);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0xfa);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0xfc);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x16);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0xaf);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x0c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x02);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x16);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x24);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb5, 0x3b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb6, 0x4f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb7, 0x73);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x99);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0xe0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x26);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbb, 0xad);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x36);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x3a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0xae);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0x2a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x66);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x9e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0xb8);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0xd1);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0xdd);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0xe9);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0xf6);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0xfa);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0xfc);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x16);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0xaf);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb3, 0x08);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb8, 0x68);
>         if (ctx.accum_err)
>                 return ctx.accum_err;
>
> @@ -1192,47 +1192,47 @@ static int auo_b101uan08_3_init(struct boe_panel *boe)
>
>         msleep(24);
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x48);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x48);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x47);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x47);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x46);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x46);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0x45);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x45);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x64);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x64);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x4F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x4F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x40);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x40);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0x66);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCF, 0x66);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x4F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD1, 0x4F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x41);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x41);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD4, 0x48);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x48);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x47);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x47);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x46);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x46);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x45);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x45);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x64);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x64);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x4F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x4F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x40);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x40);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0x66);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE3, 0x66);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0x4F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x4F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE6, 0x41);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x41);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x48);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x48);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0x47);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x47);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0x46);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x46);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0x45);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0x45);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x64);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x64);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x4f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x4f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0x40);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0x40);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0x66);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcf, 0x66);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd0, 0x4f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd1, 0x4f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x41);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x41);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd4, 0x48);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd5, 0x48);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd6, 0x47);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd7, 0x47);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0x46);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd9, 0x46);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xda, 0x45);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdb, 0x45);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdc, 0x64);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdd, 0x64);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x4f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdf, 0x4f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe0, 0x40);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe1, 0x40);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe2, 0x66);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe3, 0x66);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe4, 0x4f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe5, 0x4f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe6, 0x41);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0x41);
>         if (ctx.accum_err)
>                 return ctx.accum_err;
>
> @@ -1245,95 +1245,95 @@ static int starry_qfh032011_53g_init(struct boe_panel *boe)
>  {
>         struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x4F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x40);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x40);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0x40);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x40);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x4D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x52);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x51);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x5D);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0x5B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCF, 0x4B);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x49);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD1, 0x47);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x45);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x41);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x50);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x40);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x40);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x40);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x40);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x4E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x52);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x51);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x5E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0x5C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE3, 0x4C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0x4A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x48);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE6, 0x46);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x42);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x03);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0x03);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x44);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x07);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x05);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x42);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x3E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCF, 0x60);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x04);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x04);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD4, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x03);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x04);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE4, 0xF0);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE5, 0x0A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x08);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x08);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x10);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB0, 0x02);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC1, 0x0A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC2, 0x20);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC3, 0x24);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC4, 0x23);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC5, 0x29);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC6, 0x23);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x1C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x19);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x17);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCA, 0x17);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x18);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x1A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCD, 0x1E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCE, 0x20);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCF, 0x23);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x07);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD1, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x0A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD4, 0x13);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x1C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x1A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD7, 0x13);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x17);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD9, 0x1C);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDA, 0x19);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDB, 0x17);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDC, 0x17);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDD, 0x18);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDE, 0x1A);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xDF, 0x1E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x20);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE1, 0x23);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE2, 0x07);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x4f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0x40);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x40);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0x40);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0x40);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x4d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x52);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x51);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0x5d);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0x5b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcf, 0x4b);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd0, 0x49);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd1, 0x47);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x45);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x41);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd7, 0x50);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0x40);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd9, 0x40);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xda, 0x40);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdb, 0x40);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdc, 0x4e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdd, 0x52);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x51);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe1, 0x5e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe2, 0x5c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe3, 0x4c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe4, 0x4a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe5, 0x48);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe6, 0x46);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0x42);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x03);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0x03);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0x44);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x07);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x05);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x42);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0x3e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcf, 0x60);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd4, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd5, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd6, 0x03);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd7, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd9, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdb, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe4, 0xf0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe5, 0x0a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0x08);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0x08);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0x10);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0x02);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc1, 0x0a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc2, 0x20);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc3, 0x24);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc4, 0x23);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc5, 0x29);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc6, 0x23);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0x1c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x19);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x17);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xca, 0x17);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x18);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0x1a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcd, 0x1e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xce, 0x20);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcf, 0x23);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd0, 0x07);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd1, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x0a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd4, 0x13);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd5, 0x1c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd6, 0x1a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd7, 0x13);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0x17);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd9, 0x1c);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xda, 0x19);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdb, 0x17);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdc, 0x17);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdd, 0x18);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xde, 0x1a);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xdf, 0x1e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe0, 0x20);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe1, 0x23);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe2, 0x07);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0X11);
>         if (ctx.accum_err)
>                 return ctx.accum_err;
> @@ -1353,67 +1353,67 @@ static int starry_himax83102_j02_init(struct boe_panel *boe)
>  {
>         struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
>
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB9, 0x83, 0x10, 0x21, 0x55, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x2C, 0xB5, 0xB5, 0x31, 0xF1, 0x31, 0xD7, 0x2F, 0x36, 0x36, 0x36, 0x36, 0x1A, 0x8B, 0x11,
> -               0x65, 0x00, 0x88, 0xFA, 0xFF, 0xFF, 0x8F, 0xFF, 0x08, 0x74, 0x33);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB2, 0x00, 0x47, 0xB0, 0x80, 0x00, 0x12, 0x72, 0x3C, 0xA3, 0x03, 0x03, 0x00, 0x00, 0x88, 0xF5);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x63, 0x5C, 0x63, 0x5C, 0x01, 0x9E);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xCD);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x84);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBC, 0x1B, 0x04);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBE, 0x20);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBF, 0xFC, 0xC4);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC0, 0x36, 0x36, 0x22, 0x11, 0x22, 0xA0, 0x61, 0x08, 0xF5, 0x03);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xCC);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC7, 0x80);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xC6);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC8, 0x97);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xC9, 0x00, 0x1E, 0x13, 0x88, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x08, 0x13, 0x07, 0x00, 0x0F, 0x33);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCC, 0x02);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xC4);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD0, 0x03);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD1, 0x37, 0x06, 0x00, 0x02, 0x04, 0x0C, 0xFF);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x1F, 0x11, 0x1F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x37, 0x47, 0x34, 0x3B, 0x12, 0x12, 0x03,
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x83, 0x10, 0x21, 0x55, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x2c, 0xb5, 0xb5, 0x31, 0xf1, 0x31, 0xd7, 0x2f, 0x36, 0x36, 0x36, 0x36, 0x1a, 0x8b, 0x11,
> +               0x65, 0x00, 0x88, 0xfa, 0xff, 0xff, 0x8f, 0xff, 0x08, 0x74, 0x33);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x00, 0x47, 0xb0, 0x80, 0x00, 0x12, 0x72, 0x3c, 0xa3, 0x03, 0x03, 0x00, 0x00, 0x88, 0xf5);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x63, 0x5c, 0x63, 0x5c, 0x01, 0x9e);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xcd);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x84);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x1b, 0x04);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0x20);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0xfc, 0xc4);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x36, 0x36, 0x22, 0x11, 0x22, 0xa0, 0x61, 0x08, 0xf5, 0x03);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xcc);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0x80);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xc6);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x97);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00, 0x1e, 0x13, 0x88, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x08, 0x13, 0x07, 0x00, 0x0f, 0x33);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0x02);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xc4);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd0, 0x03);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd1, 0x37, 0x06, 0x00, 0x02, 0x04, 0x0c, 0xff);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x1f, 0x11, 0x1f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x37, 0x47, 0x34, 0x3b, 0x12, 0x12, 0x03,
>                 0x03, 0x32, 0x10, 0x10, 0x00, 0x10, 0x32, 0x10, 0x08, 0x00, 0x08, 0x32, 0x17, 0x94, 0x07, 0x94, 0x00, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD5, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x40, 0x40, 0x1A, 0x1A,
> -               0x1B, 0x1B, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x20, 0x21, 0x28, 0x29, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD6, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x40, 0x40, 0x19, 0x19, 0x1A, 0x1A,
> -               0x1B, 0x1B, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x29, 0x28, 0x21, 0x20, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA,
> -               0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0, 0xAA, 0xBA, 0xEA, 0xAA, 0xAA, 0xA0);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE0, 0x00, 0x09, 0x14, 0x1E, 0x26, 0x48, 0x61, 0x67, 0x6C, 0x67, 0x7D, 0x7F, 0x80, 0x8B, 0x87, 0x8F, 0x98, 0xAB,
> -               0xAB, 0x55, 0x5C, 0x68, 0x73, 0x00, 0x09, 0x14, 0x1E, 0x26, 0x48, 0x61, 0x67, 0x6C, 0x67, 0x7D, 0x7F, 0x80, 0x8B, 0x87, 0x8F, 0x98, 0xAB, 0xAB, 0x55, 0x5C, 0x68, 0x73);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x0E, 0x10, 0x10, 0x21, 0x2B, 0x9A, 0x02, 0x54, 0x9A, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x12, 0x05, 0x02, 0x02, 0x10);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB1, 0x01, 0xBF, 0x11);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xCB, 0x86);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD2, 0x3C, 0xFA);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD3, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0C, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0x02, 0x00, 0x28, 0x01, 0x7E, 0x0F, 0x7E, 0x10, 0xA0, 0x00, 0x00, 0x20, 0x40, 0x50, 0x40);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x02);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0xFF, 0xFF, 0xBF, 0xFE, 0xAA, 0xA0, 0xFF, 0xFF, 0xBF, 0xFE, 0xAA, 0xA0);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE7, 0xFE, 0x04, 0xFE, 0x04, 0xFE, 0x04, 0x03, 0x03, 0x03, 0x26, 0x00, 0x26, 0x81, 0x02, 0x40, 0x00, 0x20, 0x9E, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x03);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xC6);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xB4, 0x03, 0xFF, 0xF8);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xD8, 0x00, 0x2A, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA8,
> -               0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA8, 0x00, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x00);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xC4);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x96);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x01);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0xC5);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBA, 0x4F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xE9, 0x3F);
> -       mipi_dsi_dcs_write_seq_multi(&ctx, 0xBD, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd5, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x40, 0x40, 0x1a, 0x1a,
> +               0x1b, 0x1b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x20, 0x21, 0x28, 0x29, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd6, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x40, 0x40, 0x19, 0x19, 0x1a, 0x1a,
> +               0x1b, 0x1b, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x29, 0x28, 0x21, 0x20, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0xaa, 0xba, 0xea, 0xaa, 0xaa, 0xa0, 0xaa, 0xba, 0xea, 0xaa, 0xaa, 0xa0, 0xaa, 0xba, 0xea, 0xaa,
> +               0xaa, 0xa0, 0xaa, 0xba, 0xea, 0xaa, 0xaa, 0xa0, 0xaa, 0xba, 0xea, 0xaa, 0xaa, 0xa0, 0xaa, 0xba, 0xea, 0xaa, 0xaa, 0xa0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe0, 0x00, 0x09, 0x14, 0x1e, 0x26, 0x48, 0x61, 0x67, 0x6c, 0x67, 0x7d, 0x7f, 0x80, 0x8b, 0x87, 0x8f, 0x98, 0xab,
> +               0xab, 0x55, 0x5c, 0x68, 0x73, 0x00, 0x09, 0x14, 0x1e, 0x26, 0x48, 0x61, 0x67, 0x6c, 0x67, 0x7d, 0x7f, 0x80, 0x8b, 0x87, 0x8f, 0x98, 0xab, 0xab, 0x55, 0x5c, 0x68, 0x73);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0x0e, 0x10, 0x10, 0x21, 0x2b, 0x9a, 0x02, 0x54, 0x9a, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x12, 0x05, 0x02, 0x02, 0x10);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x01, 0xbf, 0x11);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x86);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x3c, 0xfa);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0c, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0x02, 0x00, 0x28, 0x01, 0x7e, 0x0f, 0x7e, 0x10, 0xa0, 0x00, 0x00, 0x20, 0x40, 0x50, 0x40);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x02);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0xff, 0xff, 0xbf, 0xfe, 0xaa, 0xa0, 0xff, 0xff, 0xbf, 0xfe, 0xaa, 0xa0);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0xfe, 0x04, 0xfe, 0x04, 0xfe, 0x04, 0x03, 0x03, 0x03, 0x26, 0x00, 0x26, 0x81, 0x02, 0x40, 0x00, 0x20, 0x9e, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x03);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xc6);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x03, 0xff, 0xf8);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0x00, 0x2a, 0xaa, 0xa8, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8,
> +               0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, 0x00, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x00);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xc4);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x96);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x01);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xc5);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x4f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f);
> +       mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x00);
>         mipi_dsi_dcs_write_seq_multi(&ctx, 0x11);
>         if (ctx.accum_err)
>                 return ctx.accum_err;
> --
> 2.44.0.769.g3c40516874-goog
>


-- 
With best wishes
Dmitry

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

* Re: [PATCH v2 0/8] drm/mipi-dsi: Reduce bloat and add funcs for cleaner init seqs
  2024-04-26 23:58 [PATCH v2 0/8] drm/mipi-dsi: Reduce bloat and add funcs for cleaner init seqs Douglas Anderson
                   ` (7 preceding siblings ...)
  2024-04-26 23:58 ` [PATCH v2 8/8] drm/panel: boe-tv101wum-nl6: Convert hex to lowercase Douglas Anderson
@ 2024-04-29  9:20 ` Jani Nikula
  8 siblings, 0 replies; 23+ messages in thread
From: Jani Nikula @ 2024-04-29  9:20 UTC (permalink / raw)
  To: Douglas Anderson, dri-devel
  Cc: Linus Walleij, lvzhaoxiong, Hsin-Yi Wang,
	Javier Martinez Canillas, Neil Armstrong, Joel Selvaraj,
	Dmitry Baryshkov, Cong Yang, Sam Ravnborg, Douglas Anderson,
	Daniel Vetter, David Airlie, Jessica Zhang, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, linux-kernel

On Fri, 26 Apr 2024, Douglas Anderson <dianders@chromium.org> wrote:
> The consensus of many DRM folks is that we want to move away from DSI
> drivers defining tables of init commands. Instead, we want to move to
> init functions that can use common DRM functions. The issue thus far
> has been that using the macros mipi_dsi_generic_write_seq() and
> mipi_dsi_dcs_write_seq() bloats the driver using them.
>
> While trying to solve bloat, we realized that the majority of the it
> was easy to solve. This series solves the bloat for existing drivers
> by moving the printout outside of the macro.
>
> During discussion of my v1 patch to fix the bloat [1], we also decided
> that we really want to change the way that drivers deal with init
> sequences to make it clearer. In addition to being cleaner, a side
> effect of moving drivers to the new style reduces bloat _even more_.
>
> This series also contains a few minor fixes / cleanups that I found
> along the way.

FWIW, I like the general approach taken here. Thanks!

BR,
Jani.


-- 
Jani Nikula, Intel

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

* Re: [PATCH v2 4/8] drm/mipi-dsi: Introduce mipi_dsi_*_write_seq_multi()
  2024-04-26 23:58 ` [PATCH v2 4/8] drm/mipi-dsi: Introduce mipi_dsi_*_write_seq_multi() Douglas Anderson
  2024-04-27  6:32   ` Sam Ravnborg
@ 2024-04-29  9:38   ` Neil Armstrong
  2024-04-29 14:26     ` Doug Anderson
  1 sibling, 1 reply; 23+ messages in thread
From: Neil Armstrong @ 2024-04-29  9:38 UTC (permalink / raw)
  To: Douglas Anderson, dri-devel
  Cc: Linus Walleij, lvzhaoxiong, Jani Nikula, Hsin-Yi Wang,
	Javier Martinez Canillas, Joel Selvaraj, Dmitry Baryshkov,
	Cong Yang, Sam Ravnborg, Daniel Vetter, David Airlie,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	linux-kernel

Hello Mister Anderson,

On 27/04/2024 01:58, Douglas Anderson wrote:
> The current mipi_dsi_*_write_seq() macros are non-intutitive because
> they contain a hidden "return" statement that will return out of the
> _caller_ of the macro. Let's mark them as deprecated and instead
> introduce some new macros that are more intuitive.
> 
> These new macros are less optimal when an error occurs but should
> behave more optimally when there is no error. Specifically these new
> macros cause smaller code to get generated and the code size savings
> (less to fetch from RAM, less cache space used, less RAM used) are
> important. Since the error case isn't something we need to optimize
> for and these new macros are easier to understand and more flexible,
> they should be used.
> 
> After converting to use these new functions, one example shows some
> nice savings while also being easier to understand.
> 
> $ scripts/bloat-o-meter \
>    ...after/panel-novatek-nt36672e.ko \
>    ...ctx/panel-novatek-nt36672e.ko
> add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-988 (-988)
> Function                                     old     new   delta
> nt36672e_1080x2408_60hz_init                6236    5248    -988
> Total: Before=10651, After=9663, chg -9.28%
> 
> Signed-off-by: Douglas Anderson <dianders@chromium.org>
> ---
> Right now this patch introduces two new functions in
> drm_mipi_dsi.c. Alternatively we could have changed the prototype of
> the "chatty" functions and made the deprecated macros adapt to the new
> prototype. While this sounds nice, it bloated callers of the
> deprecated functioin a bit because it caused the compiler to emit less
> optimal code. It doesn't seem terrible to add two more functions, so I
> went that way.
> 
> Changes in v2:
> - New
> 
>   drivers/gpu/drm/drm_mipi_dsi.c | 56 +++++++++++++++++++++++++++++++++
>   include/drm/drm_mipi_dsi.h     | 57 ++++++++++++++++++++++++++++++++++
>   2 files changed, 113 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c
> index 1e062eda3b88..b7c75a4396e6 100644
> --- a/drivers/gpu/drm/drm_mipi_dsi.c
> +++ b/drivers/gpu/drm/drm_mipi_dsi.c
> @@ -792,6 +792,34 @@ int mipi_dsi_generic_write_chatty(struct mipi_dsi_device *dsi,
>   }
>   EXPORT_SYMBOL(mipi_dsi_generic_write_chatty);
>   

<snip>

>   };
>   
> +/**
> + * struct mipi_dsi_multi_context - Context to call multiple MIPI DSI funcs in a row
> + * @dsi: Pointer to the MIPI DSI device
> + * @accum_err: Storage for the accumulated error over the multiple calls. Init
> + *	to 0. If a function encounters an error then the error code will be
> + *	stored here. If you call a function and this points to a non-zero
> + *	value then the function will be a noop. This allows calling a function
> + *	many times in a row and just checking the error at the end to see if
> + *	any of them failed.
> + */
> +
> +struct mipi_dsi_multi_context {
> +	struct mipi_dsi_device *dsi;
> +	int accum_err;
> +};

I like the design, but having a context struct seems over-engineered while we could pass
a single int over without encapsulating it with mipi_dsi_multi_context.

void mipi_dsi_dcs_write_buffer_multi(struct mipi_dsi_multi_context *ctx,
				     const void *data, size_t len);
vs
void mipi_dsi_dcs_write_buffer_multi(struct mipi_dsi_device *dsi, int *accum_err,
				     const void *data, size_t len);

is the same, and it avoids having to declare a mipi_dsi_multi_context and set ctx->dsi,
and I'll find it much easier to migrate, just add a &ret and make sure ret is initialized to 0.


<snip>


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

* Re: [PATCH v2 4/8] drm/mipi-dsi: Introduce mipi_dsi_*_write_seq_multi()
  2024-04-27  6:32   ` Sam Ravnborg
@ 2024-04-29 14:13     ` Doug Anderson
  0 siblings, 0 replies; 23+ messages in thread
From: Doug Anderson @ 2024-04-29 14:13 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: dri-devel, Linus Walleij, lvzhaoxiong, Jani Nikula, Hsin-Yi Wang,
	Javier Martinez Canillas, Neil Armstrong, Joel Selvaraj,
	Dmitry Baryshkov, Cong Yang, Daniel Vetter, David Airlie,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	linux-kernel

Hi,

On Fri, Apr 26, 2024 at 11:33 PM Sam Ravnborg <sam@ravnborg.org> wrote:
>
> > ---
> > Right now this patch introduces two new functions in
> > drm_mipi_dsi.c. Alternatively we could have changed the prototype of
> > the "chatty" functions and made the deprecated macros adapt to the new
> > prototype. While this sounds nice, it bloated callers of the
> > deprecated functioin a bit because it caused the compiler to emit less
> > optimal code. It doesn't seem terrible to add two more functions, so I
> > went that way.
> The concern here is when it will be cleaned up. As a minimum please
> consider adding an item to todo.rst that details what should be done
> to get rid of the now obsolete chatty functions so someone can pick it
> up.

Sure, I can add something to do TODO. Do folks agree that's the
preferred way to do things? A few thoughts I had:

1. In theory it could be useful to keep _both_ the "chatty" and
"multi" variants of the functions. In at least a few places the
"multi" variant was awkward. The resulting auo_kd101n80_45na_init()
[1] looked awkward. If I was writing just this function I would have
chosen an API more like the "chatty" one, but since I was trying to
make all the init functions similar I kept them all using the "multi"
API. Does it make sense to keep both long term?

[1] https://lore.kernel.org/all/20240426165839.v2.7.Ib5030ab5cd41b4e08b1958bd7e51571725723008@changeid/

2. Going completely the opposite direction, we could also not bother
saving as much space today and _force_ everyone to move to the new
"multi" API to get the full space savings.


So I guess three options: a) leave my patches the way they are and add
a TODO, b) Keep the "chatty" variants long term and remove my
"after-the-cut", or c) Don't get as much space savings today but don't
introduce a new exported function. Opinions?


> > @@ -792,6 +792,34 @@ int mipi_dsi_generic_write_chatty(struct mipi_dsi_device *dsi,
> >  }
> >  EXPORT_SYMBOL(mipi_dsi_generic_write_chatty);
> >
> > +/**
> > + * mipi_dsi_generic_write_multi() - mipi_dsi_generic_write_chatty() w/ accum_err
> > + * @ctx: Context for multiple DSI transactions
> > + * @payload: buffer containing the payload
> > + * @size: size of payload buffer
> > + *
> > + * Like mipi_dsi_generic_write_chatty() but deals with errors in a way that
> > + * makes it convenient to make several calls in a row.
> > + */
> > +void mipi_dsi_generic_write_multi(struct mipi_dsi_multi_context *ctx,
> > +                               const void *payload, size_t size)
> > +{
> > +     struct mipi_dsi_device *dsi = ctx->dsi;
> > +     struct device *dev = &dsi->dev;
> > +     ssize_t ret;
> > +
> > +     if (ctx->accum_err)
> > +             return;
> > +
> > +     ret = mipi_dsi_generic_write(dsi, payload, size);
> > +     if (ret < 0) {
> > +             ctx->accum_err = ret;
> > +             dev_err_ratelimited(dev, "sending generic data %*ph failed: %d\n",
> > +                                 (int)size, payload, ctx->accum_err);
> > +     }
> I see no point in using ratelimited and then change it in the next
> patch.

Sure, I'll re-order patches.


> > @@ -197,6 +197,22 @@ struct mipi_dsi_device {
> >       struct drm_dsc_config *dsc;
> >  };
> >
> > +/**
> > + * struct mipi_dsi_multi_context - Context to call multiple MIPI DSI funcs in a row
> > + * @dsi: Pointer to the MIPI DSI device
> > + * @accum_err: Storage for the accumulated error over the multiple calls. Init
> > + *   to 0. If a function encounters an error then the error code will be
> > + *   stored here. If you call a function and this points to a non-zero
> > + *   value then the function will be a noop. This allows calling a function
> > + *   many times in a row and just checking the error at the end to see if
> > + *   any of them failed.
> > + */
> > +
> > +struct mipi_dsi_multi_context {
> > +     struct mipi_dsi_device *dsi;
> > +     int accum_err;
> > +};
> Inline comments is - I think - preferred.

Sure, I'll update in the next version.

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

* Re: [PATCH v2 4/8] drm/mipi-dsi: Introduce mipi_dsi_*_write_seq_multi()
  2024-04-29  9:38   ` Neil Armstrong
@ 2024-04-29 14:26     ` Doug Anderson
  2024-04-29 15:39       ` Jani Nikula
  2024-05-06  6:21       ` Linus Walleij
  0 siblings, 2 replies; 23+ messages in thread
From: Doug Anderson @ 2024-04-29 14:26 UTC (permalink / raw)
  To: neil.armstrong
  Cc: dri-devel, Linus Walleij, lvzhaoxiong, Jani Nikula, Hsin-Yi Wang,
	Javier Martinez Canillas, Joel Selvaraj, Dmitry Baryshkov,
	Cong Yang, Sam Ravnborg, Daniel Vetter, David Airlie,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	linux-kernel

Hi,

On Mon, Apr 29, 2024 at 2:38 AM Neil Armstrong
<neil.armstrong@linaro.org> wrote:
>
> > +/**
> > + * struct mipi_dsi_multi_context - Context to call multiple MIPI DSI funcs in a row
> > + * @dsi: Pointer to the MIPI DSI device
> > + * @accum_err: Storage for the accumulated error over the multiple calls. Init
> > + *   to 0. If a function encounters an error then the error code will be
> > + *   stored here. If you call a function and this points to a non-zero
> > + *   value then the function will be a noop. This allows calling a function
> > + *   many times in a row and just checking the error at the end to see if
> > + *   any of them failed.
> > + */
> > +
> > +struct mipi_dsi_multi_context {
> > +     struct mipi_dsi_device *dsi;
> > +     int accum_err;
> > +};
>
> I like the design, but having a context struct seems over-engineered while we could pass
> a single int over without encapsulating it with mipi_dsi_multi_context.
>
> void mipi_dsi_dcs_write_buffer_multi(struct mipi_dsi_multi_context *ctx,
>                                      const void *data, size_t len);
> vs
> void mipi_dsi_dcs_write_buffer_multi(struct mipi_dsi_device *dsi, int *accum_err,
>                                      const void *data, size_t len);
>
> is the same, and it avoids having to declare a mipi_dsi_multi_context and set ctx->dsi,
> and I'll find it much easier to migrate, just add a &ret and make sure ret is initialized to 0.

Yeah, I had the same reaction when Jani suggested the context style
[1] and I actually coded it up exactly as you suggest above. I then
changed my mind and went with the context. My motivation was that when
I tested it I found that using the context produced smaller code.
Specifically, from the description of this patch we see we end up
with:

Total: Before=10651, After=9663, chg -9.28%

...when I didn't have the context and I had the accum_err then instead
of getting ~9% smaller I believe it actually got ~0.5% bigger. This
makes some sense as the caller has to pass 4 parameters to each call
instead of 3.

It's not a giant size difference but it was at least some motivation
that helped push me in this direction. I'd also say that when I looked
at the code in the end the style grew on me. It's really not too
terrible to have one line in your functions that looks like:

struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };

...and if that becomes the canonical way to do it then it's really
hard to accidentally forget to initialize the error value. With the
other API it's _very_ easy to forget to initialize the error value and
the compiler won't yell at you. It also makes it very obvious to the
caller that this function is doing something a little different than
most Linux APIs with that error return.

So I guess I'd say that I ended up being pretty happy with the
"context" even if it does feel a little over engineered and I'd argue
to keep it that way. That being said, if you feel strongly about it
then we can perhaps get others to chime in to see which style they
prefer? Let me know what you think.


[1] https://lore.kernel.org/r/8734r85tcf.fsf@intel.com

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

* Re: [PATCH v2 4/8] drm/mipi-dsi: Introduce mipi_dsi_*_write_seq_multi()
  2024-04-29 14:26     ` Doug Anderson
@ 2024-04-29 15:39       ` Jani Nikula
  2024-05-01 15:49         ` Doug Anderson
  2024-05-06  6:21       ` Linus Walleij
  1 sibling, 1 reply; 23+ messages in thread
From: Jani Nikula @ 2024-04-29 15:39 UTC (permalink / raw)
  To: Doug Anderson, neil.armstrong
  Cc: dri-devel, Linus Walleij, lvzhaoxiong, Hsin-Yi Wang,
	Javier Martinez Canillas, Joel Selvaraj, Dmitry Baryshkov,
	Cong Yang, Sam Ravnborg, Daniel Vetter, David Airlie,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	linux-kernel

On Mon, 29 Apr 2024, Doug Anderson <dianders@chromium.org> wrote:
> Hi,
>
> On Mon, Apr 29, 2024 at 2:38 AM Neil Armstrong
> <neil.armstrong@linaro.org> wrote:
>>
>> > +/**
>> > + * struct mipi_dsi_multi_context - Context to call multiple MIPI DSI funcs in a row
>> > + * @dsi: Pointer to the MIPI DSI device
>> > + * @accum_err: Storage for the accumulated error over the multiple calls. Init
>> > + *   to 0. If a function encounters an error then the error code will be
>> > + *   stored here. If you call a function and this points to a non-zero
>> > + *   value then the function will be a noop. This allows calling a function
>> > + *   many times in a row and just checking the error at the end to see if
>> > + *   any of them failed.
>> > + */
>> > +
>> > +struct mipi_dsi_multi_context {
>> > +     struct mipi_dsi_device *dsi;
>> > +     int accum_err;
>> > +};
>>
>> I like the design, but having a context struct seems over-engineered while we could pass
>> a single int over without encapsulating it with mipi_dsi_multi_context.
>>
>> void mipi_dsi_dcs_write_buffer_multi(struct mipi_dsi_multi_context *ctx,
>>                                      const void *data, size_t len);
>> vs
>> void mipi_dsi_dcs_write_buffer_multi(struct mipi_dsi_device *dsi, int *accum_err,
>>                                      const void *data, size_t len);
>>
>> is the same, and it avoids having to declare a mipi_dsi_multi_context and set ctx->dsi,
>> and I'll find it much easier to migrate, just add a &ret and make sure ret is initialized to 0.
>
> Yeah, I had the same reaction when Jani suggested the context style
> [1] and I actually coded it up exactly as you suggest above. I then
> changed my mind and went with the context. My motivation was that when
> I tested it I found that using the context produced smaller code.
> Specifically, from the description of this patch we see we end up
> with:
>
> Total: Before=10651, After=9663, chg -9.28%
>
> ...when I didn't have the context and I had the accum_err then instead
> of getting ~9% smaller I believe it actually got ~0.5% bigger. This
> makes some sense as the caller has to pass 4 parameters to each call
> instead of 3.
>
> It's not a giant size difference but it was at least some motivation
> that helped push me in this direction. I'd also say that when I looked
> at the code in the end the style grew on me. It's really not too
> terrible to have one line in your functions that looks like:
>
> struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
>
> ...and if that becomes the canonical way to do it then it's really
> hard to accidentally forget to initialize the error value. With the
> other API it's _very_ easy to forget to initialize the error value and
> the compiler won't yell at you. It also makes it very obvious to the
> caller that this function is doing something a little different than
> most Linux APIs with that error return.
>
> So I guess I'd say that I ended up being pretty happy with the
> "context" even if it does feel a little over engineered and I'd argue
> to keep it that way. That being said, if you feel strongly about it
> then we can perhaps get others to chime in to see which style they
> prefer? Let me know what you think.
>
>
> [1] https://lore.kernel.org/r/8734r85tcf.fsf@intel.com

FWIW, I don't feel strongly about this, and I could be persuaded either
way, but I've got this gut feeling that an extensible context parameter
might be benefitial future proofing in this case.

BR,
Jani.


-- 
Jani Nikula, Intel

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

* Re: [PATCH v2 1/8] drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_dcs_write_seq()
  2024-04-27  6:22     ` Sam Ravnborg
@ 2024-04-29 21:42       ` Doug Anderson
  0 siblings, 0 replies; 23+ messages in thread
From: Doug Anderson @ 2024-04-29 21:42 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Dmitry Baryshkov, dri-devel, Linus Walleij, lvzhaoxiong,
	Jani Nikula, Hsin-Yi Wang, Javier Martinez Canillas,
	Neil Armstrong, Joel Selvaraj, Cong Yang, Daniel Vetter,
	David Airlie, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, linux-kernel

Hi,

On Fri, Apr 26, 2024 at 11:22 PM Sam Ravnborg <sam@ravnborg.org> wrote:
>
> On Sat, Apr 27, 2024 at 04:44:33AM +0300, Dmitry Baryshkov wrote:
> > On Sat, 27 Apr 2024 at 02:59, Douglas Anderson <dianders@chromium.org> wrote:
> > >
> > > The mipi_dsi_dcs_write_seq() macro makes a call to
> > > mipi_dsi_dcs_write_buffer() which returns a type ssize_t. The macro
> > > then stores it in an int and checks to see if it's negative. This
> > > could theoretically be a problem if "ssize_t" is larger than "int".
> > >
> > > To see the issue, imagine that "ssize_t" is 32-bits and "int" is
> > > 16-bits, you could see a problem if there was some code out there that
> > > looked like:
> > >
> > >   mipi_dsi_dcs_write_seq(dsi, cmd, <32767 bytes as arguments>);
> > >
> > > ...since we'd get back that 32768 bytes were transferred and 32768
> > > stored in a 16-bit int would look negative.
> > >
> > > Though there are no callsites where we'd actually hit this (even if
> > > "int" was only 16-bit), it's cleaner to make the types match so let's
> > > fix it.
> > >
> > > Fixes: 2a9e9daf7523 ("drm/mipi-dsi: Introduce mipi_dsi_dcs_write_seq macro")
> > > Signed-off-by: Douglas Anderson <dianders@chromium.org>
> > > ---
> > >
> > > Changes in v2:
> > > - New
> > >
> > >  include/drm/drm_mipi_dsi.h | 4 ++--
> > >  1 file changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h
> > > index 82b1cc434ea3..b3576be22bfa 100644
> > > --- a/include/drm/drm_mipi_dsi.h
> > > +++ b/include/drm/drm_mipi_dsi.h
> > > @@ -337,12 +337,12 @@ int mipi_dsi_dcs_get_display_brightness_large(struct mipi_dsi_device *dsi,
> > >         do {                                                               \
> > >                 static const u8 d[] = { cmd, seq };                        \
> > >                 struct device *dev = &dsi->dev;                            \
> > > -               int ret;                                                   \
> > > +               ssize_t ret;                                               \
> > >                 ret = mipi_dsi_dcs_write_buffer(dsi, d, ARRAY_SIZE(d));    \
> > >                 if (ret < 0) {                                             \
> > >                         dev_err_ratelimited(                               \
> > >                                 dev, "sending command %#02x failed: %d\n", \
> > > -                               cmd, ret);                                 \
> > > +                               cmd, (int)ret);                            \
> >
> > Please consider using %zd instead
>
> Hi Douglas,
> please consider the above for all the pathces, there are more places
> where a cast can be dropped.

Sure, I'll change in the next version. I personally prefer the %d with
an "int" type because technically we're printing an error code and
errors are int-sized. ...but I don't feel strongly and I guess there's
a tiny chance some bug in the code could lead to a negative value
that's more useful as 64-bits than 32-bits. ;-)

I will note that I will still need a cast in some of the later patches
for "%*ph" since, I believe, the size passed for the "*" in a printf
format string is defined to be an int, not a size_t or ssize_t.

-Doug

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

* Re: [PATCH v2 4/8] drm/mipi-dsi: Introduce mipi_dsi_*_write_seq_multi()
  2024-04-29 15:39       ` Jani Nikula
@ 2024-05-01 15:49         ` Doug Anderson
  2024-05-01 15:57           ` Dmitry Baryshkov
  0 siblings, 1 reply; 23+ messages in thread
From: Doug Anderson @ 2024-05-01 15:49 UTC (permalink / raw)
  To: Jani Nikula
  Cc: neil.armstrong, dri-devel, Linus Walleij, lvzhaoxiong,
	Hsin-Yi Wang, Javier Martinez Canillas, Joel Selvaraj,
	Dmitry Baryshkov, Cong Yang, Sam Ravnborg, Daniel Vetter,
	David Airlie, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, linux-kernel

Hi,

On Mon, Apr 29, 2024 at 8:39 AM Jani Nikula <jani.nikula@linux.intel.com> wrote:
>
> On Mon, 29 Apr 2024, Doug Anderson <dianders@chromium.org> wrote:
> > Hi,
> >
> > On Mon, Apr 29, 2024 at 2:38 AM Neil Armstrong
> > <neil.armstrong@linaro.org> wrote:
> >>
> >> > +/**
> >> > + * struct mipi_dsi_multi_context - Context to call multiple MIPI DSI funcs in a row
> >> > + * @dsi: Pointer to the MIPI DSI device
> >> > + * @accum_err: Storage for the accumulated error over the multiple calls. Init
> >> > + *   to 0. If a function encounters an error then the error code will be
> >> > + *   stored here. If you call a function and this points to a non-zero
> >> > + *   value then the function will be a noop. This allows calling a function
> >> > + *   many times in a row and just checking the error at the end to see if
> >> > + *   any of them failed.
> >> > + */
> >> > +
> >> > +struct mipi_dsi_multi_context {
> >> > +     struct mipi_dsi_device *dsi;
> >> > +     int accum_err;
> >> > +};
> >>
> >> I like the design, but having a context struct seems over-engineered while we could pass
> >> a single int over without encapsulating it with mipi_dsi_multi_context.
> >>
> >> void mipi_dsi_dcs_write_buffer_multi(struct mipi_dsi_multi_context *ctx,
> >>                                      const void *data, size_t len);
> >> vs
> >> void mipi_dsi_dcs_write_buffer_multi(struct mipi_dsi_device *dsi, int *accum_err,
> >>                                      const void *data, size_t len);
> >>
> >> is the same, and it avoids having to declare a mipi_dsi_multi_context and set ctx->dsi,
> >> and I'll find it much easier to migrate, just add a &ret and make sure ret is initialized to 0.
> >
> > Yeah, I had the same reaction when Jani suggested the context style
> > [1] and I actually coded it up exactly as you suggest above. I then
> > changed my mind and went with the context. My motivation was that when
> > I tested it I found that using the context produced smaller code.
> > Specifically, from the description of this patch we see we end up
> > with:
> >
> > Total: Before=10651, After=9663, chg -9.28%
> >
> > ...when I didn't have the context and I had the accum_err then instead
> > of getting ~9% smaller I believe it actually got ~0.5% bigger. This
> > makes some sense as the caller has to pass 4 parameters to each call
> > instead of 3.
> >
> > It's not a giant size difference but it was at least some motivation
> > that helped push me in this direction. I'd also say that when I looked
> > at the code in the end the style grew on me. It's really not too
> > terrible to have one line in your functions that looks like:
> >
> > struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
> >
> > ...and if that becomes the canonical way to do it then it's really
> > hard to accidentally forget to initialize the error value. With the
> > other API it's _very_ easy to forget to initialize the error value and
> > the compiler won't yell at you. It also makes it very obvious to the
> > caller that this function is doing something a little different than
> > most Linux APIs with that error return.
> >
> > So I guess I'd say that I ended up being pretty happy with the
> > "context" even if it does feel a little over engineered and I'd argue
> > to keep it that way. That being said, if you feel strongly about it
> > then we can perhaps get others to chime in to see which style they
> > prefer? Let me know what you think.
> >
> >
> > [1] https://lore.kernel.org/r/8734r85tcf.fsf@intel.com
>
> FWIW, I don't feel strongly about this, and I could be persuaded either
> way, but I've got this gut feeling that an extensible context parameter
> might be benefitial future proofing in this case.

I've gone ahead and sent out a v3 where I still leave it as taking
`struct mipi_dsi_multi_context`. Neil: if you feel strongly about it,
I have no problem sending out a v4. I still think that the size
savings of using the context are a good "tiebreaking" factor in
choosing between the two styles... ;-)

-Doug

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

* Re: [PATCH v2 4/8] drm/mipi-dsi: Introduce mipi_dsi_*_write_seq_multi()
  2024-05-01 15:49         ` Doug Anderson
@ 2024-05-01 15:57           ` Dmitry Baryshkov
  0 siblings, 0 replies; 23+ messages in thread
From: Dmitry Baryshkov @ 2024-05-01 15:57 UTC (permalink / raw)
  To: Doug Anderson
  Cc: Jani Nikula, neil.armstrong, dri-devel, Linus Walleij,
	lvzhaoxiong, Hsin-Yi Wang, Javier Martinez Canillas,
	Joel Selvaraj, Cong Yang, Sam Ravnborg, Daniel Vetter,
	David Airlie, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, linux-kernel

On Wed, 1 May 2024 at 18:49, Doug Anderson <dianders@chromium.org> wrote:
>
> Hi,
>
> On Mon, Apr 29, 2024 at 8:39 AM Jani Nikula <jani.nikula@linux.intel.com> wrote:
> >
> > On Mon, 29 Apr 2024, Doug Anderson <dianders@chromium.org> wrote:
> > > Hi,
> > >
> > > On Mon, Apr 29, 2024 at 2:38 AM Neil Armstrong
> > > <neil.armstrong@linaro.org> wrote:
> > >>
> > >> > +/**
> > >> > + * struct mipi_dsi_multi_context - Context to call multiple MIPI DSI funcs in a row
> > >> > + * @dsi: Pointer to the MIPI DSI device
> > >> > + * @accum_err: Storage for the accumulated error over the multiple calls. Init
> > >> > + *   to 0. If a function encounters an error then the error code will be
> > >> > + *   stored here. If you call a function and this points to a non-zero
> > >> > + *   value then the function will be a noop. This allows calling a function
> > >> > + *   many times in a row and just checking the error at the end to see if
> > >> > + *   any of them failed.
> > >> > + */
> > >> > +
> > >> > +struct mipi_dsi_multi_context {
> > >> > +     struct mipi_dsi_device *dsi;
> > >> > +     int accum_err;
> > >> > +};
> > >>
> > >> I like the design, but having a context struct seems over-engineered while we could pass
> > >> a single int over without encapsulating it with mipi_dsi_multi_context.
> > >>
> > >> void mipi_dsi_dcs_write_buffer_multi(struct mipi_dsi_multi_context *ctx,
> > >>                                      const void *data, size_t len);
> > >> vs
> > >> void mipi_dsi_dcs_write_buffer_multi(struct mipi_dsi_device *dsi, int *accum_err,
> > >>                                      const void *data, size_t len);
> > >>
> > >> is the same, and it avoids having to declare a mipi_dsi_multi_context and set ctx->dsi,
> > >> and I'll find it much easier to migrate, just add a &ret and make sure ret is initialized to 0.
> > >
> > > Yeah, I had the same reaction when Jani suggested the context style
> > > [1] and I actually coded it up exactly as you suggest above. I then
> > > changed my mind and went with the context. My motivation was that when
> > > I tested it I found that using the context produced smaller code.
> > > Specifically, from the description of this patch we see we end up
> > > with:
> > >
> > > Total: Before=10651, After=9663, chg -9.28%
> > >
> > > ...when I didn't have the context and I had the accum_err then instead
> > > of getting ~9% smaller I believe it actually got ~0.5% bigger. This
> > > makes some sense as the caller has to pass 4 parameters to each call
> > > instead of 3.
> > >
> > > It's not a giant size difference but it was at least some motivation
> > > that helped push me in this direction. I'd also say that when I looked
> > > at the code in the end the style grew on me. It's really not too
> > > terrible to have one line in your functions that looks like:
> > >
> > > struct mipi_dsi_multi_context ctx = { .dsi = boe->dsi };
> > >
> > > ...and if that becomes the canonical way to do it then it's really
> > > hard to accidentally forget to initialize the error value. With the
> > > other API it's _very_ easy to forget to initialize the error value and
> > > the compiler won't yell at you. It also makes it very obvious to the
> > > caller that this function is doing something a little different than
> > > most Linux APIs with that error return.
> > >
> > > So I guess I'd say that I ended up being pretty happy with the
> > > "context" even if it does feel a little over engineered and I'd argue
> > > to keep it that way. That being said, if you feel strongly about it
> > > then we can perhaps get others to chime in to see which style they
> > > prefer? Let me know what you think.
> > >
> > >
> > > [1] https://lore.kernel.org/r/8734r85tcf.fsf@intel.com
> >
> > FWIW, I don't feel strongly about this, and I could be persuaded either
> > way, but I've got this gut feeling that an extensible context parameter
> > might be benefitial future proofing in this case.
>
> I've gone ahead and sent out a v3 where I still leave it as taking
> `struct mipi_dsi_multi_context`. Neil: if you feel strongly about it,
> I have no problem sending out a v4. I still think that the size
> savings of using the context are a good "tiebreaking" factor in
> choosing between the two styles... ;-)

I like the idea of context. If later on we need to add additional data
(like DSC PPS or drm_mode), we can simply extend the context
structure.

>
> -Doug



-- 
With best wishes
Dmitry

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

* Re: [PATCH v2 4/8] drm/mipi-dsi: Introduce mipi_dsi_*_write_seq_multi()
  2024-04-29 14:26     ` Doug Anderson
  2024-04-29 15:39       ` Jani Nikula
@ 2024-05-06  6:21       ` Linus Walleij
  1 sibling, 0 replies; 23+ messages in thread
From: Linus Walleij @ 2024-05-06  6:21 UTC (permalink / raw)
  To: Doug Anderson
  Cc: neil.armstrong, dri-devel, lvzhaoxiong, Jani Nikula,
	Hsin-Yi Wang, Javier Martinez Canillas, Joel Selvaraj,
	Dmitry Baryshkov, Cong Yang, Sam Ravnborg, Daniel Vetter,
	David Airlie, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, linux-kernel

On Mon, Apr 29, 2024 at 4:26 PM Doug Anderson <dianders@chromium.org> wrote:

> So I guess I'd say that I ended up being pretty happy with the
> "context" even if it does feel a little over engineered and I'd argue
> to keep it that way. That being said, if you feel strongly about it
> then we can perhaps get others to chime in to see which style they
> prefer? Let me know what you think.

I'm in favor of this design.
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij

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

end of thread, other threads:[~2024-05-06  6:21 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-26 23:58 [PATCH v2 0/8] drm/mipi-dsi: Reduce bloat and add funcs for cleaner init seqs Douglas Anderson
2024-04-26 23:58 ` [PATCH v2 1/8] drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_dcs_write_seq() Douglas Anderson
2024-04-27  1:44   ` Dmitry Baryshkov
2024-04-27  6:22     ` Sam Ravnborg
2024-04-29 21:42       ` Doug Anderson
2024-04-26 23:58 ` [PATCH v2 2/8] drm/mipi-dsi: Fix theoretical int overflow in mipi_dsi_generic_write_seq() Douglas Anderson
2024-04-26 23:58 ` [PATCH v2 3/8] drm/mipi-dsi: Reduce driver bloat of mipi_dsi_*_write_seq() Douglas Anderson
2024-04-27  2:05   ` Dmitry Baryshkov
2024-04-26 23:58 ` [PATCH v2 4/8] drm/mipi-dsi: Introduce mipi_dsi_*_write_seq_multi() Douglas Anderson
2024-04-27  6:32   ` Sam Ravnborg
2024-04-29 14:13     ` Doug Anderson
2024-04-29  9:38   ` Neil Armstrong
2024-04-29 14:26     ` Doug Anderson
2024-04-29 15:39       ` Jani Nikula
2024-05-01 15:49         ` Doug Anderson
2024-05-01 15:57           ` Dmitry Baryshkov
2024-05-06  6:21       ` Linus Walleij
2024-04-26 23:58 ` [PATCH v2 5/8] drm/mipi-dsi: mipi_dsi_*_write functions don't need to ratelimit prints Douglas Anderson
2024-04-26 23:58 ` [PATCH v2 6/8] drm/panel: novatek-nt36672e: Switch to mipi_dsi_dcs_write_seq_multi() Douglas Anderson
2024-04-26 23:58 ` [PATCH v2 7/8] drm/panel: boe-tv101wum-nl6: Don't use a table for initting commands Douglas Anderson
2024-04-26 23:58 ` [PATCH v2 8/8] drm/panel: boe-tv101wum-nl6: Convert hex to lowercase Douglas Anderson
2024-04-27  8:48   ` Dmitry Baryshkov
2024-04-29  9:20 ` [PATCH v2 0/8] drm/mipi-dsi: Reduce bloat and add funcs for cleaner init seqs Jani Nikula

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).