[PATCH] drm/panel: novatek-nt36523: transition to mipi_dsi wrapped functions
Dmitry Baryshkov
dmitry.baryshkov at linaro.org
Thu Mar 6 16:33:51 UTC 2025
On Thu, Mar 06, 2025 at 03:05:10PM +0100, neil.armstrong at linaro.org wrote:
> On 06/03/2025 14:43, Tejas Vipin wrote:
> > Changes the novatek-nt36523 panel to use multi style functions for
> > improved error handling.
> >
> > Signed-off-by: Tejas Vipin <tejasvipin76 at gmail.com>
> > ---
> > drivers/gpu/drm/panel/panel-novatek-nt36523.c | 1683 ++++++++---------
> > 1 file changed, 823 insertions(+), 860 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/panel/panel-novatek-nt36523.c b/drivers/gpu/drm/panel/panel-novatek-nt36523.c
> > index 04f1d2676c78..922a225f6258 100644
> > --- a/drivers/gpu/drm/panel/panel-novatek-nt36523.c
> > +++ b/drivers/gpu/drm/panel/panel-novatek-nt36523.c
> > @@ -23,10 +23,12 @@
> > #define DSI_NUM_MIN 1
> > -#define mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, cmd, seq...) \
> > - do { \
> > - mipi_dsi_dcs_write_seq(dsi0, cmd, seq); \
> > - mipi_dsi_dcs_write_seq(dsi1, cmd, seq); \
> > +#define mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx0, dsi_ctx1, cmd, seq...) \
> > + do { \
> > + mipi_dsi_dcs_write_seq_multi(&dsi_ctx0, cmd, seq); \
> > + dsi_ctx1.accum_err = dsi_ctx0.accum_err; \
> > + mipi_dsi_dcs_write_seq_multi(&dsi_ctx1, cmd, seq); \
> > + dsi_ctx0.accum_err = dsi_ctx1.accum_err; \
>
> Just thinking out loud, but can't we do :
>
> struct mipi_dsi_multi_context dsi_ctx = { .dsi = NULL };
>
> #define mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, cmd, seq...) \
> do {
> dsi_ctx.dsi = dsi0; \
> mipi_dsi_dcs_write_seq_multi(&dsi_ctx, cmd, seq); \
> dsi_ctx.dsi = dsi1; \
> mipi_dsi_dcs_write_seq_multi(&dsi_ctx, cmd, seq); \
>
> ?
>
> So we have a single accum_err.
I'd say that can be counter-prodactive. If only one of the links falls
apart, then the second link still can be initialized (and by observing a
half of the screen the user / devloper can make several assumptions).
In case of using just one context the driver will fail on the first
error and skip the rest of the init for both halves.
I'd have a different suggestion though: what about passing two contexts
to the init_sequence callback and letting nt36523_prepare() handle each
of the error separately?
--
With best wishes
Dmitry
More information about the dri-devel
mailing list