From: Ville Syrjälä <ville.syrj...@linux.intel.com>

Extract the seamless DRRS min refresh rate from the VBT.

v2: Do a version check

Reviewed-by: Jani Nikula <jani.nik...@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_bios.c | 9 ++++++++-
 drivers/gpu/drm/i915/i915_drv.h           | 1 +
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c 
b/drivers/gpu/drm/i915/display/intel_bios.c
index 1b84c0e55497..f1afc267b5f9 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -833,6 +833,7 @@ parse_lfp_data(struct drm_i915_private *i915)
        const struct bdb_lvds_lfp_data *data;
        const struct bdb_lvds_lfp_data_tail *tail;
        const struct bdb_lvds_lfp_data_ptrs *ptrs;
+       int panel_type = i915->vbt.panel_type;
 
        ptrs = find_section(i915, BDB_LVDS_LFP_DATA_PTRS);
        if (!ptrs)
@@ -849,7 +850,13 @@ parse_lfp_data(struct drm_i915_private *i915)
        if (!tail)
                return;
 
-       (void)tail;
+       if (i915->vbt.version >= 188) {
+               i915->vbt.seamless_drrs_min_refresh_rate =
+                       tail->seamless_drrs_min_refresh_rate[panel_type];
+               drm_dbg_kms(&i915->drm,
+                           "Seamless DRRS min refresh rate: %d Hz\n",
+                           i915->vbt.seamless_drrs_min_refresh_rate);
+       }
 }
 
 static void
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 24111bf42ce0..c2a31ca56232 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -327,6 +327,7 @@ struct intel_vbt_data {
        bool override_afc_startup;
        u8 override_afc_startup_val;
 
+       u8 seamless_drrs_min_refresh_rate;
        enum drrs_type drrs_type;
 
        struct {
-- 
2.35.1

Reply via email to