BUG Beaglebone HDMI output flickers
Radek Dostal
radek.dostal at streamunlimited.com
Thu Mar 10 10:41:33 UTC 2016
Dear All,
As the post above will be probably often found by google, I will post
here also a temporary solution colleague of mine found to the flickering
problem.
devmem2 0x4c000054 w 0x00FFFFF10
It is probably not ideal - there should be a way how to prioritize just
the LCD transfers (according to the TI wiki), but the values there do
not work. This fix just ensures that any "too old" command gets executed
sooner than it would otherwise, maybe that is a good thing anyway.
However, I believe I understand all the various issues we've seen
(although I could still be wrong - but this at least makes sense):
static image shift
- here, the DMA for transferring data to LCD fifo is blocked for a
short period of time once, but then it continues normally. This produces
the fifo-underflow interrupt once, the data for display are few pixels
late, but then all works normally so the image is just shifted (although
not too visible in the photo, the "extra" pixels at top-left corner are
black, and not white if the image was just wrapped).
full flickering
- in this case, the memory load is so severe that the DMA is blocked
too often and can't supply steady stream of data; producing
fifo-underflow interrupts all over. The image still starts from the
top-left corner as usual, but then the rest of the "pixel stream"
contains some extra 0s so the testimage produces diagonal patterns (with
varying error, hence the flickering).
So these 2 are the same issue, just with different outcome.
The problem is the DDR command prioritization logic in our memory
controller, the memset() loop manages to starve the DMA data stream. The
"fix" just tweaks the REG_PR_OLD_COUNT value - now if there is a DDR
command in the memory controller fifo for too long, it will get executed
(out of the prioritized ordering).
(I can probably also explain why it +- works with >2k buffers; but there
I'm not fully sure yet.)
All this is based on this info:
http://processors.wiki.ti.com/index.php/DA8xx_LCDC_Linux_FB_FAQs
Thanks,
Radek
More information about the dri-devel
mailing list