Hi, On Sun, Aug 18, 2024 at 12:53:56PM +0530, Tejas Vipin wrote: > Changes the mantix-mlaf057we51 panel to use multi style functions for > improved error handling. > > Signed-off-by: Tejas Vipin <tejasvipin76@xxxxxxxxx> > --- > .../gpu/drm/panel/panel-mantix-mlaf057we51.c | 79 +++++++------------ > 1 file changed, 27 insertions(+), 52 deletions(-) > > diff --git a/drivers/gpu/drm/panel/panel-mantix-mlaf057we51.c b/drivers/gpu/drm/panel/panel-mantix-mlaf057we51.c > index ea4a6bf6d35b..4db852ffb0f6 100644 > --- a/drivers/gpu/drm/panel/panel-mantix-mlaf057we51.c > +++ b/drivers/gpu/drm/panel/panel-mantix-mlaf057we51.c > @@ -23,7 +23,7 @@ > > /* Manufacturer specific Commands send via DSI */ > #define MANTIX_CMD_OTP_STOP_RELOAD_MIPI 0x41 > -#define MANTIX_CMD_INT_CANCEL 0x4C > +#define MANTIX_CMD_INT_CANCEL 0x4c > #define MANTIX_CMD_SPI_FINISH 0x90 > > struct mantix { > @@ -45,82 +45,57 @@ static inline struct mantix *panel_to_mantix(struct drm_panel *panel) > return container_of(panel, struct mantix, panel); > } > > -static int mantix_init_sequence(struct mantix *ctx) > +static void mantix_init_sequence(struct mipi_dsi_multi_context *dsi_ctx) > { > - struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); > - struct device *dev = ctx->dev; > - > /* > * Init sequence was supplied by the panel vendor. > */ > - mipi_dsi_generic_write_seq(dsi, MANTIX_CMD_OTP_STOP_RELOAD_MIPI, 0x5A); > - > - mipi_dsi_generic_write_seq(dsi, MANTIX_CMD_INT_CANCEL, 0x03); > - mipi_dsi_generic_write_seq(dsi, MANTIX_CMD_OTP_STOP_RELOAD_MIPI, 0x5A, 0x03); > - mipi_dsi_generic_write_seq(dsi, 0x80, 0xA9, 0x00); > + mipi_dsi_generic_write_seq_multi(dsi_ctx, MANTIX_CMD_OTP_STOP_RELOAD_MIPI, 0x5a); > > - mipi_dsi_generic_write_seq(dsi, MANTIX_CMD_OTP_STOP_RELOAD_MIPI, 0x5A, 0x09); > - mipi_dsi_generic_write_seq(dsi, 0x80, 0x64, 0x00, 0x64, 0x00, 0x00); > - msleep(20); > + mipi_dsi_generic_write_seq_multi(dsi_ctx, MANTIX_CMD_INT_CANCEL, 0x03); > + mipi_dsi_generic_write_seq_multi(dsi_ctx, MANTIX_CMD_OTP_STOP_RELOAD_MIPI, 0x5a, 0x03); > + mipi_dsi_generic_write_seq_multi(dsi_ctx, 0x80, 0xa9, 0x00); > > - mipi_dsi_generic_write_seq(dsi, MANTIX_CMD_SPI_FINISH, 0xA5); > - mipi_dsi_generic_write_seq(dsi, MANTIX_CMD_OTP_STOP_RELOAD_MIPI, 0x00, 0x2F); > - msleep(20); > + mipi_dsi_generic_write_seq_multi(dsi_ctx, MANTIX_CMD_OTP_STOP_RELOAD_MIPI, 0x5a, 0x09); > + mipi_dsi_generic_write_seq_multi(dsi_ctx, 0x80, 0x64, 0x00, 0x64, 0x00, 0x00); > + mipi_dsi_msleep(dsi_ctx, 20); > > - dev_dbg(dev, "Panel init sequence done\n"); > - return 0; > + mipi_dsi_generic_write_seq_multi(dsi_ctx, MANTIX_CMD_SPI_FINISH, 0xa5); > + mipi_dsi_generic_write_seq_multi(dsi_ctx, MANTIX_CMD_OTP_STOP_RELOAD_MIPI, 0x00, 0x2f); > + mipi_dsi_msleep(dsi_ctx, 20); > } > > static int mantix_enable(struct drm_panel *panel) > { > struct mantix *ctx = panel_to_mantix(panel); > - struct device *dev = ctx->dev; > - struct mipi_dsi_device *dsi = to_mipi_dsi_device(dev); > - int ret; > + struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); > + struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi }; > > - ret = mantix_init_sequence(ctx); > - if (ret < 0) { > - dev_err(ctx->dev, "Panel init sequence failed: %d\n", ret); > - return ret; > - } > + mantix_init_sequence(&dsi_ctx); > + if (!dsi_ctx.accum_err) > + dev_dbg(ctx->dev, "Panel init sequence done\n"); > > - ret = mipi_dsi_dcs_exit_sleep_mode(dsi); > - if (ret < 0) { > - dev_err(dev, "Failed to exit sleep mode\n"); > - return ret; > - } > - msleep(20); > + mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); > + mipi_dsi_msleep(&dsi_ctx, 20); > > - ret = mipi_dsi_dcs_set_display_on(dsi); > - if (ret) > - return ret; > - usleep_range(10000, 12000); > + mipi_dsi_dcs_set_display_on_multi(&dsi_ctx); > + mipi_dsi_usleep_range(&dsi_ctx, 10000, 12000); > > - ret = mipi_dsi_turn_on_peripheral(dsi); > - if (ret < 0) { > - dev_err(dev, "Failed to turn on peripheral\n"); > - return ret; > - } > + mipi_dsi_turn_on_peripheral_multi(&dsi_ctx); > > - return 0; > + return dsi_ctx.accum_err; > } > > static int mantix_disable(struct drm_panel *panel) > { > struct mantix *ctx = panel_to_mantix(panel); > struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); > - int ret; > - > - ret = mipi_dsi_dcs_set_display_off(dsi); > - if (ret < 0) > - dev_err(ctx->dev, "Failed to turn off the display: %d\n", ret); > + struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi }; > > - ret = mipi_dsi_dcs_enter_sleep_mode(dsi); > - if (ret < 0) > - dev_err(ctx->dev, "Failed to enter sleep mode: %d\n", ret); > + mipi_dsi_dcs_set_display_off_multi(&dsi_ctx); > + mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx); > > - > - return 0; > + return dsi_ctx.accum_err; > } > > static int mantix_unprepare(struct drm_panel *panel) Reviewed-by: Guido Günther <agx@xxxxxxxxxxx> The split out of cleanups as suggested by Neil would be nice though) Cheers, -- Guido > -- > 2.46.0 >