Re: [PATCH v3] drm/panel: novatek-nt36672a: Inline panel init sequences
From: Chintan Patel
Date: Wed May 27 2026 - 00:17:50 EST
@@ -162,8 +141,8 @@ static int nt36672a_panel_prepare(struct drm_panel *panel)
dsi_ctx.accum_err = nt36672a_panel_power_on(pinfo);
/* send first part of init cmds */
- nt36672a_send_cmds(&dsi_ctx, pinfo->desc->on_cmds_1,
- pinfo->desc->num_on_cmds_1);
+ if (pinfo->desc->send_init_cmds_1)
+ pinfo->desc->send_init_cmds_1(&dsi_ctx);
mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx);
@@ -173,8 +152,8 @@ static int nt36672a_panel_prepare(struct drm_panel *panel)
mipi_dsi_dcs_set_display_on_multi(&dsi_ctx);
/* Send rest of the init cmds */
- nt36672a_send_cmds(&dsi_ctx, pinfo->desc->on_cmds_2,
- pinfo->desc->num_on_cmds_2);
+ if (pinfo->desc->send_init_cmds_2)
+ pinfo->desc->send_init_cmds_2(&dsi_ctx);
mipi_dsi_msleep(&dsi_ctx, 120);
Hi!
Here, the split of panel init sequence into 2 separate functions _1 / _2
is completely artificial and completely unnecessary. For some unknown
reason the initial version of driver had initialization procedure cut in
2 parts on the boundary of exit_sleep_mode + set_display_on commands.
I think the whole init sequence should be glued together into one big
send_init_cmds() callback and have all these calls:
mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx);
/* 0x46 = 70 ms delay */
mipi_dsi_msleep(&dsi_ctx, 70);
mipi_dsi_dcs_set_display_on_multi(&dsi_ctx);
included in the middle. This opens up a possibility for other panels
based on nt36672a to be supported in this driver, which don't have the
init sequence split this way. The location of exit_sleep_mode and
set_display_on commands there is different. And, importantly, the delay
is different too.
I once did a very similar change to this driver [1] to add support for
more panels (ignore touchscreen changes there, look only at panel).
What is also important, that change was also tested on Xiaomi Poco F1
(xiaomi-beryllium) phone, which is the main user of this panel.
Unfortunately I never got to send it, even though I wanted to..
What do you think?
[1] https://gitlab.com/sdm845-mainline/linux/-/merge_requests/131
Hi Alexey,
Thanks, that makes sense and I agree the fully panel-owned init sequence would likely be a cleaner abstraction long term, especially for supporting additional NT36672A panel variants with different sequencing requirements.
For this patch, though, I was trying to keep the scope limited to the original refactor requested during earlier review:
remove the command table abstraction,
inline the command sequences,
and preserve the existing init flow/behavior as closely as possible.
Since moving exit_sleep_mode, delays, and set_display_on into the panel callback changes the sequencing model itself, I was thinking it may be better handled as a follow-up cleanup/refactor patch to avoid mixing behavioral restructuring into this series.
If that sounds reasonable, I'd prefer to keep this patch focused and address the sequencing abstraction separately afterward.
Regards,
Chintan