* [PATCH v3 0/3] drm/panel: ilitek-ili9805: convert to *_multi API
@ 2026-07-21 17:27 Michail Tatas
2026-07-21 17:27 ` [PATCH v3 1/3] drm/panel: ilitek-ili9805: Use _multi variants Michail Tatas
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Michail Tatas @ 2026-07-21 17:27 UTC (permalink / raw)
To: michael, neil.armstrong, jesszhan0024, maarten.lankhorst, mripard,
tzimmermann, airlied, simona, dianders
Cc: dri-devel, linux-kernel, Michail Tatas
This series converts panel-ilitek-ili9805 to the
mipi_dsi_*_multi helpers and cleans up the resulting code.
Patch 1: Convert the individual DSI calls to their
*_multi variants
Patch 2: Replace the ILI9805_INSTR table with per
panel init functions using the *_multi API, dropping
struct ili9805_instr
Patch 3: makes ili9805_power_off() and ili9805_deactivate()
return void, since no one checks their return values.
Michail Tatas (3):
drm/panel: ilitek-ili9805: Use _multi variants
drm/panel: ilitek-ili9805: Use dsi_multi in init
drm/panel: ilitek-ili9805: make cleanup funcs void
drivers/gpu/drm/panel/panel-ilitek-ili9805.c | 211 ++++++++-----------
1 file changed, 87 insertions(+), 124 deletions(-)
--
Changes in v3:
Addresses review feedback from Doug on v2
- Convert hex to lowercase
- Align to match open parenthesis
- Change lines to not cross 100 chars
Changes in v2:
Addresses review feedback from Doug on v1
- Patch 1 remains the same as v1
- Added patch 2 dropping struct ili9805_instr and used
per-panel init functions
- Added patch 3 making the cleanup functions return void
Revisions
- v1: https://lore.kernel.org/all/allWpYxgHfpKughy@michalis-linux/
- v2: https://lore.kernel.org/all/20260719190358.438699-1-michail.tatas@gmail.com/
The changes are compile tested only. Also I run checkpatch.pl --strict,
sparse, smatch, gcc W=1, clang W=1 and coccinelle.
2.43.0
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v3 1/3] drm/panel: ilitek-ili9805: Use _multi variants 2026-07-21 17:27 [PATCH v3 0/3] drm/panel: ilitek-ili9805: convert to *_multi API Michail Tatas @ 2026-07-21 17:27 ` Michail Tatas 2026-07-21 17:27 ` [PATCH v3 2/3] drm/panel: ilitek-ili9805: Use dsi_multi in init Michail Tatas ` (2 subsequent siblings) 3 siblings, 0 replies; 7+ messages in thread From: Michail Tatas @ 2026-07-21 17:27 UTC (permalink / raw) To: michael, neil.armstrong, jesszhan0024, maarten.lankhorst, mripard, tzimmermann, airlied, simona, dianders Cc: dri-devel, linux-kernel, Michail Tatas Convert functions mipi_dsi_* to mipi_dsi_*_multi as per the gpu/todo file. The multi variant of these functions include improved error handling. Signed-off-by: Michail Tatas <michail.tatas@gmail.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Reviewed-by: Douglas Anderson <dianders@chromium.org> --- drivers/gpu/drm/panel/panel-ilitek-ili9805.c | 51 +++++--------------- 1 file changed, 13 insertions(+), 38 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9805.c b/drivers/gpu/drm/panel/panel-ilitek-ili9805.c index e6c483851f1f..7e9587afebbe 100644 --- a/drivers/gpu/drm/panel/panel-ilitek-ili9805.c +++ b/drivers/gpu/drm/panel/panel-ilitek-ili9805.c @@ -159,36 +159,23 @@ static int ili9805_power_off(struct ili9805 *ctx) static int ili9805_activate(struct ili9805 *ctx) { - struct mipi_dsi_device *dsi = ctx->dsi; - struct device *dev = &dsi->dev; - int i, ret; + struct mipi_dsi_multi_context dsi_ctx = { .dsi = ctx->dsi }; + int i; for (i = 0; i < ctx->desc->init_length; i++) { const struct ili9805_instr *instr = &ctx->desc->init[i]; - ret = mipi_dsi_dcs_write_buffer(ctx->dsi, instr->data, instr->len); - if (ret < 0) - return ret; + mipi_dsi_dcs_write_buffer_multi(&dsi_ctx, instr->data, instr->len); if (instr->delay > 0) - msleep(instr->delay); - } - - ret = mipi_dsi_dcs_exit_sleep_mode(ctx->dsi); - if (ret) { - dev_err(dev, "Failed to exit sleep mode (%d)\n", ret); - return ret; + mipi_dsi_msleep(&dsi_ctx, instr->delay); } - usleep_range(5000, 6000); + mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); + mipi_dsi_usleep_range(&dsi_ctx, 5000, 6000); + mipi_dsi_dcs_set_display_on_multi(&dsi_ctx); - ret = mipi_dsi_dcs_set_display_on(ctx->dsi); - if (ret) { - dev_err(dev, "Failed to set display ON (%d)\n", ret); - return ret; - } - - return 0; + return dsi_ctx.accum_err; } static int ili9805_prepare(struct drm_panel *panel) @@ -211,25 +198,13 @@ static int ili9805_prepare(struct drm_panel *panel) static int ili9805_deactivate(struct ili9805 *ctx) { - struct mipi_dsi_device *dsi = ctx->dsi; - struct device *dev = &dsi->dev; - int ret; - - ret = mipi_dsi_dcs_set_display_off(ctx->dsi); - if (ret < 0) { - dev_err(dev, "Failed to set display OFF (%d)\n", ret); - return ret; - } + struct mipi_dsi_multi_context dsi_ctx = { .dsi = ctx->dsi }; - usleep_range(5000, 10000); - - ret = mipi_dsi_dcs_enter_sleep_mode(ctx->dsi); - if (ret < 0) { - dev_err(dev, "Failed to enter sleep mode (%d)\n", ret); - return ret; - } + mipi_dsi_dcs_set_display_off_multi(&dsi_ctx); + mipi_dsi_usleep_range(&dsi_ctx, 5000, 10000); + mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx); - return 0; + return dsi_ctx.accum_err; } static int ili9805_unprepare(struct drm_panel *panel) -- 2.43.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 2/3] drm/panel: ilitek-ili9805: Use dsi_multi in init 2026-07-21 17:27 [PATCH v3 0/3] drm/panel: ilitek-ili9805: convert to *_multi API Michail Tatas 2026-07-21 17:27 ` [PATCH v3 1/3] drm/panel: ilitek-ili9805: Use _multi variants Michail Tatas @ 2026-07-21 17:27 ` Michail Tatas 2026-07-21 20:13 ` Doug Anderson 2026-07-21 17:27 ` [PATCH v3 3/3] drm/panel: ilitek-ili9805: make cleanup funcs void Michail Tatas 2026-07-21 19:44 ` [PATCH v3 0/3] drm/panel: ilitek-ili9805: convert to *_multi API Doug Anderson 3 siblings, 1 reply; 7+ messages in thread From: Michail Tatas @ 2026-07-21 17:27 UTC (permalink / raw) To: michael, neil.armstrong, jesszhan0024, maarten.lankhorst, mripard, tzimmermann, airlied, simona, dianders Cc: dri-devel, linux-kernel, Michail Tatas Drop the struct ili9805_instr and the init table and use init functions. Signed-off-by: Michail Tatas <michail.tatas@gmail.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Reviewed-by: Douglas Anderson <dianders@chromium.org> --- drivers/gpu/drm/panel/panel-ilitek-ili9805.c | 160 +++++++++---------- 1 file changed, 76 insertions(+), 84 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9805.c b/drivers/gpu/drm/panel/panel-ilitek-ili9805.c index 7e9587afebbe..909661f67d26 100644 --- a/drivers/gpu/drm/panel/panel-ilitek-ili9805.c +++ b/drivers/gpu/drm/panel/panel-ilitek-ili9805.c @@ -25,22 +25,9 @@ #define ILI9805_SETEXTC_PARAMETER2 (0x98) #define ILI9805_SETEXTC_PARAMETER3 (0x05) -#define ILI9805_INSTR(_delay, ...) { \ - .delay = (_delay), \ - .len = sizeof((u8[]) {__VA_ARGS__}), \ - .data = (u8[]){__VA_ARGS__} \ - } - -struct ili9805_instr { - size_t len; - const u8 *data; - u32 delay; -}; - struct ili9805_desc { const char *name; - const struct ili9805_instr *init; - const size_t init_length; + void (*init)(struct mipi_dsi_multi_context *ctx); const struct drm_display_mode *mode; u32 width_mm; u32 height_mm; @@ -56,65 +43,80 @@ struct ili9805 { struct gpio_desc *reset_gpio; }; -static const struct ili9805_instr gpm1780a0_init[] = { - ILI9805_INSTR(100, ILI9805_EXTCMD_CMD_SET_ENABLE_REG, ILI9805_SETEXTC_PARAMETER1, - ILI9805_SETEXTC_PARAMETER2, ILI9805_SETEXTC_PARAMETER3), - ILI9805_INSTR(100, 0xFD, 0x0F, 0x10, 0x44, 0x00), - ILI9805_INSTR(0, 0xf8, 0x18, 0x02, 0x02, 0x18, 0x02, 0x02, 0x30, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00), - ILI9805_INSTR(0, 0xB8, 0x62), - ILI9805_INSTR(0, 0xF1, 0x00), - ILI9805_INSTR(0, 0xF2, 0x00, 0x58, 0x40), - ILI9805_INSTR(0, 0xF3, 0x60, 0x83, 0x04), - ILI9805_INSTR(0, 0xFC, 0x04, 0x0F, 0x01), - ILI9805_INSTR(0, 0xEB, 0x08, 0x0F), - ILI9805_INSTR(0, 0xe0, 0x00, 0x08, 0x0d, 0x0e, 0x0e, 0x0d, 0x0a, 0x08, 0x04, - 0x08, 0x0d, 0x0f, 0x0b, 0x1c, 0x14, 0x0a), - ILI9805_INSTR(0, 0xe1, 0x00, 0x08, 0x0d, 0x0e, 0x0e, 0x0d, 0x0a, 0x08, 0x04, - 0x08, 0x0d, 0x0f, 0x0b, 0x1c, 0x14, 0x0a), - ILI9805_INSTR(10, 0xc1, 0x13, 0x39, 0x19, 0x06), - ILI9805_INSTR(10, 0xc7, 0xe5), - ILI9805_INSTR(10, 0xB1, 0x00, 0x12, 0x14), - ILI9805_INSTR(10, 0xB4, 0x02), - ILI9805_INSTR(0, 0xBB, 0x14, 0x55), - ILI9805_INSTR(0, MIPI_DCS_SET_ADDRESS_MODE, 0x08), - ILI9805_INSTR(0, MIPI_DCS_SET_PIXEL_FORMAT, 0x77), - ILI9805_INSTR(0, 0x20), - ILI9805_INSTR(0, 0xB0, 0x01), - ILI9805_INSTR(0, 0xB6, 0x31, 0x00, 0xef), - ILI9805_INSTR(0, 0xDF, 0x23), - ILI9805_INSTR(0, 0xB9, 0x02, 0x00), -}; +static void gpm1780a0_init(struct mipi_dsi_multi_context *ctx) +{ + mipi_dsi_dcs_write_seq_multi(ctx, ILI9805_EXTCMD_CMD_SET_ENABLE_REG, + ILI9805_SETEXTC_PARAMETER1, ILI9805_SETEXTC_PARAMETER2, + ILI9805_SETEXTC_PARAMETER3); + mipi_dsi_msleep(ctx, 100); + mipi_dsi_dcs_write_seq_multi(ctx, 0xfd, 0x0f, 0x10, 0x44, 0x00); + mipi_dsi_msleep(ctx, 100); + mipi_dsi_dcs_write_seq_multi(ctx, 0xf8, 0x18, 0x02, 0x02, 0x18, 0x02, 0x02, 0x30, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00); + mipi_dsi_dcs_write_seq_multi(ctx, 0xb8, 0x62); + mipi_dsi_dcs_write_seq_multi(ctx, 0xf1, 0x00); + mipi_dsi_dcs_write_seq_multi(ctx, 0xf2, 0x00, 0x58, 0x40); + mipi_dsi_dcs_write_seq_multi(ctx, 0xf3, 0x60, 0x83, 0x04); + mipi_dsi_dcs_write_seq_multi(ctx, 0xfc, 0x04, 0x0f, 0x01); + mipi_dsi_dcs_write_seq_multi(ctx, 0xeb, 0x08, 0x0f); + mipi_dsi_dcs_write_seq_multi(ctx, 0xe0, 0x00, 0x08, 0x0d, 0x0e, 0x0e, 0x0d, 0x0a, 0x08, + 0x04, 0x08, 0x0d, 0x0f, 0x0b, 0x1c, 0x14, 0x0a); + mipi_dsi_dcs_write_seq_multi(ctx, 0xe1, 0x00, 0x08, 0x0d, 0x0e, 0x0e, 0x0d, 0x0a, 0x08, + 0x04, 0x08, 0x0d, 0x0f, 0x0b, 0x1c, 0x14, 0x0a); + mipi_dsi_dcs_write_seq_multi(ctx, 0xc1, 0x13, 0x39, 0x19, 0x06); + mipi_dsi_msleep(ctx, 10); + mipi_dsi_dcs_write_seq_multi(ctx, 0xc7, 0xe5); + mipi_dsi_msleep(ctx, 10); + mipi_dsi_dcs_write_seq_multi(ctx, 0xb1, 0x00, 0x12, 0x14); + mipi_dsi_msleep(ctx, 10); + mipi_dsi_dcs_write_seq_multi(ctx, 0xb4, 0x02); + mipi_dsi_msleep(ctx, 10); + mipi_dsi_dcs_write_seq_multi(ctx, 0xbb, 0x14, 0x55); + mipi_dsi_dcs_write_seq_multi(ctx, MIPI_DCS_SET_ADDRESS_MODE, 0x08); + mipi_dsi_dcs_write_seq_multi(ctx, MIPI_DCS_SET_PIXEL_FORMAT, 0x77); + mipi_dsi_dcs_write_seq_multi(ctx, 0x20); + mipi_dsi_dcs_write_seq_multi(ctx, 0xb0, 0x01); + mipi_dsi_dcs_write_seq_multi(ctx, 0xb6, 0x31, 0x00, 0xef); + mipi_dsi_dcs_write_seq_multi(ctx, 0xdf, 0x23); + mipi_dsi_dcs_write_seq_multi(ctx, 0xb9, 0x02, 0x00); +} -static const struct ili9805_instr tm041xdhg01_init[] = { - ILI9805_INSTR(100, ILI9805_EXTCMD_CMD_SET_ENABLE_REG, ILI9805_SETEXTC_PARAMETER1, - ILI9805_SETEXTC_PARAMETER2, ILI9805_SETEXTC_PARAMETER3), - ILI9805_INSTR(100, 0xFD, 0x0F, 0x13, 0x44, 0x00), - ILI9805_INSTR(0, 0xf8, 0x18, 0x02, 0x02, 0x18, 0x02, 0x02, 0x30, 0x01, - 0x01, 0x30, 0x01, 0x01, 0x30, 0x01, 0x01), - ILI9805_INSTR(0, 0xB8, 0x74), - ILI9805_INSTR(0, 0xF1, 0x00), - ILI9805_INSTR(0, 0xF2, 0x00, 0x58, 0x40), - ILI9805_INSTR(0, 0xFC, 0x04, 0x0F, 0x01), - ILI9805_INSTR(0, 0xEB, 0x08, 0x0F), - ILI9805_INSTR(0, 0xe0, 0x01, 0x0d, 0x15, 0x0e, 0x0f, 0x0f, 0x0b, 0x08, 0x04, - 0x07, 0x0a, 0x0d, 0x0c, 0x15, 0x0f, 0x08), - ILI9805_INSTR(0, 0xe1, 0x01, 0x0d, 0x15, 0x0e, 0x0f, 0x0f, 0x0b, 0x08, 0x04, - 0x07, 0x0a, 0x0d, 0x0c, 0x15, 0x0f, 0x08), - ILI9805_INSTR(10, 0xc1, 0x15, 0x03, 0x03, 0x31), - ILI9805_INSTR(10, 0xB1, 0x00, 0x12, 0x14), - ILI9805_INSTR(10, 0xB4, 0x02), - ILI9805_INSTR(0, 0xBB, 0x14, 0x55), - ILI9805_INSTR(0, MIPI_DCS_SET_ADDRESS_MODE, 0x0a), - ILI9805_INSTR(0, MIPI_DCS_SET_PIXEL_FORMAT, 0x77), - ILI9805_INSTR(0, 0x20), - ILI9805_INSTR(0, 0xB0, 0x00), - ILI9805_INSTR(0, 0xB6, 0x01), - ILI9805_INSTR(0, 0xc2, 0x11), - ILI9805_INSTR(0, 0x51, 0xFF), - ILI9805_INSTR(0, 0x53, 0x24), - ILI9805_INSTR(0, 0x55, 0x00), -}; +static void tm041xdhg01_init(struct mipi_dsi_multi_context *ctx) +{ + mipi_dsi_dcs_write_seq_multi(ctx, ILI9805_EXTCMD_CMD_SET_ENABLE_REG, + ILI9805_SETEXTC_PARAMETER1, ILI9805_SETEXTC_PARAMETER2, + ILI9805_SETEXTC_PARAMETER3); + mipi_dsi_msleep(ctx, 100); + mipi_dsi_dcs_write_seq_multi(ctx, 0xfd, 0x0f, 0x13, 0x44, 0x00); + mipi_dsi_msleep(ctx, 100); + mipi_dsi_dcs_write_seq_multi(ctx, 0xf8, 0x18, 0x02, 0x02, 0x18, 0x02, 0x02, 0x30, 0x01, + 0x01, 0x30, 0x01, 0x01, 0x30, 0x01, 0x01); + mipi_dsi_dcs_write_seq_multi(ctx, 0xb8, 0x74); + mipi_dsi_dcs_write_seq_multi(ctx, 0xf1, 0x00); + mipi_dsi_dcs_write_seq_multi(ctx, 0xf2, 0x00, 0x58, 0x40); + mipi_dsi_dcs_write_seq_multi(ctx, 0xfc, 0x04, 0x0f, 0x01); + mipi_dsi_dcs_write_seq_multi(ctx, 0xeb, 0x08, 0x0f); + mipi_dsi_dcs_write_seq_multi(ctx, 0xe0, 0x01, 0x0d, 0x15, 0x0e, 0x0f, 0x0f, 0x0b, 0x08, + 0x04, 0x07, 0x0a, 0x0d, 0x0c, 0x15, 0x0f, 0x08); + mipi_dsi_dcs_write_seq_multi(ctx, 0xe1, 0x01, 0x0d, 0x15, 0x0e, 0x0f, 0x0f, 0x0b, 0x08, + 0x04, 0x07, 0x0a, 0x0d, 0x0c, 0x15, 0x0f, 0x08); + mipi_dsi_dcs_write_seq_multi(ctx, 0xc1, 0x15, 0x03, 0x03, 0x31); + mipi_dsi_msleep(ctx, 10); + mipi_dsi_dcs_write_seq_multi(ctx, 0xb1, 0x00, 0x12, 0x14); + mipi_dsi_msleep(ctx, 10); + mipi_dsi_dcs_write_seq_multi(ctx, 0xb4, 0x02); + mipi_dsi_msleep(ctx, 10); + mipi_dsi_dcs_write_seq_multi(ctx, 0xbb, 0x14, 0x55); + mipi_dsi_dcs_write_seq_multi(ctx, MIPI_DCS_SET_ADDRESS_MODE, 0x0a); + mipi_dsi_dcs_write_seq_multi(ctx, MIPI_DCS_SET_PIXEL_FORMAT, 0x77); + mipi_dsi_dcs_write_seq_multi(ctx, 0x20); + mipi_dsi_dcs_write_seq_multi(ctx, 0xb0, 0x00); + mipi_dsi_dcs_write_seq_multi(ctx, 0xb6, 0x01); + mipi_dsi_dcs_write_seq_multi(ctx, 0xc2, 0x11); + 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, 0x00); +} static inline struct ili9805 *panel_to_ili9805(struct drm_panel *panel) { @@ -160,16 +162,8 @@ static int ili9805_power_off(struct ili9805 *ctx) static int ili9805_activate(struct ili9805 *ctx) { struct mipi_dsi_multi_context dsi_ctx = { .dsi = ctx->dsi }; - int i; - for (i = 0; i < ctx->desc->init_length; i++) { - const struct ili9805_instr *instr = &ctx->desc->init[i]; - - mipi_dsi_dcs_write_buffer_multi(&dsi_ctx, instr->data, instr->len); - - if (instr->delay > 0) - mipi_dsi_msleep(&dsi_ctx, instr->delay); - } + ctx->desc->init(&dsi_ctx); mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); mipi_dsi_usleep_range(&dsi_ctx, 5000, 6000); @@ -246,7 +240,7 @@ static const struct drm_display_mode tm041xdhg01_timing = { }; static int ili9805_get_modes(struct drm_panel *panel, - struct drm_connector *connector) + struct drm_connector *connector) { struct ili9805 *ctx = panel_to_ili9805(panel); struct drm_display_mode *mode; @@ -343,7 +337,6 @@ static void ili9805_dsi_remove(struct mipi_dsi_device *dsi) static const struct ili9805_desc gpm1780a0_desc = { .init = gpm1780a0_init, - .init_length = ARRAY_SIZE(gpm1780a0_init), .mode = &gpm1780a0_timing, .width_mm = 65, .height_mm = 65, @@ -351,7 +344,6 @@ static const struct ili9805_desc gpm1780a0_desc = { static const struct ili9805_desc tm041xdhg01_desc = { .init = tm041xdhg01_init, - .init_length = ARRAY_SIZE(tm041xdhg01_init), .mode = &tm041xdhg01_timing, .width_mm = 42, .height_mm = 96, -- 2.43.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 2/3] drm/panel: ilitek-ili9805: Use dsi_multi in init 2026-07-21 17:27 ` [PATCH v3 2/3] drm/panel: ilitek-ili9805: Use dsi_multi in init Michail Tatas @ 2026-07-21 20:13 ` Doug Anderson 2026-07-21 20:39 ` Michail Tatas 0 siblings, 1 reply; 7+ messages in thread From: Doug Anderson @ 2026-07-21 20:13 UTC (permalink / raw) To: Michail Tatas Cc: michael, neil.armstrong, jesszhan0024, maarten.lankhorst, mripard, tzimmermann, airlied, simona, dri-devel, linux-kernel Hi, On Tue, Jul 21, 2026 at 10:27 AM Michail Tatas <michail.tatas@gmail.com> wrote: > > +static void gpm1780a0_init(struct mipi_dsi_multi_context *ctx) > +{ > + mipi_dsi_dcs_write_seq_multi(ctx, ILI9805_EXTCMD_CMD_SET_ENABLE_REG, > + ILI9805_SETEXTC_PARAMETER1, ILI9805_SETEXTC_PARAMETER2, > + ILI9805_SETEXTC_PARAMETER3); > + mipi_dsi_msleep(ctx, 100); > + mipi_dsi_dcs_write_seq_multi(ctx, 0xfd, 0x0f, 0x10, 0x44, 0x00); > + mipi_dsi_msleep(ctx, 100); > + mipi_dsi_dcs_write_seq_multi(ctx, 0xf8, 0x18, 0x02, 0x02, 0x18, 0x02, 0x02, 0x30, 0x00, > + 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00); > + mipi_dsi_dcs_write_seq_multi(ctx, 0xb8, 0x62); > + mipi_dsi_dcs_write_seq_multi(ctx, 0xf1, 0x00); > + mipi_dsi_dcs_write_seq_multi(ctx, 0xf2, 0x00, 0x58, 0x40); > + mipi_dsi_dcs_write_seq_multi(ctx, 0xf3, 0x60, 0x83, 0x04); > + mipi_dsi_dcs_write_seq_multi(ctx, 0xfc, 0x04, 0x0f, 0x01); > + mipi_dsi_dcs_write_seq_multi(ctx, 0xeb, 0x08, 0x0f); > + mipi_dsi_dcs_write_seq_multi(ctx, 0xe0, 0x00, 0x08, 0x0d, 0x0e, 0x0e, 0x0d, 0x0a, 0x08, > + 0x04, 0x08, 0x0d, 0x0f, 0x0b, 0x1c, 0x14, 0x0a); > + mipi_dsi_dcs_write_seq_multi(ctx, 0xe1, 0x00, 0x08, 0x0d, 0x0e, 0x0e, 0x0d, 0x0a, 0x08, > + 0x04, 0x08, 0x0d, 0x0f, 0x0b, 0x1c, 0x14, 0x0a); > + mipi_dsi_dcs_write_seq_multi(ctx, 0xc1, 0x13, 0x39, 0x19, 0x06); > + mipi_dsi_msleep(ctx, 10); > + mipi_dsi_dcs_write_seq_multi(ctx, 0xc7, 0xe5); > + mipi_dsi_msleep(ctx, 10); > + mipi_dsi_dcs_write_seq_multi(ctx, 0xb1, 0x00, 0x12, 0x14); > + mipi_dsi_msleep(ctx, 10); > + mipi_dsi_dcs_write_seq_multi(ctx, 0xb4, 0x02); > + mipi_dsi_msleep(ctx, 10); > + mipi_dsi_dcs_write_seq_multi(ctx, 0xbb, 0x14, 0x55); > + mipi_dsi_dcs_write_seq_multi(ctx, MIPI_DCS_SET_ADDRESS_MODE, 0x08); > + mipi_dsi_dcs_write_seq_multi(ctx, MIPI_DCS_SET_PIXEL_FORMAT, 0x77); You've already got my Reviewed-by tag, and I'm planning to merge this patch as-is. ...but my AI happened to notice that the above line could be: mipi_dsi_dcs_set_pixel_format_multi(ctx, 0x77) ...so I figured I'd at least mention it. ;-) My AI also noticed (yet another) pre-existing issue that the "name" field of "struct ili9805_desc" isn't used in this driver... -Doug ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3 2/3] drm/panel: ilitek-ili9805: Use dsi_multi in init 2026-07-21 20:13 ` Doug Anderson @ 2026-07-21 20:39 ` Michail Tatas 0 siblings, 0 replies; 7+ messages in thread From: Michail Tatas @ 2026-07-21 20:39 UTC (permalink / raw) To: Doug Anderson Cc: michael, neil.armstrong, jesszhan0024, maarten.lankhorst, mripard, tzimmermann, airlied, simona, dri-devel, linux-kernel Hello Doug, > > + mipi_dsi_dcs_write_seq_multi(ctx, 0xbb, 0x14, 0x55); > > + mipi_dsi_dcs_write_seq_multi(ctx, MIPI_DCS_SET_ADDRESS_MODE, 0x08); > > + mipi_dsi_dcs_write_seq_multi(ctx, MIPI_DCS_SET_PIXEL_FORMAT, 0x77); > > You've already got my Reviewed-by tag, and I'm planning to merge this > patch as-is. ...but my AI happened to notice that the above line could > be: > > mipi_dsi_dcs_set_pixel_format_multi(ctx, 0x77) > > ...so I figured I'd at least mention it. ;-) > > My AI also noticed (yet another) pre-existing issue that the "name" > field of "struct ili9805_desc" isn't used in this driver... Hahaha AI's like finding stuff like that, good catch. I will include these changes in this patch and send a v4. Regards, Michail ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 3/3] drm/panel: ilitek-ili9805: make cleanup funcs void 2026-07-21 17:27 [PATCH v3 0/3] drm/panel: ilitek-ili9805: convert to *_multi API Michail Tatas 2026-07-21 17:27 ` [PATCH v3 1/3] drm/panel: ilitek-ili9805: Use _multi variants Michail Tatas 2026-07-21 17:27 ` [PATCH v3 2/3] drm/panel: ilitek-ili9805: Use dsi_multi in init Michail Tatas @ 2026-07-21 17:27 ` Michail Tatas 2026-07-21 19:44 ` [PATCH v3 0/3] drm/panel: ilitek-ili9805: convert to *_multi API Doug Anderson 3 siblings, 0 replies; 7+ messages in thread From: Michail Tatas @ 2026-07-21 17:27 UTC (permalink / raw) To: michael, neil.armstrong, jesszhan0024, maarten.lankhorst, mripard, tzimmermann, airlied, simona, dianders Cc: dri-devel, linux-kernel, Michail Tatas Make cleanup functions return void since no one is checking their return values Signed-off-by: Michail Tatas <michail.tatas@gmail.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Reviewed-by: Douglas Anderson <dianders@chromium.org> --- drivers/gpu/drm/panel/panel-ilitek-ili9805.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9805.c b/drivers/gpu/drm/panel/panel-ilitek-ili9805.c index 909661f67d26..a8d501be3e9b 100644 --- a/drivers/gpu/drm/panel/panel-ilitek-ili9805.c +++ b/drivers/gpu/drm/panel/panel-ilitek-ili9805.c @@ -150,13 +150,11 @@ static int ili9805_power_on(struct ili9805 *ctx) return 0; } -static int ili9805_power_off(struct ili9805 *ctx) +static void ili9805_power_off(struct ili9805 *ctx) { gpiod_set_value(ctx->reset_gpio, 0); regulator_disable(ctx->dvdd); regulator_disable(ctx->avdd); - - return 0; } static int ili9805_activate(struct ili9805 *ctx) @@ -190,15 +188,13 @@ static int ili9805_prepare(struct drm_panel *panel) return 0; } -static int ili9805_deactivate(struct ili9805 *ctx) +static void ili9805_deactivate(struct ili9805 *ctx) { struct mipi_dsi_multi_context dsi_ctx = { .dsi = ctx->dsi }; mipi_dsi_dcs_set_display_off_multi(&dsi_ctx); mipi_dsi_usleep_range(&dsi_ctx, 5000, 10000); mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx); - - return dsi_ctx.accum_err; } static int ili9805_unprepare(struct drm_panel *panel) -- 2.43.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 0/3] drm/panel: ilitek-ili9805: convert to *_multi API 2026-07-21 17:27 [PATCH v3 0/3] drm/panel: ilitek-ili9805: convert to *_multi API Michail Tatas ` (2 preceding siblings ...) 2026-07-21 17:27 ` [PATCH v3 3/3] drm/panel: ilitek-ili9805: make cleanup funcs void Michail Tatas @ 2026-07-21 19:44 ` Doug Anderson 3 siblings, 0 replies; 7+ messages in thread From: Doug Anderson @ 2026-07-21 19:44 UTC (permalink / raw) To: Michail Tatas Cc: michael, neil.armstrong, jesszhan0024, maarten.lankhorst, mripard, tzimmermann, airlied, simona, dri-devel, linux-kernel Hi, On Tue, Jul 21, 2026 at 10:27 AM Michail Tatas <michail.tatas@gmail.com> wrote: > > This series converts panel-ilitek-ili9805 to the > mipi_dsi_*_multi helpers and cleans up the resulting code. > > Patch 1: Convert the individual DSI calls to their > *_multi variants > > Patch 2: Replace the ILI9805_INSTR table with per > panel init functions using the *_multi API, dropping > struct ili9805_instr > > Patch 3: makes ili9805_power_off() and ili9805_deactivate() > return void, since no one checks their return values. > > Michail Tatas (3): > drm/panel: ilitek-ili9805: Use _multi variants > drm/panel: ilitek-ili9805: Use dsi_multi in init > drm/panel: ilitek-ili9805: make cleanup funcs void > > drivers/gpu/drm/panel/panel-ilitek-ili9805.c | 211 ++++++++----------- > 1 file changed, 87 insertions(+), 124 deletions(-) This looks great now, thanks! Unless there is more feedback on the lists, I'll plan to apply to drm-misc-next in ~1 week. -Doug ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-07-21 20:39 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-07-21 17:27 [PATCH v3 0/3] drm/panel: ilitek-ili9805: convert to *_multi API Michail Tatas 2026-07-21 17:27 ` [PATCH v3 1/3] drm/panel: ilitek-ili9805: Use _multi variants Michail Tatas 2026-07-21 17:27 ` [PATCH v3 2/3] drm/panel: ilitek-ili9805: Use dsi_multi in init Michail Tatas 2026-07-21 20:13 ` Doug Anderson 2026-07-21 20:39 ` Michail Tatas 2026-07-21 17:27 ` [PATCH v3 3/3] drm/panel: ilitek-ili9805: make cleanup funcs void Michail Tatas 2026-07-21 19:44 ` [PATCH v3 0/3] drm/panel: ilitek-ili9805: convert to *_multi API Doug Anderson
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.