[coreboot-gerrit] Patch set updated for coreboot: northbridge/intel/sandybridge: support both Sandy&Ivy on one board

Iru Cai (mytbk920423@gmail.com) gerrit at coreboot.org
Wed Oct 28 10:14:26 CET 2015


Iru Cai (mytbk920423 at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/12087

-gerrit

commit 34f4d11bbf54f1d88067efa687584b40ae1f6aa4
Author: Iru Cai <mytbk920423 at gmail.com>
Date:   Sun Oct 18 23:40:34 2015 +0800

    northbridge/intel/sandybridge: support both Sandy&Ivy on one board
    
    Sandy and Ivy Bridge processors use the same socket,
    and a mainboard with the socket can support both types
    of CPUs. However, they use different native graphics init
    code and cause a crashing if running the wrong code.
    So it needs a detecting, then selects the right code to run.
    This patch will add some more code in ramstage (maybe we can add some
    more flexible Kconfig settings).
    
    Tested on a Lenovo T420 with i5-2520m or i7-3720qm
    
    Needs testing: desktop/server platforms, 7 series chipset with SNB/IVB
    
    Signed-off-by: Iru Cai <mytbk920423 at gmail.com>
    Change-Id: I4624759f9c92d56d547db1ab4b9a1d611a182a91
---
 src/northbridge/intel/sandybridge/Makefile.inc         |  2 ++
 src/northbridge/intel/sandybridge/gma.c                | 15 +++++++++++++--
 src/northbridge/intel/sandybridge/gma.h                |  2 ++
 src/northbridge/intel/sandybridge/gma_ivybridge_lvds.c |  4 ++--
 4 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/src/northbridge/intel/sandybridge/Makefile.inc b/src/northbridge/intel/sandybridge/Makefile.inc
index 49c0712..7c66269 100644
--- a/src/northbridge/intel/sandybridge/Makefile.inc
+++ b/src/northbridge/intel/sandybridge/Makefile.inc
@@ -23,6 +23,8 @@ ramstage-y += ram_calc.c
 ramstage-y += northbridge.c
 ramstage-y += gma.c
 ramstage-$(CONFIG_IVYBRIDGE_LVDS) += gma_ivybridge_lvds.c
+ramstage-$(CONFIG_IVYBRIDGE_LVDS) += gma_sandybridge_lvds.c
+ramstage-$(CONFIG_SANDYBRIDGE_LVDS) += gma_ivybridge_lvds.c
 ramstage-$(CONFIG_SANDYBRIDGE_LVDS) += gma_sandybridge_lvds.c
 
 ramstage-y += acpi.c
diff --git a/src/northbridge/intel/sandybridge/gma.c b/src/northbridge/intel/sandybridge/gma.c
index d1779db..d859cc9 100644
--- a/src/northbridge/intel/sandybridge/gma.c
+++ b/src/northbridge/intel/sandybridge/gma.c
@@ -595,8 +595,19 @@ static void gma_func0_init(struct device *dev)
 		physbase = pci_read_config32(dev, 0x5c) & ~0xf;
 		graphics_base = dev->resource_list[1].base;
 
-		int lightup_ok = i915lightup_sandy(&conf->gfx, physbase, iobase,
-						   mmiobase, graphics_base);
+		int lightup_ok;
+#if (IS_ENABLED(CONFIG_SANDYBRIDGE_LVDS) || IS_ENABLED(CONFIG_IVYBRIDGE_LVDS))
+		if ((bridge_silicon_revision() & BASE_REV_MASK) == BASE_REV_SNB) {
+			lightup_ok = i915lightup_sandy(&conf->gfx, physbase, iobase,
+					mmiobase, graphics_base);
+		} else {
+			lightup_ok = i915lightup_ivy(&conf->gfx, physbase, iobase,
+					mmiobase, graphics_base);
+		}
+#else
+		lightup_ok = i915lightup_ivy(&conf->gfx, physbase, iobase,
+				mmiobase, graphics_base);
+#endif
 		if (lightup_ok)
 			gfx_set_init_done(1);
 	}
diff --git a/src/northbridge/intel/sandybridge/gma.h b/src/northbridge/intel/sandybridge/gma.h
index d8e19e4..58e4957 100644
--- a/src/northbridge/intel/sandybridge/gma.h
+++ b/src/northbridge/intel/sandybridge/gma.h
@@ -118,3 +118,5 @@ struct i915_gpu_controller_info;
 
 int i915lightup_sandy(const struct i915_gpu_controller_info *info,
 		u32 physbase, u16 pio, u8 *mmio, u32 lfb);
+int i915lightup_ivy(const struct i915_gpu_controller_info *info,
+		u32 phybase, u16 pio, u8 *mmio, u32 lfb);
diff --git a/src/northbridge/intel/sandybridge/gma_ivybridge_lvds.c b/src/northbridge/intel/sandybridge/gma_ivybridge_lvds.c
index c37959e..9a48549 100644
--- a/src/northbridge/intel/sandybridge/gma_ivybridge_lvds.c
+++ b/src/northbridge/intel/sandybridge/gma_ivybridge_lvds.c
@@ -157,8 +157,8 @@ static void enable_port(u8 *mmio)
 	read32(mmio + 0xc4000);
 }
 
-int i915lightup_sandy(const struct i915_gpu_controller_info *info,
-		      u32 physbase, u16 piobase, u8 *mmio, u32 lfb)
+int i915lightup_ivy(const struct i915_gpu_controller_info *info,
+		    u32 physbase, u16 piobase, u8 *mmio, u32 lfb)
 {
 	int i;
 	u8 edid_data[128];



More information about the coreboot-gerrit mailing list