Hi, On Tue, Mar 18, 2025 at 7:37 AM Anusha Srivatsa <asriv...@redhat.com> wrote: > > Move away from using deprecated API and use _multi > variants if available. Use mipi_dsi_msleep() > and mipi_dsi_usleep_range() instead of msleep() > and usleep_range() respectively. > > Used Coccinelle to find the _multi variant APIs, > replacing mpi_dsi_msleep() where necessary and for returning > dsi_ctx.accum_err in these functions. Manually handled the > reset step before returning from r63353_panel_activate() > > v2: Do not skip the reset in case of error during > panel activate (Dmitry) > - Convert all usleep_range() > > v3: mipi_dsi_usleep_range() is to be used only when in > between _multi commands(Doug) > - Check for error once in the end while using _multi > variants (Doug) > > v4: Change return type of r63353_panel_deactivate() to void (Doug) > > @rule_1@ > identifier dsi_var; > identifier r; > identifier func; > type t; > position p; > expression dsi_device; > expression list es; > @@ > t func(...) { > ... > struct mipi_dsi_device *dsi_var = dsi_device; > +struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi_var }; > <+... > ( > -r = mipi_dsi_dcs_nop(dsi_var)@p; > +mipi_dsi_dcs_nop_multi(&dsi_ctx); > | > -r = mipi_dsi_dcs_exit_sleep_mode(dsi_var)@p; > +mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); > | > -r = mipi_dsi_dcs_enter_sleep_mode(dsi_var)@p; > +mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx); > | > -r = mipi_dsi_dcs_write_buffer(dsi_var,es)@p; > +mipi_dsi_dcs_write_buffer_multi(&dsi_ctx,es); > | > -r = mipi_dsi_dcs_set_display_off(dsi_var,es)@p; > +mipi_dsi_dcs_set_display_off_multi(&dsi_ctx,es); > | > -r = mipi_dsi_compression_mode_ext(dsi_var,es)@p; > +mipi_dsi_compression_mode_ext_multi(&dsi_ctx,es); > | > -r = mipi_dsi_compression_mode(dsi_var,es)@p; > +mipi_dsi_compression_mode_multi(&dsi_ctx,es); > | > -r = mipi_dsi_picture_parameter_set(dsi_var,es)@p; > +mipi_dsi_picture_parameter_set_multi(&dsi_ctx,es); > | > -r = mipi_dsi_dcs_set_display_on(dsi_var,es)@p; > +mipi_dsi_dcs_set_display_on_multi(&dsi_ctx,es); > | > -r = mipi_dsi_dcs_set_tear_on(dsi_var)@p; > +mipi_dsi_dcs_set_tear_on_multi(&dsi_ctx); > | > -r = mipi_dsi_turn_on_peripheral(dsi_var)@p; > +mipi_dsi_turn_on_peripheral_multi(&dsi_ctx); > | > -r = mipi_dsi_dcs_soft_reset(dsi_var)@p; > +mipi_dsi_dcs_soft_reset_multi(&dsi_ctx); > | > -r = mipi_dsi_dcs_set_display_brightness(dsi_var,es)@p; > +mipi_dsi_dcs_set_display_brightness_multi(&dsi_ctx,es); > | > -r = mipi_dsi_dcs_set_pixel_format(dsi_var,es)@p; > +mipi_dsi_dcs_set_pixel_format_multi(&dsi_ctx,es); > | > -r = mipi_dsi_dcs_set_column_address(dsi_var,es)@p; > +mipi_dsi_dcs_set_column_address_multi(&dsi_ctx,es); > | > -r = mipi_dsi_dcs_set_page_address(dsi_var,es)@p; > +mipi_dsi_dcs_set_page_address_multi(&dsi_ctx,es); > | > -r = mipi_dsi_dcs_set_tear_scanline(dsi_var,es)@p; > +mipi_dsi_dcs_set_tear_scanline_multi(&dsi_ctx,es); > ) > -if(r < 0) { > -... > -} > ...+> > } > > @rule_2@ > identifier dsi_var; > identifier r; > identifier func; > type t; > position p; > expression dsi_device; > expression list es; > @@ > t func(...) { > ... > struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi_var }; > <+... > ( > -r = msleep(es)@p; > +r = mipi_dsi_msleep(&dsi_ctx,es); > | > -msleep(es)@p; > +mipi_dsi_msleep(&dsi_ctx,es); > | > -r = usleep_range(es)@p; > +r = mipi_dsi_usleep_range(&dsi_ctx,es); > | > -usleep_range(es)@p; > +mipi_dsi_usleep_range(&dsi_ctx,es); > ) > ...+> > } > > @rule_3@ > identifier dsi_var; > identifier func; > type t; > position p; > expression list es; > @@ > t func(...) { > ... > struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi_var }; > ... > -return 0; > +return dsi_ctx.accum_err; > } > > Cc: Maxime Ripard <mrip...@kernel.org> > Cc: Dmitry Baryshkov <dmitry.barysh...@linaro.org> > Cc: Tejas Vipin <tejasvipi...@gmail.com> > Cc: Douglas Anderson <diand...@chromium.org> > Cc: Neil Armstrong <neil.armstr...@linaro.org> > Reviewed-by: Douglas Anderson <diand...@chromium.org> > Signed-off-by: Anusha Srivatsa <asriv...@redhat.com> > --- > Previous attempt for this change was addressed in:[1] > The series did not handle returns properly and still > used msleep() and usleep_range() API. > It also collided with an Tejas's similar efforts. > > Will be sending the patches per driver instead of > major haul of changes. > > Following [2] for reference. > > [1] -> https://patchwork.freedesktop.org/series/144824/ > [2] -> > https://lore.kernel.org/dri-devel/20250220045721.145905-1-tejasvipi...@gmail.com/#iZ31drivers:gpu:drm:panel:panel-sony-td4353-jdi.c > --- > Changes in v4: > - Change return type for r63353_panel_deactivate() from int to void > - Link to v3: > https://lore.kernel.org/all/20250314-b4-mipi-synaptic-v1-1-a64ccb5e5...@redhat.com/ > > Changes in v3: > - Modify the script to handle returns and msleeps () > - handle reset in case of error properly > > - Link to v2: > https://lore.kernel.org/all/20250310-mipi-synaptic-1-v2-1-20ee4397c...@redhat.com/ > > Changes in v2: > - Handle the reset case properly > - Handle msleep() and usleep_range() > > - Link to v1: > https://lore.kernel.org/r/20250305-mipi-synaptic-1-v1-1-92017cd19...@redhat.com > --- > drivers/gpu/drm/panel/panel-synaptics-r63353.c | 68 > +++++++------------------- > 1 file changed, 19 insertions(+), 49 deletions(-)
Pushed to drm-misc-next: [1/1] drm/panel/synaptics-r63353: Use _multi variants commit: c8ba07caaecc622a9922cda49f24790821af8a71