drm/i915/dpcd_bl: Return early in vesa_calc_max_backlight if we can't read PWMGEN_BIT...
authorLyude Paul <lyude@redhat.com>
Fri, 14 May 2021 18:15:00 +0000 (14:15 -0400)
committerLyude Paul <lyude@redhat.com>
Wed, 9 Jun 2021 17:35:21 +0000 (13:35 -0400)
If we can't read DP_EDP_PWMGEN_BIT_COUNT in
intel_dp_aux_vesa_calc_max_backlight() but do have a valid PWM frequency
defined in the VBT, we'll keep going in the function until we inevitably
fail on reading DP_EDP_PWMGEN_BIT_COUNT_CAP_MIN. There's not much point in
doing this, so just return early.

Signed-off-by: Lyude Paul <lyude@redhat.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210514181504.565252-7-lyude@redhat.com
drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c

index 781c7cd..bf8e4ed 100644 (file)
@@ -449,11 +449,14 @@ static u32 intel_dp_aux_vesa_calc_max_backlight(struct intel_connector *connecto
        int freq, fxp, fxp_min, fxp_max, fxp_actual, f = 1;
        u8 pn, pn_min, pn_max;
 
-       if (drm_dp_dpcd_readb(&intel_dp->aux, DP_EDP_PWMGEN_BIT_COUNT, &pn) == 1) {
-               pn &= DP_EDP_PWMGEN_BIT_COUNT_MASK;
-               max_backlight = (1 << pn) - 1;
+       if (drm_dp_dpcd_readb(&intel_dp->aux, DP_EDP_PWMGEN_BIT_COUNT, &pn) != 1) {
+               drm_dbg_kms(&i915->drm, "Failed to read pwmgen bit count cap\n");
+               return 0;
        }
 
+       pn &= DP_EDP_PWMGEN_BIT_COUNT_MASK;
+       max_backlight = (1 << pn) - 1;
+
        /* Find desired value of (F x P)
         * Note that, if F x P is out of supported range, the maximum value or
         * minimum value will applied automatically. So no need to check that.