ramdac.c

来自「基于组件方式开发操作系统的OSKIT源代码」· C语言 代码 · 共 120 行

C
120
字号
/* * ramdac.c: *  * This file contains RAMDAC definitions of type DacMethods for * various DACs. * * Note that the restoreState function is the only function that * should program the DAC registers; the initializeState function * should merely define the values that will be written in a * subsequent call of the restore funtion. */#include <stdlib.h>#include <stdio.h>#include "libvga.h"#include "timing.h"#include "vgaregs.h"#include "driver.h"		/* for __svgalib_driver_report */#include "ramdac.h"/* * The following function probes the DACs in daclist, which must be * terminated by NULL. It returns the detected DAC if successful, NULL * otherwise. The detected DAC is also initialized. */DacMethods *__svgalib_probeDacs(DacMethods ** dacs_to_probe){    /* Probe for a RAMDAC. */    for (;;) {	DacMethods *dac;	dac = *dacs_to_probe;	if (dac == NULL)	    /* None found. */	    return NULL;	if (dac->probe()) {	    dac->initialize();	    return dac;	}	dacs_to_probe++;    }}int __svgalib_setDacSpeed(int dacspeed, int defspeed){    if (!dacspeed) {	if (__svgalib_driver_report)	    printf("svgalib: Assuming %dMHz DAC.\n", defspeed / 1000);	dacspeed = defspeed;    } else {	if (__svgalib_driver_report)	    printf("svgalib: DAC speed set to %dMHz.\n", dacspeed / 1000);    }    return dacspeed;}#ifndef __OPTIMIZE__	/* otherwise inlined from ramdac.h */void _ramdac_dactocomm(void){    inb(PEL_IW);    inb(PEL_MSK);    inb(PEL_MSK);    inb(PEL_MSK);    inb(PEL_MSK);}void _ramdac_dactopel(void){    inb(PEL_IW);}unsigned char _ramdac_setcomm(unsigned char data){    _ramdac_dactocomm();    outb(PEL_MSK, data);    _ramdac_dactocomm();    return inb(PEL_MSK);}#endif/* * List of all DACs. */DacMethods *__svgalib_all_dacs[] ={#ifdef INCLUDE_NORMAL_DAC    &__svgalib_normal_dac_methods,#endif#ifdef INCLUDE_S3_SDAC_DAC    &__svgalib_S3_SDAC_methods,#endif#ifdef INCLUDE_S3_GENDAC_DAC    &__svgalib_S3_GENDAC_methods,#endif#ifdef INCLUDE_S3_TRIO64_DAC    &__svgalib_Trio64_methods,#endif#ifdef INCLUDE_SIERRA_DAC    &__svgalib_Sierra_32K_methods,#endif#ifdef INCLUDE_SC15025_DAC    &__svgalib_SC15025_methods,#endif#ifdef INCLUDE_ATT20C490_DAC    &__svgalib_ATT20C490_methods,#endif#ifdef INCLUDE_ATT20C498_DAC    &__svgalib_ATT20C498_methods,#endif#ifdef INCLUDE_ICW_DAC    &__svgalib_ICW_methods,#endif#ifdef INCLUDE_SC1148X_DAC    &__svgalib_SC1148X_methods,#endif    NULL};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?