Re: Problems with 3.4-rc5

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thursday 03 May 2012 02:19 PM, Joe Woodward wrote:
-----Original Message-----
From: Tomi Valkeinen<tomi.valkeinen@xxxxxx>
To: Joe Woodward<jw@xxxxxxxxxxxxxx>
Cc: Archit Taneja<a0393947@xxxxxx>, linux-omap@xxxxxxxxxxxxxxx
Date: Thu, 03 May 2012 11:28:41 +0300
Subject: Re: Problems with 3.4-rc5

On Wed, 2012-05-02 at 13:46 +0100, Joe Woodward wrote:

Secondly, I get the following when booted:
...
[    4.701232] devtmpfs: mounted
[    4.704772] Freeing init memory: 168K
[    4.827301] omapdss DISPC error: FIFO UNDERFLOW on gfx,
disabling
the overlay
...


Could you add some dss debug prints? You can add "omapdss.debug=1
debug"
in the bootargs to get that.

There was a feature called fifo merge added in 3.4, this might lead
to
underflow, we had tested this using a DVI monitor on beagle but
didn't
see any underflows.

Are you trying this out on 3.4 for the first time? What was the
last
kernel revision on which you tested this and didn't see any issues?

Can you try the following changes (separately):


diff --git a/drivers/video/omap2/dss/dispc.c
b/drivers/video/omap2/dss/dispc.c
index ee30937..aca4eb1 100644
--- a/drivers/video/omap2/dss/dispc.c
+++ b/drivers/video/omap2/dss/dispc.c
@@ -1091,13 +1091,8 @@ void dispc_ovl_compute_fifo_thresholds(enum
omap_plane plane,
  	 * combined fifo size
  	 */

-	if (dss_has_feature(FEAT_OMAP3_DSI_FIFO_BUG)) {
-		*fifo_low = ovl_fifo_size - burst_size * 2;
-		*fifo_high = total_fifo_size - burst_size;
-	} else {
-		*fifo_low = ovl_fifo_size - burst_size;
-		*fifo_high = total_fifo_size - buf_unit;
-	}
+	*fifo_low = ovl_fifo_size - burst_size;
+	*fifo_high = total_fifo_size - buf_unit;
  }

  static void dispc_ovl_set_fir(enum omap_plane plane,

---

The above patch fixes the problem (I no longer see any underflows).

Tomi,

Before FIFO merge was added, the special fifo_low/high calculation was only done for DSI on OMAP3, now it seems to be done on OMAP3 and for all interfaces. Maybe this is the difference between 3.3.




diff --git a/drivers/video/omap2/dss/dispc.c
b/drivers/video/omap2/dss/dispc.c
index ee30937..d63f1a3 100644
--- a/drivers/video/omap2/dss/dispc.c
+++ b/drivers/video/omap2/dss/dispc.c
@@ -1077,13 +1077,7 @@ void dispc_ovl_compute_fifo_thresholds(enum
omap_plane plane,
  	burst_size = dispc_ovl_get_burst_size(plane);
  	ovl_fifo_size = dispc_ovl_get_fifo_size(plane);

-	if (use_fifomerge) {
-		total_fifo_size = 0;
-		for (i = 0; i<  omap_dss_get_num_overlays(); ++i)
-			total_fifo_size += dispc_ovl_get_fifo_size(i);
-	} else {
-		total_fifo_size = ovl_fifo_size;
-	}
+	total_fifo_size = ovl_fifo_size;

  	/*
  	 * We use the same low threshold for both fifomerge and non-fifomerge


The above patch has no effect (I still see underflows).

Both patches together results in slightly different behaviour, the display is still broken-
it flickers on and off with occassional underflows before breaking completely.

With both the patches combined, we are configuring DSS with FIFO merge enabled, but configuring thresholds normally and not utilising the large FIFO. Getting underflows with this is strange, because it's more or less similar to what it was on 3.3 without FIFO merge.

Archit


Cheers,
Joe

  Tomi





--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux