drm/i915/icl: use ranges for voltage level lookup
authorLucas De Marchi <lucas.demarchi@intel.com>
Mon, 10 Jun 2019 21:48:19 +0000 (14:48 -0700)
committerLucas De Marchi <lucas.demarchi@intel.com>
Tue, 11 Jun 2019 19:41:38 +0000 (12:41 -0700)
Spec shows voltage level 0 as 307.2, 312, or lower and suggests to use
range checks. Prepare for having other frequencies in these ranges by
not comparing the exact frequency.

v2: invert checks by comparing biggest cdclk first (suggested by Ville)

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190610214819.9703-1-lucas.demarchi@intel.com
drivers/gpu/drm/i915/intel_cdclk.c

index 6988c6cbc362d0427d44d12c70266d28982aac54..465a72d185add3429a4d5ac3948666f3ed550f79 100644 (file)
@@ -1865,21 +1865,12 @@ static void icl_set_cdclk(struct drm_i915_private *dev_priv,
 
 static u8 icl_calc_voltage_level(int cdclk)
 {
-       switch (cdclk) {
-       case 50000:
-       case 307200:
-       case 312000:
-               return 0;
-       case 556800:
-       case 552000:
-               return 1;
-       default:
-               MISSING_CASE(cdclk);
-               /* fall through */
-       case 652800:
-       case 648000:
+       if (cdclk > 556800)
                return 2;
-       }
+       else if (cdclk > 312000)
+               return 1;
+       else
+               return 0;
 }
 
 static void icl_get_cdclk(struct drm_i915_private *dev_priv,