[PATCH RFC 5/7] drm/panel: novatek-nt36672e: use wrapped MIPI DCS functions
Doug Anderson
dianders at chromium.org
Fri May 10 21:46:48 UTC 2024
Hi,
On Thu, May 9, 2024 at 3:37 PM Dmitry Baryshkov
<dmitry.baryshkov at linaro.org> wrote:
>
> Remove conditional code and always use mipi_dsi_dcs_*multi() wrappers to
> simplify driver's init/exit code. This also includes passing context to
> the init_sequence() function instead of passing the DSI device.
>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
> ---
> drivers/gpu/drm/panel/panel-novatek-nt36672e.c | 587 ++++++++++++-------------
> 1 file changed, 281 insertions(+), 306 deletions(-)
One note is that we might not be able to land ${SUBJECT} patch since
the patch it's based on [1] doesn't have any Reviewed-by tags. Just
sayin'. ;-)
[1] https://lore.kernel.org/r/20240508135148.v4.6.I3c08a7d02c467d2bc88da14e513ea4c8649fce45@changeid
> @@ -381,61 +377,40 @@ static int nt36672e_power_off(struct nt36672e_panel *ctx)
> return ret;
> }
>
> -static int nt36672e_on(struct nt36672e_panel *ctx)
> +static int nt36672e_on(struct nt36672e_panel *panel)
Small nit that I think of the variable "panel" as referring to a
"struct drm_panel". I'd personally rather this be named something
else, like "nt36672e".
> {
> - struct mipi_dsi_device *dsi = ctx->dsi;
> - const struct panel_desc *desc = ctx->desc;
> - int ret = 0;
> + struct mipi_dsi_multi_context ctx = { .dsi = panel->dsi };
> + struct mipi_dsi_device *dsi = panel->dsi;
> + const struct panel_desc *desc = panel->desc;
>
> dsi->mode_flags |= MIPI_DSI_MODE_LPM;
>
> - if (desc->init_sequence) {
> - ret = desc->init_sequence(dsi);
> - if (ret < 0) {
> - dev_err(&dsi->dev, "panel init sequence failed: %d\n", ret);
> - return ret;
> - }
> - }
> + if (desc->init_sequence)
> + desc->init_sequence(&ctx);
>
> - ret = mipi_dsi_dcs_exit_sleep_mode(dsi);
> - if (ret < 0) {
> - dev_err(&dsi->dev, "Failed to exit sleep mode: %d\n", ret);
> - return ret;
> - }
> - msleep(120);
> + mipi_dsi_dcs_exit_sleep_mode_multi(&ctx);
> + mipi_dsi_msleep(&ctx, 120);
>
> - ret = mipi_dsi_dcs_set_display_on(dsi);
> - if (ret < 0) {
> - dev_err(&dsi->dev, "Failed to set display on: %d\n", ret);
> - return ret;
> - }
> - msleep(100);
> + mipi_dsi_dcs_set_display_on_multi(&ctx);
>
> - return 0;
> + mipi_dsi_msleep(&ctx, 100);
> +
> + return ctx.accum_err;
> }
>
> -static int nt36672e_off(struct nt36672e_panel *ctx)
> +static int nt36672e_off(struct nt36672e_panel *panel)
> {
> - struct mipi_dsi_device *dsi = ctx->dsi;
> - int ret = 0;
> + struct mipi_dsi_multi_context ctx = { .dsi = panel->dsi };
>
> - dsi->mode_flags &= ~MIPI_DSI_MODE_LPM;
> + panel->dsi->mode_flags &= ~MIPI_DSI_MODE_LPM;
>
> - ret = mipi_dsi_dcs_set_display_off(dsi);
> - if (ret < 0) {
> - dev_err(&dsi->dev, "Failed to set display off: %d\n", ret);
> - return ret;
> - }
> - msleep(20);
> + mipi_dsi_dcs_set_display_off_multi(&ctx);
> + mipi_dsi_msleep(&ctx, 20);
>
> - ret = mipi_dsi_dcs_enter_sleep_mode(dsi);
> - if (ret < 0) {
> - dev_err(&dsi->dev, "Failed to enter sleep mode: %d\n", ret);
> - return ret;
> - }
> - msleep(60);
> + mipi_dsi_dcs_enter_sleep_mode_multi(&ctx);
> + mipi_dsi_msleep(&ctx, 60);
>
> - return 0;
> + return ctx.accum_err;
> }
nit: similar to other patches in the series, the callers of
nt36672e_on() and nt36672e_off() should be able to get rid of their
error prints.
In any case:
Reviewed-by: Douglas Anderson <dianders at chromium.org>
More information about the dri-devel
mailing list