aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/intel/gma/hires_fb/gma.adb
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/intel/gma/hires_fb/gma.adb')
-rw-r--r--src/drivers/intel/gma/hires_fb/gma.adb27
1 files changed, 13 insertions, 14 deletions
diff --git a/src/drivers/intel/gma/hires_fb/gma.adb b/src/drivers/intel/gma/hires_fb/gma.adb
index 7fe4e1200d..b1168acd4d 100644
--- a/src/drivers/intel/gma/hires_fb/gma.adb
+++ b/src/drivers/intel/gma/hires_fb/gma.adb
@@ -50,13 +50,10 @@ is
----------------------------------------------------------------------------
- procedure gfxinit
- (mmio_base : in word64;
- linear_fb : in word64;
- phys_fb : in word32;
- lightup_ok : out Interfaces.C.int)
+ procedure gfxinit (lightup_ok : out Interfaces.C.int)
is
use type pos32;
+ use type word64;
ports : Port_List;
configs : Pipe_Configs;
@@ -68,9 +65,7 @@ is
begin
lightup_ok := 0;
- HW.GFX.GMA.Initialize
- (MMIO_Base => mmio_base,
- Success => success);
+ HW.GFX.GMA.Initialize (Success => success);
if success then
ports := Mainboard.ports;
@@ -98,15 +93,19 @@ is
HW.GFX.GMA.Dump_Configs (configs);
- HW.GFX.GMA.Setup_Default_GTT (fb, phys_fb);
- HW.GFX.Framebuffer_Filler.Fill (linear_fb, fb);
+ HW.GFX.GMA.Setup_Default_FB
+ (FB => fb,
+ Clear => true,
+ Success => success);
- HW.GFX.GMA.Update_Outputs (configs);
+ if success then
+ HW.GFX.GMA.Update_Outputs (configs);
- linear_fb_addr := linear_fb;
- fb_valid := true;
+ HW.GFX.GMA.Map_Linear_FB (linear_fb_addr, fb);
+ fb_valid := linear_fb_addr /= 0;
- lightup_ok := 1;
+ lightup_ok := (if fb_valid then 1 else 0);
+ end if;
end if;
end if;
end gfxinit;