diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/ntos/miniport/trantor/source/cardtmv1.c | |
download | NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2 NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip |
Diffstat (limited to 'private/ntos/miniport/trantor/source/cardtmv1.c')
-rw-r--r-- | private/ntos/miniport/trantor/source/cardtmv1.c | 266 |
1 files changed, 266 insertions, 0 deletions
diff --git a/private/ntos/miniport/trantor/source/cardtmv1.c b/private/ntos/miniport/trantor/source/cardtmv1.c new file mode 100644 index 000000000..152213c2c --- /dev/null +++ b/private/ntos/miniport/trantor/source/cardtmv1.c @@ -0,0 +1,266 @@ +//------------------------------------------------------------------------- +// +// CARDTMV1.C +// +// TMV1 Adapter Specific File +// +// See also cardtxxx.h, cardtxxx.h may redefine some functions with #defines. +// +// Revisions: +// 09-01-92 KJB First. +// 03-26-93 JAP Fixed up typedef and prototype inconsistencies +// 04-05-93 KJB Fixed definition problem for WINNT. +// Involving CardAddressRange... +// 04-22-93 JAP Added AdapterInterrupts[] and CardGetIRQ(). +// 05-05-93 KJB Fixed CardSetInterruptLevel so that it calls +// MV101SetInterruptLevel like it should. +// 05-12-93 JAP Altered CardGetShortName() to return only +// the type of card. +// 05-13-93 KJB Added CardParseCommandString for card specific +// standard string parsing across platforms. +// Changed CardCheckAdapter to accept an +// Initialization info from command line, ie +// force bi-directional ports, etc. +// All functions that used to take an PBASE_REGISTER +// parameter now take PWORKSPACE. CardCheckAdapter +// takes the both the PBASE_REGISTER and the +// PWORKSPACE parameters. Auto Request Sense is +// now supported. +// 05-13-93 KJB Merged Microsoft Bug fixes to card detection. +// 05-14-93 KJB Removed P3CDoIo, it did not work for scatter gather. +// 05-17-93 KJB CardAddressRangeLength now return 0xffff. +// Fixed compiler warnings. +// +//------------------------------------------------------------------------- + + +#include CARDTXXX_H + +#ifdef WINNT +//------------------------------------------------------------------------ +// The address ranges the card will use. These are accessed by trantor.c +// to inform NTOS of the resources we are using. +//------------------------------------------------------------------------ +CONST CardAddressRange cardAddressRange[] = + { + {0x1c00,0x04,FALSE}, // 0x1f88 + {0x3c00,0x04,FALSE}, // 0x3f88 + {0x4000,0x02,FALSE}, // 0x4388 + {0x5c00,0x04,FALSE}, // 0x5f88 + {0x8003,0x01,FALSE}, // 0x838b + {0xbc00,0x01,FALSE} // 0xbf88 + }; +#endif + + +//------------------------------------------------------------------------ +// The following table specifies the possible interrupts that +// can be used by the adapter. A zero entry terminates the search. +//------------------------------------------------------------------------ + +CONST USHORT AdapterInterrupts [] = + {2, 3, 4, 5, 6, 7, 10, 11, 12, 14, 15, 0}; + + +//------------------------------------------------------------------------ +// The following table specifies the ports to be checked when searching for +// an adapter. A zero entry terminates the search. +//------------------------------------------------------------------------ + +CONST ULONG AdapterAddresses[] = + {0x388, 0x384, 0x38C, 0x288, 0x280, 0x284, 0x28C, 0x0}; + + +//----------------------------------------------------------------------- +// +// The following routines are stub routines to provide an entry +// point for the library. They reference the correct routines for +// the appropriate card. Only these routines may be called from outside +// the library. See the rouines they reference for a description of +// the rouines, if the meaning is unclear. +// +//----------------------------------------------------------------------- + +//------------------------------------------------------------------------ +// the maximum transfer size +// by decreasinge this we can get better system performace since +// the data transfer occurs with interrupts disabled, this might be +// decreased for our smaller cards +// Used only by WINNT +//------------------------------------------------------------------------ + +ULONG CardMaxTransferSize (VOID) +{ + return 16*1024L; +} + + +// we use interrupts + +BOOLEAN CardSupportsInterrupts (VOID) +{ + return TRUE; +} + + +// default interrupt number is 10 + +UCHAR CardDefaultInterruptLevel (VOID) +{ + return 15; +} + + +// the following info is for initialization only +// this card is memory mapped + +BOOLEAN CardAddressRangeInIoSpace (VOID) +{ + return TRUE; +} + + +// we use 0x10000 bytes in memory space + +USHORT CardAddressRangeLength (VOID) +{ +// return 0x10000; + return 0xffff; +} + + +// The following is used along with the constant structure in card.c +// to define the precise i/o addresses a card will use + +USHORT CardNumberOfAddressRanges (VOID) +{ + return 0; +} + + +USHORT CardStartCommandInterrupt (PTSRB t) +{ + return (ScsiStartCommandInterrupt (t)); +} + + +USHORT CardFinishCommandInterrupt (PTSRB t) +{ + return (ScsiFinishCommandInterrupt (t)); +} + +USHORT CardDoCommand (PTSRB t) +{ + return (ScsiDoCommand (t)); +} + +// +// BOOLEAN CardCheckAdapter +// +// Initializes a workspace for the adapter at this address. +// Returns TRUE if adapter found. +// +BOOLEAN CardCheckAdapter (PWORKSPACE w, PINIT init) +{ + PADAPTER_INFO g = (PADAPTER_INFO) w; + BOOLEAN rval; + + // + // Initialize workspace and takes card specific parameter information + // to set how the card will be used. For example, command line info + // to force the parallel port to bi-directional or uni-directional modes. + // + + g->BaseIoAddress = init->BaseIoAddress; + + // if no init structure, use all defaults + + if (init) { + g->InterruptLevel = init->InterruptLevel; + } else { + g->InterruptLevel = CardDefaultInterruptLevel(); + } + + rval = MV101CheckAdapter (g); + + // if card found, set interrupt level + + if (rval) { + + MV101SetInterruptLevel (g, g->InterruptLevel); + } + + return rval; +} + +// +// CardParseCommandString(PINIT p, PCHAR str) +// +// Parses the command string to get all card specific parameters. +// Will fill in defaults where no parameters are supplied, or +// if the str pointer is NULL. +// +// Returns false if it could not parse the string given. +// +// Can be used to parse the string piece by piece, by sending +// the same INIT structure each time. Send NULL as the string +// first time to initialize the PINIT structure to the standard defaults. +// +// BaseIoAddress will be set to NULL by default, and the program can +// detect that it has changed during parsing and just search for the +// card as specified by the command line argument if it has changed. If +// it does not change, the program should cycle through all valid addresses. +// +BOOLEAN CardParseCommandString(PINIT init, PCHAR str) +{ + // for now, just fill in some defaults + + init->InterruptLevel = CardDefaultInterruptLevel(); + init->BaseIoAddress = NULL; + + return TRUE; +} + + +VOID CardEnableInterrupt (PADAPTER_INFO g) +{ + MV101EnableInterrupt (g); +} + + +VOID CardDisableInterrupt (PADAPTER_INFO g) +{ + MV101DisableInterrupt (g); +} + + +BOOLEAN CardInterrupt (PADAPTER_INFO g) +{ + return (N5380Interrupt (g)); +} + + +VOID CardResetBus (PADAPTER_INFO g) +{ + N5380ResetBus (g); +} + + +PUCHAR CardGetName (VOID) +{ + return "Media Vision Pro Audio Spectrum"; +} + + +PUCHAR CardGetShortName (VOID) +{ + return "Pro Audio"; +} + + +UCHAR CardGetType (VOID) +{ + return CARDTYPE_TMV1; +} + + |