diff options
author | mischief <mischief@offblast.org> | 2018-08-21 11:31:45 -0700 |
---|---|---|
committer | mischief <mischief@offblast.org> | 2018-08-21 11:31:45 -0700 |
commit | 4e938841f02de646d4e2e428453cbeede4051a57 (patch) | |
tree | 3da45064ab82ef3dcee502ddd6603a1ee15c098e | |
parent | 0c7fe8ae0679c3216cb145ee6ceb5f075af1bddd (diff) |
igfx: support blanking by turning off panel power and backlight
tested on t61, x200, x230, x301, t420, w520
-rw-r--r-- | sys/src/9/pc/vgaigfx.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/sys/src/9/pc/vgaigfx.c b/sys/src/9/pc/vgaigfx.c index baaee2564..ca31dade6 100644 --- a/sys/src/9/pc/vgaigfx.c +++ b/sys/src/9/pc/vgaigfx.c @@ -55,9 +55,46 @@ igfxenable(VGAscr* scr) scr->softscreen = 1; } +static void +igfxblank(VGAscr *scr, int blank) +{ + u32int off; + + switch(scr->pci->did){ + default: + return; + + case 0x2a02: /* GM965 */ + case 0x2a42: /* GM45 */ + off = 0x61204; + break; + + case 0x0126: /* SNB */ + case 0x0166: /* IVB */ + off = 0xC7204; + break; + } + + /* toggle PP_CONTROL backlight & power state */ + if(blank) + scr->mmio[off/4] &= ~0x5; + else + scr->mmio[off/4] |= 0x5; +} + +static void +igfxdrawinit(VGAscr *scr) +{ + scr->blank = igfxblank; +} + VGAdev vgaigfxdev = { "igfx", igfxenable, + nil, + nil, + nil, + igfxdrawinit, }; static void |