From 0c7517f0ecd99d347821f62d4446e4a5c0d6ba00 Mon Sep 17 00:00:00 2001
From: P. J. McDermott
Date: Sun, 20 Sep 2015 07:47:18 -0400
Subject: docs/hcl/gm45_lcd.html: Describe solution to LVDS channels problem
---
(limited to 'docs/hcl/gm45_lcd.html')
diff --git a/docs/hcl/gm45_lcd.html b/docs/hcl/gm45_lcd.html
index 137bc68..7ffbda4 100644
--- a/docs/hcl/gm45_lcd.html
+++ b/docs/hcl/gm45_lcd.html
@@ -64,6 +64,47 @@
lvds_channel_mode:Specify LVDS channel mode (0=probe BIOS [default], 1=single-channel, 2=dual-channel) (int)
- from /sbin/modinfo i915
+
+ Proper solution to LVDS second channel enablement problem
+
+
+ The definition of register "gfx.lvds_dual_channel" = "0" in
+ coreboot/src/mainboard/lenovo/t400/devicetree.cb in libreboot affects the
+ int lvds_dual_channel member of a struct i915_gpu_controller_info
+ (defined in coreboot/src/drivers/intel/gma/i915.h) named gfx in a
+ struct northbridge_intel_gm45_config (defined in
+ coreboot/src/northbridge/intel/gm45/chip.h). That
+ gfx.lvds_dual_channel in that struct northbridge_intel_gm45_config
+ affects various registers set in intel_gma_init() in
+ coreboot/src/northbridge/intel/gm45/gma.c.
+
+
+ A proper solution would likely be as follows:
+
+
+ -
+ Remove gfx.lvds_dual_channel from the devicetree.cb files of
+ GM45-based mainboards.
+
+ -
+ Remove the gfx member of struct northbridge_intel_gm45_config in
+ coreboot/src/northbridge/intel/gm45/chip.h.
+
+ -
+ In intel_gma_init() in coreboot/src/northbridge/intel/gm45/gma.c,
+ somehow detect whether both LVDS channels should be used (maybe if the
+ resolution as obtained from the decoded EDID data is greater than 1280x800
+ pixels) and set a local variable lvds_dual_channel accordingly. Use that
+ variable instead of info->gfx.lvds_dual_channel.
+
+
+
+ Note that this doesn't completely solve the problem for those dual-channel
+ displays and that GRUB still won't have graphics output. More work is still
+ needed to investigate why coreboot's graphics initialization code for GM45
+ doesn't properly handle dual-channel displays (but the code for Sandy/Ivy Bridge
+ apparently does, as does Linux's i915 driver) and resolve that.
+
--
cgit v0.9.1