Message ID | 20240917071710.1254520-1-tejasvipin76@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/panel: elida-kd35t133: transition to mipi_dsi wrapped functions | expand |
On Tue, Sep 17, 2024 at 12:47:10PM GMT, Tejas Vipin wrote: > Changes the elida-kd35t133 panel to use multi style functions for > improved error handling. > > Signed-off-by: Tejas Vipin <tejasvipin76@gmail.com> > --- > drivers/gpu/drm/panel/panel-elida-kd35t133.c | 107 ++++++++----------- > 1 file changed, 45 insertions(+), 62 deletions(-) > > diff --git a/drivers/gpu/drm/panel/panel-elida-kd35t133.c b/drivers/gpu/drm/panel/panel-elida-kd35t133.c > index 00791ea81e90..62abda9559e7 100644 > --- a/drivers/gpu/drm/panel/panel-elida-kd35t133.c > +++ b/drivers/gpu/drm/panel/panel-elida-kd35t133.c > @@ -50,55 +50,45 @@ static inline struct kd35t133 *panel_to_kd35t133(struct drm_panel *panel) > return container_of(panel, struct kd35t133, panel); > } > > -static int kd35t133_init_sequence(struct kd35t133 *ctx) > +static void kd35t133_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 with minimal > * documentation. > */ > - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_POSITIVEGAMMA, > - 0x00, 0x13, 0x18, 0x04, 0x0f, 0x06, 0x3a, 0x56, > - 0x4d, 0x03, 0x0a, 0x06, 0x30, 0x3e, 0x0f); > - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_NEGATIVEGAMMA, > - 0x00, 0x13, 0x18, 0x01, 0x11, 0x06, 0x38, 0x34, > - 0x4d, 0x06, 0x0d, 0x0b, 0x31, 0x37, 0x0f); > - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_POWERCONTROL1, 0x18, 0x17); > - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_POWERCONTROL2, 0x41); > - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_VCOMCONTROL, 0x00, 0x1a, 0x80); > - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_ADDRESS_MODE, 0x48); > - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_PIXEL_FORMAT, 0x55); > - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_INTERFACEMODECTRL, 0x00); > - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_FRAMERATECTRL, 0xa0); > - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_DISPLAYINVERSIONCTRL, 0x02); > - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_DISPLAYFUNCTIONCTRL, > - 0x20, 0x02); > - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_SETIMAGEFUNCTION, 0x00); > - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_ADJUSTCONTROL3, > - 0xa9, 0x51, 0x2c, 0x82); > - mipi_dsi_dcs_write(dsi, MIPI_DCS_ENTER_INVERT_MODE, NULL, 0); > - > - dev_dbg(dev, "Panel init sequence done\n"); > - return 0; > + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_POSITIVEGAMMA, > + 0x00, 0x13, 0x18, 0x04, 0x0f, 0x06, 0x3a, 0x56, > + 0x4d, 0x03, 0x0a, 0x06, 0x30, 0x3e, 0x0f); > + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_NEGATIVEGAMMA, > + 0x13, 0x18, 0x01, 0x11, 0x06, 0x38, 0x34, > + 0x06, 0x0d, 0x0b, 0x31, 0x37, 0x0f); > + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_POWERCONTROL1, 0x18, 0x17); > + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_POWERCONTROL2, 0x41); > + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_VCOMCONTROL, 0x00, 0x1a, 0x80); > + mipi_dsi_dcs_write_seq_multi(dsi_ctx, MIPI_DCS_SET_ADDRESS_MODE, 0x48); > + mipi_dsi_dcs_write_seq_multi(dsi_ctx, MIPI_DCS_SET_PIXEL_FORMAT, 0x55); > + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_INTERFACEMODECTRL, 0x00); > + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_FRAMERATECTRL, 0xa0); > + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_DISPLAYINVERSIONCTRL, 0x02); > + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_DISPLAYFUNCTIONCTRL, > + 0x02); > + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_SETIMAGEFUNCTION, 0x00); > + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_ADJUSTCONTROL3, > + 0x51, 0x2c, 0x82); > + if (!dsi_ctx->accum_err) > + mipi_dsi_dcs_write(dsi_ctx->dsi, MIPI_DCS_ENTER_INVERT_MODE, NULL, 0); Please use mipi_dsi_dcs_write_buffer_multi() instead. > } > > static int kd35t133_unprepare(struct drm_panel *panel) > { > struct kd35t133 *ctx = panel_to_kd35t133(panel); > struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); > - int ret; > + struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi }; > > - ret = mipi_dsi_dcs_set_display_off(dsi); > - if (ret < 0) > - dev_err(ctx->dev, "failed to set display off: %d\n", ret); > - > - ret = mipi_dsi_dcs_enter_sleep_mode(dsi); > - if (ret < 0) { > - dev_err(ctx->dev, "failed to enter sleep mode: %d\n", ret); > - return ret; > - } > + mipi_dsi_dcs_set_display_off_multi(&dsi_ctx); > + mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx); > + if (dsi_ctx.accum_err) > + return dsi_ctx.accum_err; > > gpiod_set_value_cansleep(ctx->reset_gpio, 1); > > @@ -112,18 +102,20 @@ static int kd35t133_prepare(struct drm_panel *panel) > { > struct kd35t133 *ctx = panel_to_kd35t133(panel); > struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); > - int ret; > + struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi }; > > dev_dbg(ctx->dev, "Resetting the panel\n"); > - ret = regulator_enable(ctx->vdd); > - if (ret < 0) { > - dev_err(ctx->dev, "Failed to enable vdd supply: %d\n", ret); > - return ret; > + dsi_ctx.accum_err = regulator_enable(ctx->vdd); > + if (dsi_ctx.accum_err) { > + dev_err(ctx->dev, "Failed to enable vdd supply: %d\n", > + dsi_ctx.accum_err); > + return dsi_ctx.accum_err; > } > > - ret = regulator_enable(ctx->iovcc); > - if (ret < 0) { > - dev_err(ctx->dev, "Failed to enable iovcc supply: %d\n", ret); > + dsi_ctx.accum_err = regulator_enable(ctx->iovcc); > + if (dsi_ctx.accum_err) { > + dev_err(ctx->dev, "Failed to enable iovcc supply: %d\n", > + dsi_ctx.accum_err); > goto disable_vdd; > } > > @@ -135,25 +127,16 @@ static int kd35t133_prepare(struct drm_panel *panel) > > msleep(20); > > - ret = mipi_dsi_dcs_exit_sleep_mode(dsi); > - if (ret < 0) { > - dev_err(ctx->dev, "Failed to exit sleep mode: %d\n", ret); > - goto disable_iovcc; > - } > + mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); > + mipi_dsi_msleep(&dsi_ctx, 250); > > - msleep(250); > + kd35t133_init_sequence(&dsi_ctx); > + if (!dsi_ctx.accum_err) > + dev_dbg(ctx->dev, "Panel init sequence done\n"); > > - ret = kd35t133_init_sequence(ctx); > - if (ret < 0) { > - dev_err(ctx->dev, "Panel init sequence failed: %d\n", ret); > + mipi_dsi_dcs_set_display_on_multi(&dsi_ctx); > + if (dsi_ctx.accum_err) > goto disable_iovcc; > - } Move this after the last mipi_dsi_msleep(), merge with the error handling. > - > - ret = mipi_dsi_dcs_set_display_on(dsi); > - if (ret < 0) { > - dev_err(ctx->dev, "Failed to set display on: %d\n", ret); > - goto disable_iovcc; > - } > > msleep(50); mipi_dsi_msleep() > > @@ -163,7 +146,7 @@ static int kd35t133_prepare(struct drm_panel *panel) > regulator_disable(ctx->iovcc); > disable_vdd: > regulator_disable(ctx->vdd); > - return ret; > + return dsi_ctx.accum_err; > } > > static const struct drm_display_mode default_mode = { > -- > 2.46.0 >
On 9/20/24 9:59 PM, Dmitry Baryshkov wrote: > On Tue, Sep 17, 2024 at 12:47:10PM GMT, Tejas Vipin wrote: >> Changes the elida-kd35t133 panel to use multi style functions for >> improved error handling. >> >> Signed-off-by: Tejas Vipin <tejasvipin76@gmail.com> >> --- >> drivers/gpu/drm/panel/panel-elida-kd35t133.c | 107 ++++++++----------- >> 1 file changed, 45 insertions(+), 62 deletions(-) >> >> diff --git a/drivers/gpu/drm/panel/panel-elida-kd35t133.c b/drivers/gpu/drm/panel/panel-elida-kd35t133.c >> index 00791ea81e90..62abda9559e7 100644 >> --- a/drivers/gpu/drm/panel/panel-elida-kd35t133.c >> +++ b/drivers/gpu/drm/panel/panel-elida-kd35t133.c >> @@ -135,25 +127,16 @@ static int kd35t133_prepare(struct drm_panel *panel) >> >> msleep(20); >> >> - ret = mipi_dsi_dcs_exit_sleep_mode(dsi); >> - if (ret < 0) { >> - dev_err(ctx->dev, "Failed to exit sleep mode: %d\n", ret); >> - goto disable_iovcc; >> - } >> + mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); >> + mipi_dsi_msleep(&dsi_ctx, 250); >> >> - msleep(250); >> + kd35t133_init_sequence(&dsi_ctx); >> + if (!dsi_ctx.accum_err) >> + dev_dbg(ctx->dev, "Panel init sequence done\n"); >> >> - ret = kd35t133_init_sequence(ctx); >> - if (ret < 0) { >> - dev_err(ctx->dev, "Panel init sequence failed: %d\n", ret); >> + mipi_dsi_dcs_set_display_on_multi(&dsi_ctx); >> + if (dsi_ctx.accum_err) >> goto disable_iovcc; >> - } > > Move this after the last mipi_dsi_msleep(), merge with the error > handling. > >> - >> - ret = mipi_dsi_dcs_set_display_on(dsi); >> - if (ret < 0) { >> - dev_err(ctx->dev, "Failed to set display on: %d\n", ret); >> - goto disable_iovcc; >> - } >> >> msleep(50); > > mipi_dsi_msleep() Is this necessary though? Converting this msleep to mipi_dsi_msleep and moving the previous dsi_ctx.accum_err check to below this seems redundant. If the check is placed above msleep, then we need to only check for the error once. If its placed below mipi_dsi_msleep, we end up checking for the error twice (once as written in the code, once in the code generated by the macro) which is unnecessary.
On Sun, Sep 22, 2024 at 11:49:49AM GMT, Tejas Vipin wrote: > > > On 9/20/24 9:59 PM, Dmitry Baryshkov wrote: > > On Tue, Sep 17, 2024 at 12:47:10PM GMT, Tejas Vipin wrote: > >> Changes the elida-kd35t133 panel to use multi style functions for > >> improved error handling. > >> > >> Signed-off-by: Tejas Vipin <tejasvipin76@gmail.com> > >> --- > >> drivers/gpu/drm/panel/panel-elida-kd35t133.c | 107 ++++++++----------- > >> 1 file changed, 45 insertions(+), 62 deletions(-) > >> > >> diff --git a/drivers/gpu/drm/panel/panel-elida-kd35t133.c b/drivers/gpu/drm/panel/panel-elida-kd35t133.c > >> index 00791ea81e90..62abda9559e7 100644 > >> --- a/drivers/gpu/drm/panel/panel-elida-kd35t133.c > >> +++ b/drivers/gpu/drm/panel/panel-elida-kd35t133.c > >> @@ -135,25 +127,16 @@ static int kd35t133_prepare(struct drm_panel *panel) > >> > >> msleep(20); > >> > >> - ret = mipi_dsi_dcs_exit_sleep_mode(dsi); > >> - if (ret < 0) { > >> - dev_err(ctx->dev, "Failed to exit sleep mode: %d\n", ret); > >> - goto disable_iovcc; > >> - } > >> + mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); > >> + mipi_dsi_msleep(&dsi_ctx, 250); > >> > >> - msleep(250); > >> + kd35t133_init_sequence(&dsi_ctx); > >> + if (!dsi_ctx.accum_err) > >> + dev_dbg(ctx->dev, "Panel init sequence done\n"); > >> > >> - ret = kd35t133_init_sequence(ctx); > >> - if (ret < 0) { > >> - dev_err(ctx->dev, "Panel init sequence failed: %d\n", ret); > >> + mipi_dsi_dcs_set_display_on_multi(&dsi_ctx); > >> + if (dsi_ctx.accum_err) > >> goto disable_iovcc; > >> - } > > > > Move this after the last mipi_dsi_msleep(), merge with the error > > handling. > > > >> - > >> - ret = mipi_dsi_dcs_set_display_on(dsi); > >> - if (ret < 0) { > >> - dev_err(ctx->dev, "Failed to set display on: %d\n", ret); > >> - goto disable_iovcc; > >> - } > >> > >> msleep(50); > > > > mipi_dsi_msleep() > > Is this necessary though? Converting this msleep to mipi_dsi_msleep and > moving the previous dsi_ctx.accum_err check to below this seems > redundant. If the check is placed above msleep, then we need to only > check for the error once. If its placed below mipi_dsi_msleep, we end up > checking for the error twice (once as written in the code, once in the > code generated by the macro) which is unnecessary. Yes, uniformity. And the compiler will most likely optimize things away. > > -- > Tejas Vipin
diff --git a/drivers/gpu/drm/panel/panel-elida-kd35t133.c b/drivers/gpu/drm/panel/panel-elida-kd35t133.c index 00791ea81e90..62abda9559e7 100644 --- a/drivers/gpu/drm/panel/panel-elida-kd35t133.c +++ b/drivers/gpu/drm/panel/panel-elida-kd35t133.c @@ -50,55 +50,45 @@ static inline struct kd35t133 *panel_to_kd35t133(struct drm_panel *panel) return container_of(panel, struct kd35t133, panel); } -static int kd35t133_init_sequence(struct kd35t133 *ctx) +static void kd35t133_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 with minimal * documentation. */ - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_POSITIVEGAMMA, - 0x00, 0x13, 0x18, 0x04, 0x0f, 0x06, 0x3a, 0x56, - 0x4d, 0x03, 0x0a, 0x06, 0x30, 0x3e, 0x0f); - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_NEGATIVEGAMMA, - 0x00, 0x13, 0x18, 0x01, 0x11, 0x06, 0x38, 0x34, - 0x4d, 0x06, 0x0d, 0x0b, 0x31, 0x37, 0x0f); - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_POWERCONTROL1, 0x18, 0x17); - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_POWERCONTROL2, 0x41); - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_VCOMCONTROL, 0x00, 0x1a, 0x80); - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_ADDRESS_MODE, 0x48); - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_PIXEL_FORMAT, 0x55); - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_INTERFACEMODECTRL, 0x00); - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_FRAMERATECTRL, 0xa0); - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_DISPLAYINVERSIONCTRL, 0x02); - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_DISPLAYFUNCTIONCTRL, - 0x20, 0x02); - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_SETIMAGEFUNCTION, 0x00); - mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_ADJUSTCONTROL3, - 0xa9, 0x51, 0x2c, 0x82); - mipi_dsi_dcs_write(dsi, MIPI_DCS_ENTER_INVERT_MODE, NULL, 0); - - dev_dbg(dev, "Panel init sequence done\n"); - return 0; + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_POSITIVEGAMMA, + 0x00, 0x13, 0x18, 0x04, 0x0f, 0x06, 0x3a, 0x56, + 0x4d, 0x03, 0x0a, 0x06, 0x30, 0x3e, 0x0f); + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_NEGATIVEGAMMA, + 0x13, 0x18, 0x01, 0x11, 0x06, 0x38, 0x34, + 0x06, 0x0d, 0x0b, 0x31, 0x37, 0x0f); + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_POWERCONTROL1, 0x18, 0x17); + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_POWERCONTROL2, 0x41); + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_VCOMCONTROL, 0x00, 0x1a, 0x80); + mipi_dsi_dcs_write_seq_multi(dsi_ctx, MIPI_DCS_SET_ADDRESS_MODE, 0x48); + mipi_dsi_dcs_write_seq_multi(dsi_ctx, MIPI_DCS_SET_PIXEL_FORMAT, 0x55); + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_INTERFACEMODECTRL, 0x00); + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_FRAMERATECTRL, 0xa0); + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_DISPLAYINVERSIONCTRL, 0x02); + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_DISPLAYFUNCTIONCTRL, + 0x02); + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_SETIMAGEFUNCTION, 0x00); + mipi_dsi_dcs_write_seq_multi(dsi_ctx, KD35T133_CMD_ADJUSTCONTROL3, + 0x51, 0x2c, 0x82); + if (!dsi_ctx->accum_err) + mipi_dsi_dcs_write(dsi_ctx->dsi, MIPI_DCS_ENTER_INVERT_MODE, NULL, 0); } static int kd35t133_unprepare(struct drm_panel *panel) { struct kd35t133 *ctx = panel_to_kd35t133(panel); struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); - int ret; + struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi }; - ret = mipi_dsi_dcs_set_display_off(dsi); - if (ret < 0) - dev_err(ctx->dev, "failed to set display off: %d\n", ret); - - ret = mipi_dsi_dcs_enter_sleep_mode(dsi); - if (ret < 0) { - dev_err(ctx->dev, "failed to enter sleep mode: %d\n", ret); - return ret; - } + mipi_dsi_dcs_set_display_off_multi(&dsi_ctx); + mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx); + if (dsi_ctx.accum_err) + return dsi_ctx.accum_err; gpiod_set_value_cansleep(ctx->reset_gpio, 1); @@ -112,18 +102,20 @@ static int kd35t133_prepare(struct drm_panel *panel) { struct kd35t133 *ctx = panel_to_kd35t133(panel); struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); - int ret; + struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi }; dev_dbg(ctx->dev, "Resetting the panel\n"); - ret = regulator_enable(ctx->vdd); - if (ret < 0) { - dev_err(ctx->dev, "Failed to enable vdd supply: %d\n", ret); - return ret; + dsi_ctx.accum_err = regulator_enable(ctx->vdd); + if (dsi_ctx.accum_err) { + dev_err(ctx->dev, "Failed to enable vdd supply: %d\n", + dsi_ctx.accum_err); + return dsi_ctx.accum_err; } - ret = regulator_enable(ctx->iovcc); - if (ret < 0) { - dev_err(ctx->dev, "Failed to enable iovcc supply: %d\n", ret); + dsi_ctx.accum_err = regulator_enable(ctx->iovcc); + if (dsi_ctx.accum_err) { + dev_err(ctx->dev, "Failed to enable iovcc supply: %d\n", + dsi_ctx.accum_err); goto disable_vdd; } @@ -135,25 +127,16 @@ static int kd35t133_prepare(struct drm_panel *panel) msleep(20); - ret = mipi_dsi_dcs_exit_sleep_mode(dsi); - if (ret < 0) { - dev_err(ctx->dev, "Failed to exit sleep mode: %d\n", ret); - goto disable_iovcc; - } + mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); + mipi_dsi_msleep(&dsi_ctx, 250); - msleep(250); + kd35t133_init_sequence(&dsi_ctx); + if (!dsi_ctx.accum_err) + dev_dbg(ctx->dev, "Panel init sequence done\n"); - ret = kd35t133_init_sequence(ctx); - if (ret < 0) { - dev_err(ctx->dev, "Panel init sequence failed: %d\n", ret); + mipi_dsi_dcs_set_display_on_multi(&dsi_ctx); + if (dsi_ctx.accum_err) goto disable_iovcc; - } - - ret = mipi_dsi_dcs_set_display_on(dsi); - if (ret < 0) { - dev_err(ctx->dev, "Failed to set display on: %d\n", ret); - goto disable_iovcc; - } msleep(50); @@ -163,7 +146,7 @@ static int kd35t133_prepare(struct drm_panel *panel) regulator_disable(ctx->iovcc); disable_vdd: regulator_disable(ctx->vdd); - return ret; + return dsi_ctx.accum_err; } static const struct drm_display_mode default_mode = {
Changes the elida-kd35t133 panel to use multi style functions for improved error handling. Signed-off-by: Tejas Vipin <tejasvipin76@gmail.com> --- drivers/gpu/drm/panel/panel-elida-kd35t133.c | 107 ++++++++----------- 1 file changed, 45 insertions(+), 62 deletions(-)