/************************************************************************/ /* */ /* CVTVDIF.C */ /* */ /* July 12 1995 (c) 1993, 1995 ATI Technologies Incorporated. */ /************************************************************************/ /********************** PolyTron RCS Utilities $Revision: 1.5 $ $Date: 23 Jan 1996 11:45:32 $ $Author: RWolff $ $Log: S:/source/wnt/ms11/miniport/archive/cvtvdif.c_v $ * * Rev 1.5 23 Jan 1996 11:45:32 RWolff * Protected against false values of TARGET_BUILD. * * Rev 1.4 11 Jan 1996 19:39:06 RWolff * Now restricts "canned" mode tables by both maximum index and maximum * pixel clock frequency, and VDIF mode tables by maximum pixel clock * frequency only, rather than both by maximum refresh rate. * * Rev 1.3 19 Dec 1995 14:07:14 RWolff * Added debug print statements. * * Rev 1.2 30 Oct 1995 12:09:42 MGrubac * Fixed bug in calculating CRTC parameters based on read in data from VDIF files. * * Rev 1.1 26 Jul 1995 13:06:44 mgrubac * Moved mode tables merging to VDIFCallback() routine. * * Rev 1.0 20 Jul 1995 18:19:12 mgrubac * Initial revision. End of PolyTron RCS section *****************/ #include #include #include #include #include #include "dderror.h" #include "miniport.h" #include "ntddvdeo.h" #include "video.h" /* for VP_STATUS definition */ #include "vidlog.h" #include "stdtyp.h" #include "amach.h" #include "amach1.h" #include "atimp.h" #include "atint.h" #include "cvtvga.h" #include "atioem.h" #include "services.h" #include "vdptocrt.h" #include "vdpdata.h" #include "cvtvdif.h" /* * Allow miniport to be swapped out when not needed. */ #if defined (ALLOC_PRAGMA) #pragma alloc_text(PAGE_COM, SetOtherModeParameters) #endif void *pCallbackArgs; /* Pointer for passing parameters to VDIFCallback() */ /************************************************************************** * * void SetOtherModeParameters( PixelDepth, Pitch, Multiplier, pmode) * WORD Multiplier; What needs to be done to the pixel clock * WORD PixelDepth; Number of bits per pixel * WORD Pitch; Screen pitch to use * struct st_mode_table *pmode; Pointer to structure that must contain * at least the member ClockFreq * * * DESCRIPTION: * Sets parameters PixelDepth, Pitch and adjusts ClockFreq * * RETURN VALUE: * None * * GLOBALS CHANGED: * None * * CALLED BY: * SetFixedModes and VDIFCallback * * AUTHOR: * Miroslav Grubac * * CHANGE HISTORY: * * TEST HISTORY: * ***************************************************************************/ void SetOtherModeParameters( WORD PixelDepth, WORD Pitch, WORD Multiplier, struct st_mode_table *pmode) { pmode->m_pixel_depth = (UCHAR) PixelDepth; pmode->m_screen_pitch = Pitch; /* * Take care of any pixel clock multiplication that is needed. */ switch(Multiplier) { case CLOCK_TRIPLE: pmode->ClockFreq *= 3; break; case CLOCK_DOUBLE: pmode->ClockFreq *= 2; break; case CLOCK_THREE_HALVES: pmode->ClockFreq *= 3; pmode->ClockFreq >>= 1; break; case CLOCK_SINGLE: default: break; } } /* SetOtherModeParameters() */