-----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). > > 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. 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