drivers/intel/gma: Export Read_EDID() to C
Change-Id: Icf802904c569e621ca3b3105b6107936776c5cee Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/c/coreboot/+/31458 Reviewed-by: Patrick Georgi <pgeorgi@google.com> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
3071c8114a
commit
b92c4e3683
|
@ -54,6 +54,9 @@ config INTEL_GMA_SWSMISCI
|
|||
Select this option for Atom-based platforms which use the SWSMISCI
|
||||
register (0xe0) rather than the SWSCI register (0xe8).
|
||||
|
||||
config INTEL_GMA_LIBGFXINIT_EDID
|
||||
bool
|
||||
|
||||
config GFX_GMA_ANALOG_I2C_HDMI_B
|
||||
bool
|
||||
|
||||
|
@ -71,7 +74,7 @@ config GFX_GMA
|
|||
|| SOC_INTEL_BROADWELL || SOC_INTEL_SKYLAKE || SOC_INTEL_APOLLOLAKE \
|
||||
|| SOC_INTEL_KABYLAKE || SOC_INTEL_COFFEELAKE \
|
||||
|| SOC_INTEL_WHISKEYLAKE
|
||||
depends on MAINBOARD_USE_LIBGFXINIT
|
||||
depends on MAINBOARD_USE_LIBGFXINIT || INTEL_GMA_LIBGFXINIT_EDID
|
||||
select RAMSTAGE_LIBHWBASE
|
||||
|
||||
config GFX_GMA_INTERNAL_IS_EDP
|
||||
|
|
|
@ -50,7 +50,7 @@ CONFIG_GFX_GMA_DEFAULT_MMIO := 0 # dummy, will be overwritten at runtime
|
|||
|
||||
subdirs-y += ../../../../3rdparty/libgfxinit
|
||||
|
||||
ramstage-y += gma.ads
|
||||
ramstage-y += gma.ads gma.adb
|
||||
|
||||
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-gfx_init.ads
|
||||
ifeq ($(CONFIG_LINEAR_FRAMEBUFFER),y)
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
with HW.GFX.GMA;
|
||||
with HW.GFX.GMA.Display_Probing;
|
||||
|
||||
use HW.GFX.GMA;
|
||||
|
||||
package body GMA is
|
||||
|
||||
function read_edid
|
||||
(raw_edid : out HW.GFX.EDID.Raw_EDID_Data;
|
||||
port : in Interfaces.C.int)
|
||||
return Interfaces.C.int
|
||||
is
|
||||
use type Interfaces.C.int;
|
||||
success : Boolean := true;
|
||||
begin
|
||||
if port not in Active_Port_Type'Pos (Active_Port_Type'First)
|
||||
.. Active_Port_Type'Pos (Active_Port_Type'Last)
|
||||
then
|
||||
raw_edid := (others => 0);
|
||||
return -2;
|
||||
else
|
||||
if not HW.GFX.GMA.Is_Initialized then
|
||||
HW.GFX.GMA.Initialize (Success => success);
|
||||
end if;
|
||||
if success then
|
||||
HW.GFX.GMA.Display_Probing.Read_EDID
|
||||
(raw_edid, Active_Port_Type'Val (port), success);
|
||||
end if;
|
||||
if success then
|
||||
return 0;
|
||||
else
|
||||
return -1;
|
||||
end if;
|
||||
end if;
|
||||
end read_edid;
|
||||
|
||||
end GMA;
|
|
@ -1,2 +1,14 @@
|
|||
with Interfaces.C;
|
||||
|
||||
with HW.GFX.EDID;
|
||||
|
||||
package GMA is
|
||||
|
||||
function read_edid
|
||||
(raw_edid : out HW.GFX.EDID.Raw_EDID_Data;
|
||||
Port : in Interfaces.C.int)
|
||||
return Interfaces.C.int
|
||||
with
|
||||
Export, Convention => C, External_Name => "gma_read_edid";
|
||||
|
||||
end GMA;
|
||||
|
|
|
@ -14,6 +14,19 @@
|
|||
#ifndef DRIVERS_INTEL_GMA_LIBGFXINIT_H
|
||||
#define DRIVERS_INTEL_GMA_LIBGFXINIT_H
|
||||
|
||||
enum {
|
||||
GMA_PORT_DISABLED,
|
||||
GMA_PORT_INTERNAL,
|
||||
GMA_PORT_DP1,
|
||||
GMA_PORT_DP2,
|
||||
GMA_PORT_DP3,
|
||||
GMA_PORT_HDMI1, /* or DVI */
|
||||
GMA_PORT_HDMI2, /* or DVI */
|
||||
GMA_PORT_HDMI3, /* or DVI */
|
||||
GMA_PORT_ANALOG,
|
||||
};
|
||||
|
||||
void gma_gfxinit(int *lightup_ok);
|
||||
int gma_read_edid(unsigned char edid[], int port);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue