summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorP. J. McDermott <pj@pehjota.net>2015-09-20 07:47:18 (EDT)
committer P. J. McDermott <pj@pehjota.net>2015-09-20 08:37:52 (EDT)
commitd62b568caac667c42f3dca6e0335aaf4a2e9c083 (patch)
treee8714b42d5aceeeff8b52dc8399fc1e2f26cb024
parentd9b63be109dd591e23c2f6b7b0000a84266d11c1 (diff)
downloadlibreboot-d62b568caac667c42f3dca6e0335aaf4a2e9c083.zip
libreboot-d62b568caac667c42f3dca6e0335aaf4a2e9c083.tar.gz
libreboot-d62b568caac667c42f3dca6e0335aaf4a2e9c083.tar.bz2
docs/hcl/gm45_lcd.html: Describe solution to LVDS channels problem
-rw-r--r--docs/hcl/gm45_lcd.html37
1 files changed, 37 insertions, 0 deletions
diff --git a/docs/hcl/gm45_lcd.html b/docs/hcl/gm45_lcd.html
index 137bc68..29b31ec 100644
--- a/docs/hcl/gm45_lcd.html
+++ b/docs/hcl/gm45_lcd.html
@@ -64,6 +64,43 @@
lvds_channel_mode:Specify LVDS channel mode (0=probe BIOS [default], 1=single-channel, 2=dual-channel) (int)
- from /sbin/modinfo i915
</p>
+ <h1>
+ Proper solution to LVDS second channel enablement problem
+ </h1>
+ <p>
+ The definition of <b>register "gfx.lvds_dual_channel" = "0"</b> in
+ <b>coreboot/src/mainboard/lenovo/t400/devicetree.cb</b> in libreboot affects the
+ <b>int lvds_dual_channel</b> member of a <b>struct i915_gpu_controller_info</b>
+ (defined in <b>coreboot/src/drivers/intel/gma/i915.h</b>) named <b>gfx</b> in a
+ <b>struct northbridge_intel_gm45_config</b> (defined in
+ <b>coreboot/src/northbridge/intel/gm45/chip.h</b>). That
+ <b>gfx.lvds_dual_channel</b> in that <b>struct northbridge_intel_gm45_config</b>
+ affects various registers set in <b>intel_gma_init()</b> in
+ <b>coreboot/src/northbridge/intel/gm45/gma.c</b>.
+ </p>
+ <p>
+ A proper solution would likely be as follows:
+ </p>
+ <ul>
+ <li>
+ Remove <b>gfx.lvds_dual_channel</b> from the <b>devicetree.cb</b> files of
+ GM45-based mainboards.
+ </li>
+ <li>
+ In <b>intel_gma_init()</b> in <b>coreboot/src/northbridge/intel/gm45/gma.c</b>,
+ 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 <b>lvds_dual_channel</b> accordingly. Use that
+ variable instead of <b>info->gfx.lvds_dual_channel</b>.
+ </li>
+ </ul>
+ <p>
+ 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.
+ </p>
</div>
<div class="section">