1219b2ee8SDavid du Colombier #include <u.h> 2219b2ee8SDavid du Colombier #include <libc.h> 37dd7cddfSDavid du Colombier #include <bio.h> 4219b2ee8SDavid du Colombier 59a747e4fSDavid du Colombier #include "pci.h" 6219b2ee8SDavid du Colombier #include "vga.h" 7219b2ee8SDavid du Colombier 8219b2ee8SDavid du Colombier int cflag; /* do not use hwgc */ 9219b2ee8SDavid du Colombier int dflag; /* do the palette */ 10219b2ee8SDavid du Colombier 11219b2ee8SDavid du Colombier Ctlr* ctlrs[] = { 127dd7cddfSDavid du Colombier &ark2000pv, /* ctlr */ 137dd7cddfSDavid du Colombier &ark2000pvhwgc, /* hwgc */ 147dd7cddfSDavid du Colombier &att20c490, /* ramdac */ 15219b2ee8SDavid du Colombier &att20c491, /* ramdac */ 16219b2ee8SDavid du Colombier &att20c492, /* ramdac */ 17219b2ee8SDavid du Colombier &att21c498, /* ramdac */ 18219b2ee8SDavid du Colombier &bt485, /* ramdac */ 19219b2ee8SDavid du Colombier &bt485hwgc, /* hwgc */ 20219b2ee8SDavid du Colombier &ch9294, /* clock */ 21219b2ee8SDavid du Colombier &clgd542x, /* ctlr */ 227dd7cddfSDavid du Colombier &clgd542xhwgc, /* hwgc */ 237dd7cddfSDavid du Colombier &clgd546x, /* ctlr */ 247dd7cddfSDavid du Colombier &clgd546xhwgc, /* hwgc */ 257dd7cddfSDavid du Colombier &ct65540, /* ctlr */ 267dd7cddfSDavid du Colombier &ct65545, /* ctlr */ 277dd7cddfSDavid du Colombier &ct65545hwgc, /* hwgc */ 287dd7cddfSDavid du Colombier &cyber938x, /* ctlr */ 297dd7cddfSDavid du Colombier &cyber938xhwgc, /* hwgc */ 30219b2ee8SDavid du Colombier &et4000, /* ctlr */ 31219b2ee8SDavid du Colombier &et4000hwgc, /* hwgc */ 32219b2ee8SDavid du Colombier &generic, /* ctlr */ 337dd7cddfSDavid du Colombier &hiqvideo, /* ctlr */ 347dd7cddfSDavid du Colombier &hiqvideohwgc, /* hwgc */ 359a747e4fSDavid du Colombier &i81x, /* ctlr */ 369a747e4fSDavid du Colombier &i81xhwgc, /* hwgc */ 37219b2ee8SDavid du Colombier &ibm8514, /* ctlr */ 38219b2ee8SDavid du Colombier &icd2061a, /* clock */ 39219b2ee8SDavid du Colombier &ics2494, /* clock */ 40219b2ee8SDavid du Colombier &ics2494a, /* clock */ 417dd7cddfSDavid du Colombier &ics534x, /* gendac */ 42219b2ee8SDavid du Colombier &mach32, /* ctlr */ 43219b2ee8SDavid du Colombier &mach64, /* ctlr */ 447dd7cddfSDavid du Colombier &mach64xx, /* ctlr */ 457dd7cddfSDavid du Colombier &mach64xxhwgc, /* hwgc */ 467dd7cddfSDavid du Colombier &mga2164w, /* ctlr */ 477dd7cddfSDavid du Colombier &mga2164whwgc, /* hwgc */ 487dd7cddfSDavid du Colombier &neomagic, /* ctlr */ 497dd7cddfSDavid du Colombier &neomagichwgc, /* hwgc */ 509a747e4fSDavid du Colombier &nvidia, /* ctlr */ 519a747e4fSDavid du Colombier &nvidiahwgc, /* hwgc */ 52*b2495906SDavid du Colombier &radeon, /* ctlr */ 53*b2495906SDavid du Colombier &radeonhwgc, /* hwgc */ 54219b2ee8SDavid du Colombier &palette, /* ctlr */ 557dd7cddfSDavid du Colombier &rgb524, /* ramdac */ 567dd7cddfSDavid du Colombier &rgb524hwgc, /* hwgc */ 577dd7cddfSDavid du Colombier &rgb524mn, /* ramdac */ 58219b2ee8SDavid du Colombier &s3801, /* ctlr */ 59219b2ee8SDavid du Colombier &s3805, /* ctlr */ 60219b2ee8SDavid du Colombier &s3928, /* ctlr */ 61219b2ee8SDavid du Colombier &s3clock, /* clock */ 62219b2ee8SDavid du Colombier &s3hwgc, /* hwgc */ 63219b2ee8SDavid du Colombier &sc15025, /* ramdac */ 64b0dcc5a8SDavid du Colombier &softhwgc, /* hwgc */ 65219b2ee8SDavid du Colombier &stg1702, /* ramdac */ 667dd7cddfSDavid du Colombier &t2r4, /* ctlr */ 677dd7cddfSDavid du Colombier &t2r4hwgc, /* hwgc */ 6859cc4ca5SDavid du Colombier &tdfx, /* ctlr */ 6959cc4ca5SDavid du Colombier &tdfxhwgc, /* hwgc */ 707dd7cddfSDavid du Colombier &trio64, /* ctlr */ 71219b2ee8SDavid du Colombier &tvp3020, /* ramdac */ 72219b2ee8SDavid du Colombier &tvp3020hwgc, /* hwgc */ 73219b2ee8SDavid du Colombier &tvp3025, /* ramdac */ 74219b2ee8SDavid du Colombier &tvp3025clock, /* clock */ 757dd7cddfSDavid du Colombier &tvp3026, /* ramdac */ 767dd7cddfSDavid du Colombier &tvp3026clock, /* clock */ 777dd7cddfSDavid du Colombier &tvp3026hwgc, /* hwgc */ 78b0dcc5a8SDavid du Colombier &vesa, /* ctlr */ 797dd7cddfSDavid du Colombier &virge, /* ctlr */ 80219b2ee8SDavid du Colombier &vision864, /* ctlr */ 817dd7cddfSDavid du Colombier &vision964, /* ctlr */ 827dd7cddfSDavid du Colombier &vision968, /* ctlr */ 839a747e4fSDavid du Colombier &vmware, /* ctlr */ 849a747e4fSDavid du Colombier &vmwarehwgc, /* hwgc */ 857dd7cddfSDavid du Colombier &w30c516, /* ctlr */ 869a747e4fSDavid du Colombier &mga4xx, 879a747e4fSDavid du Colombier &mga4xxhwgc, 88219b2ee8SDavid du Colombier 0, 89219b2ee8SDavid du Colombier }; 90219b2ee8SDavid du Colombier 91219b2ee8SDavid du Colombier /* 92219b2ee8SDavid du Colombier * Lower 2-bits of indirect DAC register 93219b2ee8SDavid du Colombier * addressing. 94219b2ee8SDavid du Colombier */ 95219b2ee8SDavid du Colombier ushort dacxreg[4] = { 96219b2ee8SDavid du Colombier PaddrW, Pdata, Pixmask, PaddrR 97219b2ee8SDavid du Colombier }; 98