diff options
-rw-r--r-- | src/device/Kconfig | 1 | ||||
-rw-r--r-- | src/drivers/intel/gma/Makefile.inc | 6 | ||||
-rw-r--r-- | src/drivers/intel/gma/hires_fb/gma.adb (renamed from src/drivers/intel/gma/gma.adb) | 0 | ||||
-rw-r--r-- | src/drivers/intel/gma/text_fb/gma.adb | 75 |
4 files changed, 81 insertions, 1 deletions
diff --git a/src/device/Kconfig b/src/device/Kconfig index d2385471a7..c90da896ef 100644 --- a/src/device/Kconfig +++ b/src/device/Kconfig @@ -53,6 +53,7 @@ config MAINBOARD_USE_LIBGFXINIT bool "Use libgfxinit for native graphics initialization" depends on MAINBOARD_DO_NATIVE_VGA_INIT depends on MAINBOARD_HAS_LIBGFXINIT + select MAINBOARD_HAS_NATIVE_VGA_INIT_TEXTMODECFG select RAMSTAGE_LIBHWBASE default n help diff --git a/src/drivers/intel/gma/Makefile.inc b/src/drivers/intel/gma/Makefile.inc index a4e007c373..d4d6c08842 100644 --- a/src/drivers/intel/gma/Makefile.inc +++ b/src/drivers/intel/gma/Makefile.inc @@ -40,6 +40,10 @@ CONFIG_GFX_GMA_DEFAULT_MMIO := 0 # dummy, will be overwritten at runtime subdirs-y += ../../../../3rdparty/libgfxinit ramstage-y += gma.ads -ramstage-y += gma.adb +ifeq ($(CONFIG_FRAMEBUFFER_KEEP_VESA_MODE),y) +ramstage-y += hires_fb/gma.adb +else +ramstage-y += text_fb/gma.adb +endif endif # CONFIG_MAINBOARD_USE_LIBGFXINIT diff --git a/src/drivers/intel/gma/gma.adb b/src/drivers/intel/gma/hires_fb/gma.adb index 7ebc4f88bc..7ebc4f88bc 100644 --- a/src/drivers/intel/gma/gma.adb +++ b/src/drivers/intel/gma/hires_fb/gma.adb diff --git a/src/drivers/intel/gma/text_fb/gma.adb b/src/drivers/intel/gma/text_fb/gma.adb new file mode 100644 index 0000000000..bbb6d74e3d --- /dev/null +++ b/src/drivers/intel/gma/text_fb/gma.adb @@ -0,0 +1,75 @@ +with HW.GFX; +with HW.GFX.GMA; + +use HW.GFX; +use HW.GFX.GMA; + +with GMA.Mainboard; + +package body GMA +is + + function vbe_mode_info_valid return Interfaces.C.int + is + begin + return 0; + end vbe_mode_info_valid; + + procedure fill_lb_framebuffer (framebuffer : out lb_framebuffer) + is + begin + null; + end fill_lb_framebuffer; + + ---------------------------------------------------------------------------- + + procedure gfxinit + (mmio_base : in word64; + linear_fb : in word64; + phys_fb : in word32; + lightup_ok : out Interfaces.C.int) + is + ports : Port_List; + configs : Configs_Type; + + success : boolean; + + -- from pc80/vga driver + procedure vga_io_init; + pragma Import (C, vga_io_init, "vga_io_init"); + procedure vga_textmode_init; + pragma Import (C, vga_textmode_init, "vga_textmode_init"); + begin + lightup_ok := 0; + + HW.GFX.GMA.Initialize + (MMIO_Base => mmio_base, + Success => success); + + if success then + ports := Mainboard.ports; + HW.GFX.GMA.Scan_Ports + (Configs => configs, + Ports => ports, + Max_Pipe => Primary); + + if configs (Primary).Port /= Disabled then + vga_io_init; + vga_textmode_init; + + configs (Primary).Framebuffer := + (Width => 640, + Height => 400, + BPC => Auto_BPC, -- ignored for VGA plane + Stride => 320, -- ignored + Offset => VGA_PLANE_FRAMEBUFFER_OFFSET); + + HW.GFX.GMA.Dump_Configs (configs); + HW.GFX.GMA.Update_Outputs (configs); + + lightup_ok := 1; + end if; + end if; + end gfxinit; + +end GMA; |