<html>
<head>
<base href="https://bugs.freedesktop.org/">
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW - [BSW] External HDMI monitor suddenly shows solid color when playing Youtube video at 1080p [fifo underrun]"
href="https://bugs.freedesktop.org/show_bug.cgi?id=97965#c31">Comment # 31</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW - [BSW] External HDMI monitor suddenly shows solid color when playing Youtube video at 1080p [fifo underrun]"
href="https://bugs.freedesktop.org/show_bug.cgi?id=97965">bug 97965</a>
from <span class="vcard"><a class="email" href="mailto:ville.syrjala@linux.intel.com" title="Ville Syrjala <ville.syrjala@linux.intel.com>"> <span class="fn">Ville Syrjala</span></a>
</span></b>
<pre>(In reply to Yu Kang Ku from <a href="show_bug.cgi?id=97965#c30">comment #30</a>)
<span class="quote">> In intel_display.c, there is one difference between valleyview_set_cdclk()
> and cherryview_set_cdclk() that seems rather interesting. The following
> snippet is in valleyview_set_cdclk() but NOT in cherryview_set_cdclk():
>
> /* adjust self-refresh exit latency value */
> val = vlv_bunit_read(dev_priv, BUNIT_REG_BISOC);
> val &= ~0x7f;
>
> /*
> * For high bandwidth configs, we set a higher latency in the bunit
> * so that the core display fetch happens in time to avoid underruns.
> */
> if (cdclk == 400000)
> val |= 4500 / 250; /* 4.5 usec */
> else
> val |= 3000 / 250; /* 3.0 usec */
> vlv_bunit_write(dev_priv, BUNIT_REG_BISOC, val);
>
>
> Is this snippet applicable to BSW?</span >
The register does exist there as well. It might be something play around with.
You can do so with the intel_reg tool easily, eg. "intel_reg read bunit:0x11",
"intel_reg write bunit:0x11 <value>".
On my BSW the value is bunit:0x00000011 (0x03:0x00000011): 0x05804816
I didn't check whether the Punit or someone else adjusts that value at runtime.
This is what the register contains
EXIT_SELF_REFRESH_LATENCY 6:0
Exit Self Refresh Latency: Required latency to Exit Self Refresh in 250ns
increments. Default is 3uSec. PnP: This depends on SR exit+ data return for an
urgent ISOC request when dram is in SR. But SR exit latency depends on PM
opcode, setting it to h'24 i.e. 9us exit latency
RESERVED_2 7:7
SCHEDULER_LATENCY 11:8
Scheduler Latency: Request latency that is considered as a Hi-Priority Request
for ISOC requests. Value programmed has 250ns resolution. Default is 2uSec.
ENTER_SELF_REFRESH_DLY 17:12
Enter Self Refresh Delay: Number of 250ns pulses the Bunit waits before
entering Self Refresh. Note: should not be set to less than 2 when dynamic SR
is enabled, otherwise the system may become unresponsive.
SR_EXIT_SYNC_EN 18:18
Set this bit will prevent the Bunit get into SR if BRAM is full and high
priority requests blocked at badmit.
RESERVED_1 21:19
ENTER_SELF_REFRESH_THRSH 31:22
Enter Self Refresh Threshold: Required request latency to enter self refresh.
If the Bunit receives ISOC requests that have a required latency less than this
value the Bunit will keep the Dunit out of Self Refresh.
Actually bits 31:22 look fairly interesting here. But perhaps start
experimenting with bits 6:0 a bit instead, since that's what we do on VLV as
well.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
<li>You are the QA Contact for the bug.</li>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>