Re: [PATCH v4] drm/omap: dsi: avoid sending bta sync all the time in writes

Andreas Kemnade <[email protected]> Tue, 7 Jul 2026 12:22:03 +0200
Newsgroups org.kernel.vger.linux-omap,org.freedesktop.lists.dri-devel,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Tue, 30 Jun 2026 08:42:57 +0300
Ivaylo Dimitrov <[email protected]> wrote:

> Hi,
> With this version of the patch I see:
> 
> [  102.760894] DSI: omapdss DSI error: Framedone not received for 250ms!
> [  303.860321] DSI: omapdss DSI error: Framedone not received for 250ms!
> [  307.071624] DSI: omapdss DSI error: Framedone not received for 250ms!
> [  307.360626] DSI: omapdss DSI error: Framedone not received for 250ms!
> [  307.671142] DSI: omapdss DSI error: Framedone not received for 250ms!
> [  308.660339] DSI: omapdss DSI error: Framedone not received for 250ms!
> [  308.961059] DSI: omapdss DSI error: Framedone not received for 250ms!
> [  313.191314] DSI: omapdss DSI error: Framedone not received for 250ms!
> [  313.700378] DSI: omapdss DSI error: Failed to set dsi_if_enable to 0
> [  313.980346] DSI: omapdss DSI error: Framedone not received for 250ms!
> [  314.791564] DSI: omapdss DSI error: Framedone not received for 250ms!
> [  315.090362] DSI: omapdss DSI error: Framedone not received for 250ms!
> [  322.850952] DSI: omapdss DSI error: Framedone not received for 250ms!
> [  323.111175] DSI: omapdss DSI error: Framedone not received for 250ms!
> 
> while scrolling the (hildon)desktop on droid4, so I would say the change 
> broke command mode.
> 
so let me summarize:
- sending initialisation commands to video mode panel: no problem visible in
  any case, theretical problems (not seen with the tested panels if sending too much data, fixed via v4.
- command mode display: no picture and error messages without any bta sync (patch version 1).
- working display with send_nop() replaced by simply sending bta_sync() and not
  waiting for PACKET_SENT irq for short packets (v2).
- partly working display (with v4), (always waiting for PACKET_SENT)

so there are some situations when waiting for a packet completition is harmful.
In your case these were only siutations when short packets were sent.
Do you have a more complete log of v4 boott?
In the log for v1 which is not accessible anymore, there were other 
more informative timeouts visible.

But maybe as a wild guess also based on Sasikhos AI reviews, maybe
this helps:

diff --git a/drivers/gpu/drm/omapdrm/dss/dsi.c b/drivers/gpu/drm/omapdrm/dss/dsi.c
index 3f22929c36e2..eb3cd0d23cae 100644
--- a/drivers/gpu/drm/omapdrm/dss/dsi.c
+++ b/drivers/gpu/drm/omapdrm/dss/dsi.c
@@ -3267,7 +3267,7 @@ static int dsi_update_channel(struct omap_dss_device *dssdev, int vc)
 	 * updates stop working. This is probably related to DSI spec stating
 	 * that the DSI host should transition to LP at least once per frame.
 	 */
-	r = dsi_vc_send_bta_sync(dssdev, vc);
+	r = dsi_vc_send_bta_sync(dssdev, VC_CMD);
 	if (r < 0) {
 		DSSWARN("failed to send bta sync between frames: %d\n", r);
 		goto err;



Then the call is equal to the original one done via send_nnop.

Regards,
Andreas