[Intel-gfx] [PATCH] drm/i915/bxt: Enable VBT based BL control for DP

Bloomfield, Jon jon.bloomfield at intel.com
Wed Jun 7 14:12:56 UTC 2017


> -----Original Message-----
> From: Jani Nikula [mailto:jani.nikula at linux.intel.com]
> Sent: Wednesday, June 7, 2017 1:16 AM
> To: Deak, Imre <imre.deak at intel.com>; Bloomfield, Jon
> <jon.bloomfield at intel.com>
> Cc: intel-gfx at lists.freedesktop.org; Mustaffa, Mustamin B
> <mustamin.b.mustaffa at intel.com>
> Subject: Re: [Intel-gfx] [PATCH] drm/i915/bxt: Enable VBT based BL control
> for DP
> 
> On Tue, 06 Jun 2017, Imre Deak <imre.deak at intel.com> wrote:
> > On Tue, Jun 06, 2017 at 05:58:43PM +0300, Bloomfield, Jon wrote:
> >> > -----Original Message-----
> >> > From: Intel-gfx [mailto:intel-gfx-bounces at lists.freedesktop.org] On
> Behalf
> >> > Of Imre Deak
> >> > Sent: Tuesday, June 6, 2017 5:34 AM
> >> > To: Jani Nikula <jani.nikula at linux.intel.com>
> >> > Cc: intel-gfx at lists.freedesktop.org; Mustaffa, Mustamin B
> >> > <mustamin.b.mustaffa at intel.com>
> >> > Subject: Re: [Intel-gfx] [PATCH] drm/i915/bxt: Enable VBT based BL
> control
> >> > for DP
> >> >
> >> > On Tue, Jun 06, 2017 at 12:24:30PM +0300, Jani Nikula wrote:
> >> > > On Tue, 06 Jun 2017, Mustamin B Mustaffa
> >> > <mustamin.b.mustaffa at intel.com> wrote:
> >> > > > [...]
> >> > > > diff --git a/drivers/gpu/drm/i915/intel_dp.c
> >> > b/drivers/gpu/drm/i915/intel_dp.c
> >> > > > index d1670b8..124f58b 100644
> >> > > > --- a/drivers/gpu/drm/i915/intel_dp.c
> >> > > > +++ b/drivers/gpu/drm/i915/intel_dp.c
> >> > > > @@ -591,13 +591,8 @@ bxt_power_sequencer_idx(struct intel_dp
> >> > *intel_dp)
> >> > > >  	/* We should never land here with regular DP ports */
> >> > > >  	WARN_ON(!is_edp(intel_dp));
> >> > > >
> >> > > > -	/*
> >> > > > -	 * TODO: BXT has 2 PPS instances. The correct port->PPS
> instance
> >> > > > -	 * mapping needs to be retrieved from VBT, for now just
> hard-code
> >> > to
> >> > > > -	 * use instance #0 always.
> >> > > > -	 */
> >> > > >  	if (!intel_dp->pps_reset)
> >> > > > -		return 0;
> >> > > > +		return dev_priv->vbt.backlight.controller;
> >> > >
> >> > > So the existing code around here looks a bit convoluted, not least
> >> > > because now pretty much all PPS access first does
> >> > >
> >> > >  - intel_pps_get_registers(), which calls
> >> > >  - bxt_power_sequencer_idx(), which calls
> >> > >  - intel_dp_init_panel_power_sequencer_registers(), which calls
> >> > >  - intel_pps_get_registers()...
> >> > >
> >> > > With your change, for controller == 1 and pps_reset == true, the first
> >> > > time the registers are needed, we'll initialize the correct controller 1
> >> > > registers, but controller 0 registers are returned. From there on, we'll
> >> > > keep returning controller 1 registers until pps_reset is set to true
> >> > > again.
> >> > >
> >> > > Cc: Imre as author of commits 78597996370c ("drm/i915/bxt: Fix PPS
> lost
> >> > > state after suspend breaking eDP link training") and 8e8232d51878
> >> > > ("drm/i915: Deduplicate PPS register retrieval") which I think create
> >> > > the loop.
> >> >
> >> > A loop would be prevented by the pps->reset check, but agree the code
> >> > isn't nice, I guess I overlooked this when I wrote it. To make things
> >> > clearer we could factor out a helper from
> >> > intel_dp_init_panel_power_sequencer_registers() that takes
> pps_registers
> >> > and call this helper from bxt_power_sequencer_idx().
> >> >
> >> > So how about something like the following:
> >>
> >> Just checking what the intention is here because your proposed change
> >> ommits the VBT fix...  Are you going to post these changes as a new
> >> baseline for Mustaffa's patch ? Or are you asking Mustaffa to fold
> >> these changes into his patch ? Hoping it's the former :-)
> >
> > The change is just to make the code clearer, unrelated to the VBT fix,
> > so it should be a separate patch. I don't mind doing this as a follow-up
> > to Mustaffa's patchset. What his patch here would need is just to return
> > the correct index from bxt_power_sequencer_idx() in all cases.
> 
> I think we might need to backport Mustaffa's patch to stable so we need
> to do that first as a standalone change. After it has been fixed
> according to Imre's and my feedback. Oh, and I'd still like someone(tm)
> to check if the PPS-PWM mapping is fixed 1:1, or can we cross connect
> them?

Yes, I was having doubts about this yesterday too. I can find nothing the
BSpec to indicate any relationship at all between PWM and PPS. Mustamin
is from IOTG and this for a specific product they're working on. The correct
fix is probably to extend VBT to include a separate PPS select field and then
key off that. As this is a new product, there should be no issues with updating
the VBT (I hope), but how does that sit with you guys ? Hardcoding is certainly
plain wrong, even if all current released products do need 0.

> 
> I just involved Imre here because the existing code is, I think,
> unnecessarily hard to follow.


More information about the Intel-gfx mailing list