Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755746AbcCUNi5 (ORCPT ); Mon, 21 Mar 2016 09:38:57 -0400 Received: from mga03.intel.com ([134.134.136.65]:50272 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754583AbcCUNix (ORCPT ); Mon, 21 Mar 2016 09:38:53 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,372,1455004800"; d="scan'208";a="941817159" Date: Mon, 21 Mar 2016 15:38:31 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Jani Nikula Cc: Lyude , Daniel Vetter , intel-gfx@lists.freedesktop.org, arthur.j.runyan@intel.com, open list , dri-devel@lists.freedesktop.org Subject: Re: [Intel-gfx] [PATCH 2/2] drm/i915: Get rid of intel_dp_dpcd_read_wake() Message-ID: <20160321133831.GX4329@intel.com> References: <1458229245-8634-1-git-send-email-cpaul@redhat.com> <1458229245-8634-2-git-send-email-cpaul@redhat.com> <20160318141345.GG4329@intel.com> <20160318161235.GN4329@intel.com> <20160318164140.GO4329@intel.com> <87lh5ct95t.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <87lh5ct95t.fsf@intel.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1938 Lines: 45 On Mon, Mar 21, 2016 at 12:30:54PM +0200, Jani Nikula wrote: > On Fri, 18 Mar 2016, Ville Syrj?l? 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)? User pressing any of the buttons on the monitor is enough to wake it, and after a short timeout it will power down on its own, leading to the corrupted access. Keeping DP_SET_POWER at D0 doesn't change anything. -- Ville Syrj?l? Intel OTC