From ff882e312a746a4a794a089e912e5e56baa8b5b4 Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date: Fri, 3 Jul 2020 14:11:55 +0100
Subject: [PATCH] drm/vc4: Make FKMS max refresh rate a module
 parameter

Some people want to use the high refresh rate modes for 1080p100
and 1080p120, but they're currently filtered out as generally
they don't add anything.

Make the filter threshold a module parameter so that it can be
adjusted.

https://github.com/raspberrypi/linux/issues/3677

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
---
 drivers/gpu/drm/vc4/vc4_firmware_kms.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

--- a/drivers/gpu/drm/vc4/vc4_firmware_kms.c
+++ b/drivers/gpu/drm/vc4/vc4_firmware_kms.c
@@ -14,6 +14,8 @@
  * Pi's firmware display stack.
  */
 
+#include <linux/module.h>
+
 #include "drm/drm_atomic_helper.h"
 #include "drm/drm_gem_framebuffer_helper.h"
 #include "drm/drm_plane_helper.h"
@@ -32,6 +34,10 @@
 #include "vc_image_types.h"
 #include <soc/bcm2835/raspberrypi-firmware.h>
 
+int fkms_max_refresh_rate = 85;
+module_param(fkms_max_refresh_rate, int, 0644);
+MODULE_PARM_DESC(fkms_max_refresh_rate, "Max supported refresh rate");
+
 struct get_display_cfg {
 	u32  max_pixel_clock[2];  //Max pixel clock for each display
 };
@@ -1069,8 +1075,10 @@ vc4_crtc_mode_valid(struct drm_crtc *crt
 		return MODE_NO_DBLESCAN;
 	}
 
-	/* Disable refresh rates > 85Hz as limited gain from them */
-	if (drm_mode_vrefresh(mode) > 85)
+	/* Disable refresh rates > defined threshold (default 85Hz) as limited
+	 * gain from them
+	 */
+	if (drm_mode_vrefresh(mode) > fkms_max_refresh_rate)
 		return MODE_BAD_VVALUE;
 
 	/* Limit the pixel clock based on the HDMI clock limits from the
