gma: Add option for VGA plane on the primary pipe
Add special VGA_PLANE_FRAMEBUFFER_OFFSET that, if set on the primary
pipe, toggles the use of the legacy VGA plane instead of the `hires`
plane.
The caller is responsible for the configuration of the VGA plane and
has to specify the framebuffer width and height accordingly.
Change-Id: I9f678fe033d835c9183fbb2d2b05b6585eb545ca
Signed-off-by: Nico Huber <nico.huber@secunet.com>
Reviewed-on: https://review.coreboot.org/17276
Tested-by: Nico Huber <nico.h@gmx.de>
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
diff --git a/common/hw-gfx-gma.adb b/common/hw-gfx-gma.adb
index f8b0e7b..c50d943 100644
--- a/common/hw-gfx-gma.adb
+++ b/common/hw-gfx-gma.adb
@@ -192,16 +192,19 @@
begin
-- No downscaling
-- Respect maximum scalable width
- -- Only 32bpp RGB
- -- Stride must be a multiple of 64
+ -- VGA plane is only allowed on the primary pipe
+ -- Only 32bpp RGB (ignored for VGA plane)
+ -- Stride must be a multiple of 64 (ignored for VGA plane)
return
((Framebuffer.Width = Pos32 (Port_Cfg.Mode.H_Visible) and
Framebuffer.Height = Pos32 (Port_Cfg.Mode.V_Visible)) or
(Framebuffer.Width <= Config.Maximum_Scalable_Width (I) and
Framebuffer.Width <= Pos32 (Port_Cfg.Mode.H_Visible) and
Framebuffer.Height <= Pos32 (Port_Cfg.Mode.V_Visible))) and
- Framebuffer.BPC = 8 and
- Framebuffer.Stride mod 64 = 0;
+ (Framebuffer.Offset /= VGA_PLANE_FRAMEBUFFER_OFFSET or I = Primary) and
+ (Framebuffer.Offset = VGA_PLANE_FRAMEBUFFER_OFFSET or
+ (Framebuffer.BPC = 8 and
+ Framebuffer.Stride mod 64 = 0));
end Validate_Config;
procedure Fill_Port_Config