<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Fri, Mar 14, 2025 at 2:22 PM Maxime Ripard <<a href="mailto:mripard@kernel.org">mripard@kernel.org</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">Hi<br>
<br>
On Fri, Mar 14, 2025 at 12:47:16AM -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. Manually handled the<br>
> reset step before returning from r63353_panel_activate()<br>
> <br>
> v2: Do not skip the reset in case of error during<br>
> panel activate (Dmitry)<br>
> - Convert all usleep_range()<br>
> <br>
> v3: mipi_dsi_usleep_range() is to be used only when in<br>
> between _multi commands(Doug)<br>
> - Check for error once in the end while using _multi<br>
> variants (Doug)<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>
> Signed-off-by: Anusha Srivatsa <<a href="mailto:asrivats@redhat.com" target="_blank">asrivats@redhat.com</a>><br>
<br>
It's looking good, but you forgot to set the version. If you're not<br>
using it already, b4 simplifies that a lot for you, you should be using<br>
it.<br>
<br></blockquote><div>Yes. Agreed.</div><div>Duly noted.</div><div><br></div><div>Anusha </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Maxime<br>
</blockquote></div></div>