<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Sun, Mar 16, 2025 at 7:32 PM Dmitry Baryshkov <<a href="mailto:dmitry.baryshkov@oss.qualcomm.com">dmitry.baryshkov@oss.qualcomm.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Sun, Mar 16, 2025 at 02:58:22PM -0400, Anusha Srivatsa wrote:<br>
> Move away from using deprecated API and use _multi<br>
> variants if available. Use mipi_dsi_msleep()<br>
> and mipi_dsi_usleep_range() instead of msleep()<br>
> and usleep_range() respectively.<br>
> <br>
> Used Coccinelle to find the _multi variant APIs,<br>
> replacing mpi_dsi_msleep() where necessary and for returning<br>
> dsi_ctx.accum_err in these functions.<br>
> <br>
> @rule_1@<br>
> identifier dsi_var;<br>
> identifier r;<br>
> identifier func;<br>
> type t;<br>
> position p;<br>
> expression dsi_device;<br>
> expression list es;<br>
> @@<br>
> t func(...) {<br>
> ...<br>
> struct mipi_dsi_device *dsi_var = dsi_device;<br>
> +struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi_var };<br>
> <+...<br>
> (<br>
> -r = mipi_dsi_dcs_nop(dsi_var)@p;<br>
> +mipi_dsi_dcs_nop_multi(&dsi_ctx);<br>
> |<br>
> -r = mipi_dsi_dcs_exit_sleep_mode(dsi_var)@p;<br>
> +mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx);<br>
> |<br>
> -r = mipi_dsi_dcs_enter_sleep_mode(dsi_var)@p;<br>
> +mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx);<br>
> |<br>
> -r = mipi_dsi_dcs_write_buffer(dsi_var,es)@p;<br>
> +mipi_dsi_dcs_write_buffer_multi(&dsi_ctx,es);<br>
> |<br>
> -r = mipi_dsi_dcs_set_display_off(dsi_var,es)@p;<br>
> +mipi_dsi_dcs_set_display_off_multi(&dsi_ctx,es);<br>
> |<br>
> -r = mipi_dsi_compression_mode_ext(dsi_var,es)@p;<br>
> +mipi_dsi_compression_mode_ext_multi(&dsi_ctx,es);<br>
> |<br>
> -r = mipi_dsi_compression_mode(dsi_var,es)@p;<br>
> +mipi_dsi_compression_mode_multi(&dsi_ctx,es);<br>
> |<br>
> -r = mipi_dsi_picture_parameter_set(dsi_var,es)@p;<br>
> +mipi_dsi_picture_parameter_set_multi(&dsi_ctx,es);<br>
> |<br>
> -r = mipi_dsi_dcs_set_display_on(dsi_var,es)@p;<br>
> +mipi_dsi_dcs_set_display_on_multi(&dsi_ctx,es);<br>
> |<br>
> -r = mipi_dsi_dcs_set_tear_on(dsi_var)@p;<br>
> +mipi_dsi_dcs_set_tear_on_multi(&dsi_ctx);<br>
> |<br>
> -r = mipi_dsi_turn_on_peripheral(dsi_var)@p;<br>
> +mipi_dsi_turn_on_peripheral_multi(&dsi_ctx);<br>
> |<br>
> -r = mipi_dsi_dcs_soft_reset(dsi_var)@p;<br>
> +mipi_dsi_dcs_soft_reset_multi(&dsi_ctx);<br>
> |<br>
> -r = mipi_dsi_dcs_set_display_brightness(dsi_var,es)@p;<br>
> +mipi_dsi_dcs_set_display_brightness_multi(&dsi_ctx,es);<br>
> |<br>
> -r = mipi_dsi_dcs_set_pixel_format(dsi_var,es)@p;<br>
> +mipi_dsi_dcs_set_pixel_format_multi(&dsi_ctx,es);<br>
> |<br>
> -r = mipi_dsi_dcs_set_column_address(dsi_var,es)@p;<br>
> +mipi_dsi_dcs_set_column_address_multi(&dsi_ctx,es);<br>
> |<br>
> -r = mipi_dsi_dcs_set_page_address(dsi_var,es)@p;<br>
> +mipi_dsi_dcs_set_page_address_multi(&dsi_ctx,es);<br>
> |<br>
> -r = mipi_dsi_dcs_set_tear_scanline(dsi_var,es)@p;<br>
> +mipi_dsi_dcs_set_tear_scanline_multi(&dsi_ctx,es);<br>
> )<br>
> -if(r < 0) {<br>
> -...<br>
> -}<br>
> ...+><br>
> }<br>
> <br>
> @rule_2@<br>
> identifier dsi_var;<br>
> identifier r;<br>
> identifier func;<br>
> type t;<br>
> position p;<br>
> expression dsi_device;<br>
> expression list es;<br>
> @@<br>
> t func(...) {<br>
> ...<br>
> struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi_var };<br>
> <+...<br>
> (<br>
> -r = msleep(es)@p;<br>
> +r = mipi_dsi_msleep(&dsi_ctx,es);<br>
> |<br>
> -msleep(es)@p;<br>
> +mipi_dsi_msleep(&dsi_ctx,es);<br>
> |<br>
> -r = usleep_range(es)@p;<br>
> +r = mipi_dsi_usleep_range(&dsi_ctx,es);<br>
> |<br>
> -usleep_range(es)@p;<br>
> +mipi_dsi_usleep_range(&dsi_ctx,es);<br>
> )<br>
> ...+><br>
> }<br>
> <br>
> @rule_3@<br>
> identifier dsi_var;<br>
> identifier func;<br>
> type t;<br>
> position p;<br>
> expression list es;<br>
> @@<br>
> t func(...) {<br>
> ...<br>
> struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi_var };<br>
> ...<br>
> -return 0;<br>
> +return dsi_ctx.accum_err;<br>
> }<br>
> <br>
> Cc: Maxime Ripard <<a href="mailto:mripard@kernel.org" target="_blank">mripard@kernel.org</a>><br>
> Cc: Dmitry Baryshkov <<a href="mailto:dmitry.baryshkov@linaro.org" target="_blank">dmitry.baryshkov@linaro.org</a>><br>
> Cc: Tejas Vipin <<a href="mailto:tejasvipin76@gmail.com" target="_blank">tejasvipin76@gmail.com</a>><br>
> Cc: Doug Anderson <<a href="mailto:dianders@chromium.org" target="_blank">dianders@chromium.org</a>><br>
> <br>
> Signed-off-by: Anusha Srivatsa <<a href="mailto:asrivats@redhat.com" target="_blank">asrivats@redhat.com</a>><br>
> ---<br>
>  drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c | 36 ++++++++++---------------<br>
>  1 file changed, 14 insertions(+), 22 deletions(-)<br>
> <br>
> diff --git a/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c b/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c<br>
> index 729cbb0d8403ff7c0c4b9d21774909cc298904a2..9803eaf18e95d70742ece88e82932751476fdda8 100644<br>
> --- a/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c<br>
> +++ b/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c<br>
> @@ -36,15 +36,14 @@ static inline struct sharp_nt_panel *to_sharp_nt_panel(struct drm_panel *panel)<br>
>  static int sharp_nt_panel_init(struct sharp_nt_panel *sharp_nt)<br>
>  {<br>
>       struct mipi_dsi_device *dsi = sharp_nt->dsi;<br>
> +     struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi };<br>
>       int ret;<br>
>  <br>
>       dsi->mode_flags |= MIPI_DSI_MODE_LPM;<br>
>  <br>
> -     ret = mipi_dsi_dcs_exit_sleep_mode(dsi);<br>
> -     if (ret < 0)<br>
> -             return ret;<br>
> +     mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx);<br>
>  <br>
> -     msleep(120);<br>
> +     mipi_dsi_msleep(&dsi_ctx, 120);<br>
>  <br>
>       /* Novatek two-lane operation */<br>
>       ret = mipi_dsi_dcs_write(dsi, 0xae, (u8[]){ 0x03 }, 1);<br>
<br>
Anusha. Please. Start reviewing your patches before you send them. This<br>
is a MIPI DSI call. And it wasn't switched to _multi / context. You<br>
should have cought this. I don't know why you didn't. Please review and<br>
check your code before sending it upstream.<br>
<br></blockquote><div><br></div><div>Sigh :( I actually need to give it  a day, look at the patch again next day and catch faults before pushing to ML.</div><div><br></div><div>Anusha <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
-- <br>
With best wishes<br>
Dmitry<br>
<br>
</blockquote></div></div>