On 30/10/2024 18:50, Doug Anderson wrote:
Hi,
On Wed, Oct 30, 2024 at 12:24 AM Tejas Vipin <tejasvipin76@xxxxxxxxx> wrote:
On 10/29/24 12:24 AM, Doug Anderson wrote:
Hi,
On Fri, Oct 25, 2024 at 9:00 PM Tejas Vipin <tejasvipin76@xxxxxxxxx> wrote:
@@ -418,79 +398,42 @@ static const struct ltk050h3146w_desc ltk050h3146w_data = {
MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET,
};
-static int ltk050h3146w_a2_select_page(struct ltk050h3146w *ctx, int page)
+static void ltk050h3146w_a2_select_page(struct mipi_dsi_multi_context *dsi_ctx, int page)
{
- struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev);
- u8 d[3] = { 0x98, 0x81, page };
+ u8 d[4] = { 0xff, 0x98, 0x81, page };
- return mipi_dsi_dcs_write(dsi, 0xff, d, ARRAY_SIZE(d));
+ mipi_dsi_dcs_write_buffer_multi(dsi_ctx, d, ARRAY_SIZE(d));
FWIW: the above might be slightly better as:
mipi_dsi_dcs_write_seq_multi(dsi_ctx, 0xff, 0x98, 0x81, page);
That would make it more documenting that the 0xff is the "cmd", has
fewer lines of code, and also gets the array marked as "static const"
which might make the compiler slightly more efficient. ;-)
Not really a huge deal, though.
I did try this initially, but got an error because of page not being a
compile time constant. Not sure how I should handle this.
Ha, that makes sense! It can't be "static const" because that means
that there's one storage location that's never changing and that's
just not true. I tried to see if there was some way to make the
mipi_dsi_dcs_write_seq_multi() smarter and have it detect if
everything is constant but I couldn't find any way to do that. The
__builtin_constant_p() trick doesn't seem to work with more than one
number.
So I think what you have is fine then. If this becomes common I guess
we can make an alternative version of mipi_dsi_dcs_write_seq_multi()
that just uses "const" instead of "static const".
I'll plan to apply your patch next week unless someone beats me to it.
I'll apply it today so it can go in v6.13 :-)
Neil
-Doug