xref: /plan9-contrib/sys/src/cmd/aux/vga/s3hwgc.c (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
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