[coreboot-gerrit] Patch set updated for coreboot: i945/gma.c: Only init LVDS if it is detected

Arthur Heymans (arthur@aheymans.xyz) gerrit at coreboot.org
Wed Sep 7 23:41:24 CEST 2016


Arthur Heymans (arthur at aheymans.xyz) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/16513

-gerrit

commit 8e72c18c2a73a4069b1274e77f200a0f7c55552a
Author: Arthur Heymans <arthur at aheymans.xyz>
Date:   Tue Sep 6 23:53:32 2016 +0200

    i945/gma.c: Only init LVDS if it is detected
    
    Some devices have no LVDS output but if no VGA is connected or
    no EDID can be found, it will try to init LVDS.
    
    This patches detects the presence of an LVDS panel and
    makes sure only that only VGA is initialised in the absence of an LVDS panel.
    
    Change-Id: Ie15631514535bab6c881c1f52e9edbfb8aaa5db7
    Signed-off-by: Arthur Heymans <arthur at aheymans.xyz>
---
 src/northbridge/intel/i945/gma.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/northbridge/intel/i945/gma.c b/src/northbridge/intel/i945/gma.c
index cef1349..17e0d70 100644
--- a/src/northbridge/intel/i945/gma.c
+++ b/src/northbridge/intel/i945/gma.c
@@ -555,18 +555,20 @@ static int intel_gma_init_vga(struct northbridge_intel_i945_config *conf,
 
 /* compare the header of the vga edid header */
 /* if vga is not connected it should have a correct header */
-static int vga_connected(u8 *pmmio) {
+static int probe_edid(u8 *pmmio, u8 slave)
+{
 	u8 vga_edid[128];
 	u8 header[8] = {0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00};
-	intel_gmbus_read_edid(pmmio + GMBUS0, 2, 0x50, vga_edid, 128);
+	intel_gmbus_read_edid(pmmio + GMBUS0, slave, 0x50, vga_edid, 128);
 	intel_gmbus_stop(pmmio + GMBUS0);
 	for (int i = 0; i < 8; i++) {
 		if (vga_edid[i] != header[i]) {
-			printk(BIOS_DEBUG, "VGA not connected. Using LVDS display\n");
+			printk(BIOS_DEBUG, "Slave %d is not connected\n",
+				slave);
 			return 0;
 		}
 	}
-	printk(BIOS_SPEW, "VGA display connected\n");
+	printk(BIOS_SPEW, "Slave %d is connected\n", slave);
 	return 1;
 }
 
@@ -611,7 +613,9 @@ static void gma_func0_init(struct device *dev)
 	);
 
 	int err;
-	if (vga_connected(mmiobase))
+	/* probe if VGA is connected and alway run */
+	/* VGA init if no LVDS is connected */
+	if (!probe_edid(mmiobase, 3) || probe_edid(mmiobase, 2))
 		err = intel_gma_init_vga(conf, pci_read_config32(dev, 0x5c) & ~0xf,
 					iobase, mmiobase, graphics_base);
 	else



More information about the coreboot-gerrit mailing list