summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt DeVillier <matt.devillier@puri.sm>2020-05-14 17:45:29 -0500
committerNico Huber <nico.h@gmx.de>2020-05-20 23:38:05 +0000
commitdd467bfc14aa5e1d27e87814588a871fec6aa51f (patch)
tree5033c43acc0e88d3411f03d32458e5455ef91fc7
parentbba5bfc7d26ca8e9de56b4160e3d1980d6b3be7c (diff)
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 <matt.devillier@puri.sm> Change-Id: I43c61d67147878887658b23d90fb1c0b91e7a2af Reviewed-on: https://review.coreboot.org/c/coreboot/+/41416 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
-rw-r--r--Documentation/gfx/libgfxinit.md27
-rw-r--r--src/drivers/intel/gma/Kconfig7
2 files changed, 29 insertions, 5 deletions
diff --git a/Documentation/gfx/libgfxinit.md b/Documentation/gfx/libgfxinit.md
index bb4528b958..40f194a4eb 100644
--- a/Documentation/gfx/libgfxinit.md
+++ b/Documentation/gfx/libgfxinit.md
@@ -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_D
-Beside Kconfig options, *libgfxinit* needs to know which ports are
-implemented on a board and should be probed for displays. 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`.
+*libgfxinit* needs to know which ports are implemented on a board
+and should be probed for displays. There are two mechanisms to
+constrain the list of ports to probe, 1. port presence straps on
+the mainboard, and 2. a list of ports provided by *coreboot* (see
+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:
ports : HW.GFX.GMA.Display_Probing.Port_List;
diff --git a/src/drivers/intel/gma/Kconfig b/src/drivers/intel/gma/Kconfig
index ad44a2f480..635de1c87a 100644
--- a/src/drivers/intel/gma/Kconfig
+++ b/src/drivers/intel/gma/Kconfig
@@ -127,4 +127,11 @@ config GFX_GMA_ANALOG_I2C_PORT
digital displays. In that case, the EDID for a VGA display has to be
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