3rdparty/lib{hwbase,gfxinit}: Update to latest master
Simplifies our C interface function gma_gfxinit(), due to the following
changes:
* *libgfxinit* knows about the underlying PCI device now and can
probe MMIO addresses by itself.
* The framebuffer mapping is now completely handled inside the
library where we validate that we neither overflow
- the stolen memory,
- the GTT address space, the GTT itself nor
- the aperture window (i.e. resource2 of the PCI device)
that we use to access the framebuffer.
Other changes:
* Fixes and a quirk for DP training.
* Fix for DP-VGA adapters that report an analog display in EDID.
* Fixes for Skylake support with coreboot.
* DDI Buffer drive-strength configuration for Haswell, Broadwell and
Skylake.
* `gfx_test` can now be run from X windows (with glitches).
* Compatibility with GCC 7 and SPARK GPL 2017.
TEST=Booted lenovo/t420 and verified that everything works as usual.
Change-Id: I001ba973d864811503410579fd7ad55ab8612759
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/20606
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
This commit is contained in:
@@ -6,11 +6,7 @@ use HW;
|
||||
package GMA
|
||||
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);
|
||||
pragma Export (C, gfxinit, "gma_gfxinit");
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -14,6 +14,6 @@
|
||||
#ifndef DRIVERS_INTEL_GMA_LIBGFXINIT_H
|
||||
#define DRIVERS_INTEL_GMA_LIBGFXINIT_H
|
||||
|
||||
void gma_gfxinit(u64 mmio_base, u64 linear_fb, u32 phys_fb, int *success);
|
||||
void gma_gfxinit(int *lightup_ok);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -22,11 +22,7 @@ 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
|
||||
ports : Port_List;
|
||||
configs : Pipe_Configs;
|
||||
@@ -41,9 +37,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;
|
||||
|
||||
Reference in New Issue
Block a user