btdacs.c

来自「linux 下svgalib编的一个界面程序示例」· C语言 代码 · 共 110 行

C
110
字号
/* * btdacs.c: *  * RAMDAC definition for Bt485  * * NON-FUNCTIONAL */#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"/* * RAMDAC definition for industry-standard AT&T20C498 DAC with 16-bit * pixel port, and compatibles. * Differently rated versions exist, such as 80, 110, 135 and 170 MHz. * This code assumes the DAC is actually connected with a 16-bit path. * (an example of a 498-compatible DAC being used with a 8-bit path * is the Hercules Stingray Pro/V with the IC Works ZoomDAC). */#ifdef INCLUDE_BT485_DAC_TESTstatic int bt485_probe(void){    return 0;}#else#define bt485_probe 0#endif#ifdef INCLUDE_BT485_DACstatic void bt485_init(void){    if (__svgalib_driver_report)	printf("svgalib: Using BT485 DAC, 135 MHz rated.\n");}static int bt485_map_clock(int bpp, int pixelclock){    return pixelclock;        if (bpp == 8 && pixelclock > 80000)	/* Use 16-bit path, clock doubling at RAMDAC. */	return pixelclock / 2;    if (bpp == 16)	return pixelclock;    if (bpp == 32)	return pixelclock * 2;    return pixelclock;}static int bt485_map_horizontal_crtc(int bpp, int pixelclock, int htiming){    return htiming    /* Not sure. */    if (bpp == 8 && pixelclock > 80000)	/* Use 16-bit path, clock doubling at RAMDAC. */	return htiming / 2;    if (bpp == 32)	return htiming * 2;    return htiming;}static void bt485_initializestate(unsigned char *regs, int bpp, int colormode,				      int pixelclock){    regs[0] = 0;    if (colormode == CLUT8_8)	regs[0] = 0x02;    if (colormode == RGB16_555)	regs[0] = 0x10;    if (colormode == RGB16_565)	regs[0] = 0x30;    if (colormode == RGB32_888_B)	regs[0] = 0x50;}static void 485_qualify_cardspecs(CardSpecs * cardspecs, int dacspeed){    dacspeed = __svgalib_setDacSpeed(dacspeed, 135000);    cardspecs->maxPixelClock4bpp = 0;    cardspecs->maxPixelClock8bpp = dacspeed;    cardspecs->maxPixelClock16bpp = dacspeed;    cardspecs->maxPixelClock24bpp = 0;    cardspecs->maxPixelClock32bpp = dacspeed ;    cardspecs->mapClock = bt485_map_clock;    cardspecs->mapHorizontalCrtc = att20c498_map_horizontal_crtc;}DacMethods __svgalib_BT485_methods ={    BT485,    "BT485 DAC",    0,    bt485_probe,    bt485_init,    bt485_qualify_cardspecs,    __svgalib_Sierra_32K_savestate,    __svgalib_Sierra_32K_restorestate,    bt485_initializestate,    1				/* State size. */};#endif

⌨️ 快捷键说明

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