Re: [Intel-gfx] [PATCH 2/2] drm/i915: Get rid of intel_dp_dpcd_read_wake()

From: Jani Nikula
Date: Mon Mar 21 2016 - 06:31:14 EST


On Fri, 18 Mar 2016, Ville SyrjÃlà <ville.syrjala@xxxxxxxxxxxxxxx> wrote:
> On Fri, Mar 18, 2016 at 06:12:35PM +0200, Ville SyrjÃlà wrote:
>> On Fri, Mar 18, 2016 at 04:13:45PM +0200, Ville SyrjÃlà wrote:
>> > On Thu, Mar 17, 2016 at 11:40:45AM -0400, Lyude wrote:
>> > > - drm_dp_dpcd_read(aux, DP_DPCD_REV, buffer, 1);
>> >
>> > NAK
>> >
>> > If people keep intentionally breaking my shit I'm going to become
>> > really grumpy soon.
>>
>> Oh, and just in case someone wants to come up with a better kludge,
>> I just spent a few minutes analyzing the behavior of this crappy
>> monitor a.
>>
>> What happens is that when the monitor is fully powered up (LED is blue)
>> things are fine. After the monitor goes to sleep (LED turns orange)
>> the first DPCD read will produce garbage. Further DPCD reads are fine,
>> even if I wait a significant amount of time between the reads, as long
>> as the monitor didn't do a power on->off cycle in between. So it looks
>> like it's always just the first read after power down that gets
>> corrupted.
>>
>> Now I think I'll go and test how writes behave, assuming I can find a
>> decently sized chunk of DPCD address space I can write. And maybe I
>> should also try i2c-over-aux...
>
> The first DPCD write after powerdown also got corrupted. But i2c-over-aux
> seems unaffected for whatever reason.

Did the display go to sleep on its own, or did we do something? In
particular, does DPCD DP_SET_POWER register play a role? What if we skip
writing D3 to it? What if we do that write as the first thing (every
time)?


BR,
Jani.


--
Jani Nikula, Intel Open Source Technology Center