Blame |
Last modification |
View Log
| RSS feed
/*
* 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)
printk(KERN_INFO "svgalib: Assuming %dMHz DAC.\n", defspeed / 1000);
dacspeed = defspeed;
} else {
if (__svgalib_driver_report)
printk(KERN_INFO "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
#ifdef INCLUDE_ICS_GENDAC_DAC
&__svgalib_ICS_GENDAC_methods,
#endif
NULL
};