Commit 10a5b9c5 authored by Matt Devillier's avatar Matt Devillier
Browse files

drivers/intel/gma: Add override for presence straps



A handful of boards do not properly implement the presence straps,
leading libgfxinit to fail to detect an attached display. Add an
override, defaulting to N, which can be set for affected boards.

Add a section to the documentation detailing the option and its usage.
Signed-off-by: Matt Devillier's avatarMatt DeVillier <matt.devillier@puri.sm>
Change-Id: I43c61d67147878887658b23d90fb1c0b91e7a2af
Reviewed-on: https://review.coreboot.org/c/coreboot/+/41416

Tested-by: default avatarbuild bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: default avatarNico Huber <nico.h@gmx.de>
parent 4cf37c00
...@@ -88,11 +88,28 @@ know through which interface the EDID can be queried: ...@@ -88,11 +88,28 @@ know through which interface the EDID can be queried:
select GFX_GMA_ANALOG_I2C_HDMI_C # or select GFX_GMA_ANALOG_I2C_HDMI_C # or
select GFX_GMA_ANALOG_I2C_HDMI_D select GFX_GMA_ANALOG_I2C_HDMI_D
Beside Kconfig options, *libgfxinit* needs to know which ports are *libgfxinit* needs to know which ports are implemented on a board
implemented on a board and should be probed for displays. The mapping and should be probed for displays. There are two mechanisms to
between the physical ports and these entries depends on the hardware constrain the list of ports to probe, 1. port presence straps on
implementation and can be recovered by testing or studying the output the mainboard, and 2. a list of ports provided by *coreboot* (see
of `intelvbttool` or `intel_vbt_decode`. below).
Presence straps are configured via the state of certains pins of
the chipset at reset time. They are documented in the chipset's
datasheets. By default, *libgfxinit* honors these straps for
safety. However, some boards don't implement the straps correctly.
If ports are not strapped as implemented by error, one can select
an option to ignore the straps:
select GFX_GMA_IGNORE_PRESENCE_STRAPS
In the opposite case, that ports are strapped as implemented,
but are actually unconnected, one has to make sure that the
list of ports in *coreboot* omits them.
The mapping between the physical ports and these entries depends on
the hardware implementation and can be recovered by testing or
studying the output of `intelvbttool` or `intel_vbt_decode`.
Each board has to implement the package `GMA.Mainboard` with a list: Each board has to implement the package `GMA.Mainboard` with a list:
ports : HW.GFX.GMA.Display_Probing.Port_List; ports : HW.GFX.GMA.Display_Probing.Port_List;
......
...@@ -129,4 +129,11 @@ config GFX_GMA_ANALOG_I2C_PORT ...@@ -129,4 +129,11 @@ config GFX_GMA_ANALOG_I2C_PORT
digital displays. In that case, the EDID for a VGA display has to be digital displays. In that case, the EDID for a VGA display has to be
read over the I2C interface of the coupled digital port. read over the I2C interface of the coupled digital port.
config GFX_GMA_IGNORE_PRESENCE_STRAPS
def_bool n
help
libgfxinit uses the GPU presence straps to determine if a display port
is present/enabled. Select this option if a board doesn't correctly implement
these straps, causing libgfxinit to fail to detect an attached panel.
endif endif
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment