/***************************************************************************** * Filename: pci6025e.h * * Author: Ziglioli Marco * * Date: 15/03/2001 * * Last update: * * Description: Header file which contains declaration of structure variables * * and routines used to interface with PCI6025E * *----------------------------------------------------------------------------* * Notes: Based on National C Routines * *****************************************************************************/ #ifndef _MY_PCI6025E_ #define _MY_PCI6025E_ #include #include #include #include "regconst.h" //#define __REG_DEBUG__ //enable this in debug mode to see //configuration registers value #define NI_CODE 0x1093 //NI Vendor_ID board code #define Board_Address STC_Base_Address #define BAR0 0xE8000L //New address of MITE #define BAR1 0xEA000L //New address of STC #define INT_NO NIDevice_info[0].InterruptLevel struct { WORD DEVID; BYTE DevFunction; BYTE BusNumber; DWORD BAR0Value; DWORD IntLineRegValue; DWORD RevisionID; BYTE InterruptLevel; } NIDevice_info[10],*IntLinestructptr,*BAR0structptr,*RevID; DWORD STC_Base_Address, MITE_Base_Address; #define set(b,p) b|=(0x01 << p) //set p-th bit of byte b to 1 #define clr(b,p) b&=~(0x01 << p) //set p-th bit of byte b to 0 //scan PCI bus to find board and remap it on memory above 1MB BYTE find_NI_Device(void); BYTE reMap(void); //IO Windowed access board registers void DAQ_STC_Windowed_Mode_Write(WORD reg_addr, WORD value); WORD DAQ_STC_Windowed_Mode_Read(WORD reg_addr); //On board clock BYTE setIntClock(BYTE, BYTE, BYTE); //PFI programming void PFIprogramming(WORD); //Interrupt management void INT_personalize(BYTE); void INT_setup(BYTE, BYTE); //needful macros #define Immediate_Readb(addr) lmempeekb(Board_Address + addr) #define Immediate_Readw(addr) lmempeekw(Board_Address + addr) #define Immediate_Writeb(addr, val) lmempokeb(Board_Address + addr, val) #define Immediate_Writew(addr, val) lmempokew(Board_Address + addr, val) #define VM_disable kern_cli #define VM_enable kern_sti //Software copy of STC general registers static WORD joint_reset, interrupt_a_enable, interrupt_a_ack, interrupt_b_enable, interrupt_b_ack, clock_and_fout; void bitfield(BYTE dim, DWORD value); void TEST_bitfield(BYTE dim, DWORD value, char *str); #endif /*End of File: Pci6025e.h*/