📄 ics2494.c
字号:
/* * Integrated Circuit Systems, Inc. * ICS2494[A] Dual Video/Memory Clock Generator. */#include <u.h>#include <libc.h>#include <bio.h>#include "pci.h"#include "vga.h"typedef struct { char* name[2]; ulong frequency[16];} Pattern;static Pattern patterns[] = { { "237", "304", 50350000, 56644000, 65000000, 72000000, 80000000, 89800000, 63000000, 75000000, 25175000, 28322000, 31500000, 36000000, 40000000, 44900000, 50000000, 65000000, }, { "324", 0, 50350000, 56644000, 65000000, 72000000, 80000000, 89800000, 63000000, 75000000, 83078000, 93463000, 100000000, 104000000, 108000000, 120000000, 130000000, 134700000, }, { 0, },};static voidinit(Vga* vga, Ctlr* ctlr){ Pattern *pattern; char *p; int f, index, divisor, maxdivisor; if(ctlr->flag & Finit) return; if(vga->f[0] == 0) vga->f[0] = vga->mode->frequency; if((p = strchr(ctlr->name, '-')) == 0) error("%s: unknown pattern\n", ctlr->name); p++; for(pattern = patterns; pattern->name[0]; pattern++){ if(strcmp(pattern->name[0], p) == 0) break; if(pattern->name[1] && strcmp(pattern->name[1], p) == 0) break; } if(pattern->name[0] == 0) error("%s: unknown pattern\n", ctlr->name); maxdivisor = 1; if(vga->ctlr && (vga->ctlr->flag & Hclkdiv)) maxdivisor = 8; for(index = 0; index < 16; index++){ for(divisor = 1; divisor <= maxdivisor; divisor <<= 1){ f = vga->f[0] - pattern->frequency[index]/divisor; if(f < 0) f = -f; if(f < 1000000){ /*vga->f = pattern->frequency[index];*/ vga->d[0] = divisor; vga->i[0] = index; ctlr->flag |= Finit; return; } } } error("%s: can't find frequency %ld\n", ctlr->name, vga->f[0]);}Ctlr ics2494 = { "ics2494", /* name */ 0, /* snarf */ 0, /* options */ init, /* init */ 0, /* load */ 0, /* dump */};Ctlr ics2494a = { "ics2494a", /* name */ 0, /* snarf */ 0, /* options */ init, /* init */ 0, /* load */ 0, /* dump */};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -