1219b2ee8SDavid du Colombier #include <u.h>
2219b2ee8SDavid du Colombier #include <libc.h>
37dd7cddfSDavid du Colombier #include <bio.h>
4219b2ee8SDavid du Colombier
5*9a747e4fSDavid du Colombier #include "pci.h"
6219b2ee8SDavid du Colombier #include "vga.h"
7219b2ee8SDavid du Colombier
8219b2ee8SDavid du Colombier static void
init(Vga * vga,Ctlr * ctlr)9219b2ee8SDavid du Colombier init(Vga* vga, Ctlr* ctlr)
10219b2ee8SDavid du Colombier {
11219b2ee8SDavid du Colombier ctlr->flag |= Finit;
12219b2ee8SDavid du Colombier
13219b2ee8SDavid du Colombier if(cflag)
14219b2ee8SDavid du Colombier return;
15219b2ee8SDavid du Colombier /*
16219b2ee8SDavid du Colombier * Use of the on-chip hwgc requires using enhanced mode.
17219b2ee8SDavid du Colombier */
187dd7cddfSDavid du Colombier if(vga->ctlr == 0 || (vga->ctlr->flag & Henhanced) == 0 || vga->mode->z < 8){
19219b2ee8SDavid du Colombier cflag = 1;
20219b2ee8SDavid du Colombier return;
21219b2ee8SDavid du Colombier }
22219b2ee8SDavid du Colombier resyncinit(vga, ctlr, Uenhanced, 0);
23219b2ee8SDavid du Colombier }
24219b2ee8SDavid du Colombier
25219b2ee8SDavid du Colombier static void
load(Vga * vga,Ctlr * ctlr)26219b2ee8SDavid du Colombier load(Vga* vga, Ctlr* ctlr)
27219b2ee8SDavid du Colombier {
28219b2ee8SDavid du Colombier ctlr->flag |= Fload;
29219b2ee8SDavid du Colombier
30219b2ee8SDavid du Colombier if(cflag)
31219b2ee8SDavid du Colombier return;
32219b2ee8SDavid du Colombier /*
33219b2ee8SDavid du Colombier * Use of the on-chip hwgc requires using enhanced mode.
34219b2ee8SDavid du Colombier */
357dd7cddfSDavid du Colombier if(vga->ctlr == 0 || (vga->ctlr->flag & Uenhanced) == 0 || vga->mode->z < 8)
36219b2ee8SDavid du Colombier cflag = 1;
37219b2ee8SDavid du Colombier }
38219b2ee8SDavid du Colombier
39219b2ee8SDavid du Colombier Ctlr bt485hwgc = {
40219b2ee8SDavid du Colombier "bt485hwgc", /* name */
41219b2ee8SDavid du Colombier 0, /* snarf */
42219b2ee8SDavid du Colombier 0, /* options */
43219b2ee8SDavid du Colombier 0, /* init */
44219b2ee8SDavid du Colombier 0, /* load */
45219b2ee8SDavid du Colombier 0, /* dump */
46219b2ee8SDavid du Colombier };
47219b2ee8SDavid du Colombier
487dd7cddfSDavid du Colombier Ctlr rgb524hwgc = {
497dd7cddfSDavid du Colombier "rgb524hwgc", /* name */
507dd7cddfSDavid du Colombier 0, /* snarf */
517dd7cddfSDavid du Colombier 0, /* options */
527dd7cddfSDavid du Colombier 0, /* init */
537dd7cddfSDavid du Colombier 0, /* load */
547dd7cddfSDavid du Colombier 0, /* dump */
557dd7cddfSDavid du Colombier };
567dd7cddfSDavid du Colombier
57219b2ee8SDavid du Colombier Ctlr s3hwgc = {
58219b2ee8SDavid du Colombier "s3hwgc", /* name */
59219b2ee8SDavid du Colombier 0, /* snarf */
60219b2ee8SDavid du Colombier 0, /* options */
61219b2ee8SDavid du Colombier init, /* init */
62219b2ee8SDavid du Colombier load, /* load */
63219b2ee8SDavid du Colombier 0, /* dump */
64219b2ee8SDavid du Colombier };
65219b2ee8SDavid du Colombier
66219b2ee8SDavid du Colombier Ctlr tvp3020hwgc = {
67219b2ee8SDavid du Colombier "tvp3020hwgc", /* name */
68219b2ee8SDavid du Colombier 0, /* snarf */
69219b2ee8SDavid du Colombier 0, /* options */
70219b2ee8SDavid du Colombier 0, /* init */
71219b2ee8SDavid du Colombier 0, /* load */
72219b2ee8SDavid du Colombier 0, /* dump */
73219b2ee8SDavid du Colombier };
747dd7cddfSDavid du Colombier
757dd7cddfSDavid du Colombier Ctlr tvp3026hwgc = {
767dd7cddfSDavid du Colombier "tvp3026hwgc", /* name */
777dd7cddfSDavid du Colombier 0, /* snarf */
787dd7cddfSDavid du Colombier 0, /* options */
797dd7cddfSDavid du Colombier 0, /* init */
807dd7cddfSDavid du Colombier 0, /* load */
817dd7cddfSDavid du Colombier 0, /* dump */
827dd7cddfSDavid du Colombier };
83