📄 mad16.h
字号:
/* * Initialization code for OPTI MAD16 interface chip by * Davor Jadrijevic <davor@emard.pub.hr> * (Included by ad1848.c when MAD16 support is enabled) * * It looks like MAD16 is similar than the Mozart chip (OAK OTI-601). * It could be even possible that these chips are exactly the same. Can * anybody confirm this? */static void wr_a_mad16(int base, int v, int a){ OUTB(a, base + 0xf); OUTB(v, base + 0x11);}static void wr_b_mad16(int base, int v, int a){ OUTB(a, base + 0xf); OUTB(v, base + 0xd);}/*static int rd_a_mad16(int base, int a){ OUTB(a, base + 0xf); return INB(base + 0x11);}*/static int rd_b_mad16(int base, int a){ OUTB(a, base + 0xf); return INB(base + 0xd);}/*static int rd_0_mad16(int base, int a){ OUTB(a, base + 0xf); return INB(base + 0xf);}static void wr_ad(int base, int v, int a){ OUTB(a, base + 4); OUTB(v, base + 5);}static int rd_ad(int base, int a){ OUTB(a, base + 4); return INB(base + 5);}*/static int mad16init(int adr){ int j; long i; static int ad1848_bases[] = { 0x220, -1, -1, 0x240, -1, -1, -1, -1, 0x530, 0xE80, 0xF40, 0x604, 0 }; int mad16_base = 0xf80, ad1848_base; for(j = 0; (j < 16) && (ad1848_bases[j] != 0); j++) if(adr == ad1848_bases[j]) break; if( (ad1848_base = ad1848_bases[j]) < 0x530) { printk("Unknown MAD16 setting 0x%3X\n", adr); return -1; } /* printk("OPTi MAD16 WSS at 0x%3X\n", ad1848_base); */ rd_b_mad16(mad16_base, 0xe2); wr_a_mad16(mad16_base, 0x1a, 0xe2); wr_b_mad16(mad16_base, j * 16 + 1, 0xe2); wr_a_mad16(mad16_base, 0x1a, 0xe2); for( i = 0; i < 10000; i++) if( (INB(ad1848_base+4) & 0x80) == 0 ) break; return 0;};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -