libgfxinit: Add options to limit framebuffer size

Add maximum width and height options and set the default to 2560x1600
(WQXGA). The framebuffer will be scaled up to the displays' native
resolutions. So this should help with tiny fonts on high-DPI displays.

For laptops, reasonable defaults can be set at the mainboard level.

Change-Id: I47fba063629260c3a2854caf7a73f1a1e933d063
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/c/30585
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
diff --git a/src/device/Kconfig b/src/device/Kconfig
index 85f1d65..b90b15f 100644
--- a/src/device/Kconfig
+++ b/src/device/Kconfig
@@ -445,6 +445,22 @@
 	def_bool y
 	depends on VBE_LINEAR_FRAMEBUFFER || GENERIC_LINEAR_FRAMEBUFFER
 
+config LINEAR_FRAMEBUFFER_MAX_WIDTH
+	int "Maximum width in pixels"
+	depends on LINEAR_FRAMEBUFFER && MAINBOARD_USE_LIBGFXINIT
+	default 2560
+	help
+	  Set the maximum width of the framebuffer. This may help with
+	  default fonts too tiny for high-resolution displays.
+
+config LINEAR_FRAMEBUFFER_MAX_HEIGHT
+	int "Maximum height in pixels"
+	depends on LINEAR_FRAMEBUFFER && MAINBOARD_USE_LIBGFXINIT
+	default 1600
+	help
+	  Set the maximum height of the framebuffer. This may help with
+	  default fonts too tiny for high-resolution displays.
+
 endmenu # "Display"
 
 config SMBUS_HAS_AUX_CHANNELS
diff --git a/src/drivers/intel/gma/hires_fb/gma.adb b/src/drivers/intel/gma/hires_fb/gma.adb
index bd14132..e3553ca 100644
--- a/src/drivers/intel/gma/hires_fb/gma.adb
+++ b/src/drivers/intel/gma/hires_fb/gma.adb
@@ -1,3 +1,7 @@
+with CB.Config;
+
+use CB;
+
 with HW.GFX;
 with HW.GFX.Framebuffer_Filler;
 with HW.GFX.GMA;
@@ -60,8 +64,8 @@
 
       success : boolean;
 
-      min_h : pos32 := pos32'last;
-      min_v : pos32 := pos32'last;
+      min_h : pos32 := Config.LINEAR_FRAMEBUFFER_MAX_WIDTH;
+      min_v : pos32 := Config.LINEAR_FRAMEBUFFER_MAX_HEIGHT;
    begin
       lightup_ok := 0;