[Intel-gfx] [PATCH] drm/i915/bxt: Enable VBT based BL control for DP
Jani Nikula
jani.nikula at linux.intel.com
Tue Jun 6 09:24:30 UTC 2017
On Tue, 06 Jun 2017, Mustamin B Mustaffa <mustamin.b.mustaffa at intel.com> wrote:
> Currently, BXT_PP is hardcoded with value '0'.
> It practically disabled eDP backlight on MRB (BXT) platform.
>
> This patch will tell which BXT_PP registers (there are two set of PP_CONTROL in the spec)
> to be used as defined in VBT (Video Bios Timing table) and this will enabled eDP
> backlight controller on MRB (BXT) platform.
Didn't look at the spec. Is there a 1:1 mapping/routing with the two PPS
and backlight PWM?
Does this hold for Geminilake too, as your change impacts that as well?
> Change-Id: I42242d8def30d09298b629e3cd4828016189c3fa
Drop this.
> Signed-off-by: Mustamin B Mustaffa <mustamin.b.mustaffa at intel.com>
> Tracked-On: https://jira01.devtools.intel.com/browse/OAM-46254
Drop this. Even I can't access this.
> ---
> drivers/gpu/drm/i915/intel_dp.c | 7 +------
> 1 file changed, 1 insertion(+), 6 deletions(-)
>
> 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.
BR,
Jani.
>
> intel_dp->pps_reset = false;
--
Jani Nikula, Intel Open Source Technology Center
More information about the Intel-gfx
mailing list