[Intel-gfx] [PATCH] drm/i915/bxt: Force port A DDI to use 4 lanes
Bob Paauwe
bob.j.paauwe at intel.com
Thu Nov 5 16:20:07 PST 2015
On Thu, 5 Nov 2015 14:53:32 -0800
Matt Roper <matthew.d.roper at intel.com> wrote:
> The bspec indicates that DDI A using four lanes is the only valid
> configuration for Broxton (Broxton doesn't have a DDI E to split these
> lanes with); the DDI_A_4_LANES bit of port A's DDI_BUF_CTL should always
> be set by the BIOS. However some BIOS versions seem to only be setting
> this bit if eDP is actually lit up at boot time; if the BIOS doesn't
> turn on the eDP panel because an external display is plugged in, then
> this bit is never properly initialized. The end result of this is that
> we wind up calculating a lower max data rate than we should and may wind
> up rejecting the native mode for panels that we should be able to drive.
>
> Let's workaround this BIOS bug by just turning the DDI_A_4_LANES bit on
> in our driver's internal state if we recognize that're running on BXT
> where it should have been on anyway.
>
> Cc: Imre Deak <imre.deak at intel.com>
> Cc: Bob Paauwe <bob.j.paauwe at intel.com>
> Signed-off-by: Matt Roper <matthew.d.roper at intel.com>
> ---
> drivers/gpu/drm/i915/intel_ddi.c | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> index b164122..672b86c 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -3234,6 +3234,19 @@ void intel_ddi_init(struct drm_device *dev, enum port port)
> (DDI_BUF_PORT_REVERSAL |
> DDI_A_4_LANES);
>
> + /*
> + * Bspec says that DDI_A_4_LANES is the only supported configuration
> + * for Broxton. Yet some BIOS fail to set this bit on port A if eDP
> + * wasn't lit up at boot. Force this bit on in our internal
> + * configuration so that we use the proper lane count for our
> + * calculations.
> + */
> + if (IS_BROXTON(dev) && port == PORT_A)
> + if (!(intel_dig_port->saved_port_bits & DDI_A_4_LANES)) {
> + DRM_DEBUG_KMS("BXT BIOS forgot to set DDI_A_4_LANES for port A; fixing\n");
> + intel_dig_port->saved_port_bits |= DDI_A_4_LANES;
> + }
The brace isn't lined up with the proper if.
> +
> intel_encoder->type = INTEL_OUTPUT_UNKNOWN;
> intel_encoder->crtc_mask = (1 << 0) | (1 << 1) | (1 << 2);
> intel_encoder->cloneable = 0;
With the above formatting fixed.
Reviewed-by: Bob Paauwe <bob.j.paauwe at intel.com>
Tested-by: Bob Paauwe <bob.j.paauwe at intel.com>
--
--
Bob Paauwe
Bob.J.Paauwe at intel.com
IOTG / PED Software Organization
Intel Corp. Folsom, CA
(916) 356-6193
More information about the Intel-gfx
mailing list