[Intel-gfx] [PATCH] drm/i915/cnp: Ignore VBT request for know invalid DDC pin.
Jani Nikula
jani.nikula at linux.intel.com
Wed Jan 24 09:25:06 UTC 2018
On Tue, 23 Jan 2018, Rodrigo Vivi <rodrigo.vivi at intel.com> wrote:
> On Tue, Jan 23, 2018 at 05:40:50PM +0000, Rodrigo Vivi wrote:
>> Let's ignore VBT request if the pin is clearly wrong.
>>
>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104139
>> Cc: Kai Heng Feng <kai.heng.feng at canonical.com>
>> Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
>
> Reviewed-by: Radhakrishna Sripada <radhakrishna.sripada at intel.com>
> (f2f)
> thanks
>
> merged to dinq.
A bit too fast IMO. The bug report doesn't include the vbt dump which
you should *always* look at before making workarounds for vbt.
Also, see below.
>> ---
>> drivers/gpu/drm/i915/intel_bios.c | 11 ++++++++---
>> 1 file changed, 8 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
>> index b0668202dc7e..95f0b310d656 100644
>> --- a/drivers/gpu/drm/i915/intel_bios.c
>> +++ b/drivers/gpu/drm/i915/intel_bios.c
>> @@ -1115,9 +1115,14 @@ static const u8 cnp_ddc_pin_map[] = {
>>
>> static u8 map_ddc_pin(struct drm_i915_private *dev_priv, u8 vbt_pin)
>> {
>> - if (HAS_PCH_CNP(dev_priv) &&
>> - vbt_pin > 0 && vbt_pin < ARRAY_SIZE(cnp_ddc_pin_map))
>> - return cnp_ddc_pin_map[vbt_pin];
>> + if (HAS_PCH_CNP(dev_priv)) {
>> + if (vbt_pin > 0 && vbt_pin < ARRAY_SIZE(cnp_ddc_pin_map))
>> + return cnp_ddc_pin_map[vbt_pin];
>> + if (vbt_pin > GMBUS_PIN_4_CNP) {
>> + DRM_DEBUG_KMS("Ignoring alternate pin: VBT claims DDC pin %d, which is not valid for this platform\n", vbt_pin);
>> + return 0;
>> + }
The original code was wrong in the sense that it would only do the
mapping if the provided vbt_pin was within bounds for CNP, and would
return the unmapped vbt_pin otherwise. Instead, I think you should
directly return 0 for out of bounds vbt_pin.
This change here is effectively the same, but more confusing. As if
there's a case where the vbt_pin can be both out of bounds, within CNP
pin limits, and should be returned unmapped. That can't happen, so
please make the code reflect that.
BR,
Jani.
>> + }
>>
>> return vbt_pin;
>> }
>> --
>> 2.13.6
>>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Jani Nikula, Intel Open Source Technology Center
More information about the Intel-gfx
mailing list