ref: 8d8935618ca946f4349468d53da329beeb66becb
parent: 79ff9d28bd2c3d447dfb1a7b3fb6ee5634145a7a
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Fri Jan 9 21:15:30 EST 2015
igfx: perserve frame start delay "magic" bits 27:28 in pipe conf register it turns out, the "magic" bits 27:28 are the frame start delay setting that need to be preserved.
--- a/sys/src/cmd/aux/vga/igfx.c
+++ b/sys/src/cmd/aux/vga/igfx.c
@@ -592,8 +592,11 @@
static void
inittrans(Trans *t, Mode *m)
{
+ /* clear all but 27:28 frame start delay (initialized by bios) */
+ t->conf.v &= 3<<27;
+
/* tans/pipe enable */
- t->conf.v = 1<<31;
+ t->conf.v |= 1<<31;
/* trans/pipe timing */
t->ht.v = (m->ht - 1)<<16 | (m->x - 1);
@@ -751,14 +754,6 @@
error("%s: frequency %d out of range\n", ctlr->name, m->frequency);
initpipe(p, m);
-
- /*
- * undocumented magic that makes the flickering
- * top bar go away on x230 on lcd. found by
- * comparing registers set by vesa bios.
- */
- if(igfx->type == TypeIVB && islvds)
- p->conf.v |= 3<<27;
ctlr->flag |= Finit;
}