⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ca91c042.h

📁 linux下vme总线驱动代码
💻 H
字号:
//------------------------------------------------------------------------------  //title: Tundra Universe PCI-VME Kernel Driver//version: Linux 1.1//date: March 1999                                                                //designer: Michael Wyrick                                                      //programmer: Michael Wyrick                                                    //platform: Linux 2.4.x//language: GCC 2.95 and 3.0//module: ca91c042//------------------------------------------------------------------------------  //  Purpose: Provide a Kernel Driver to Linux for the Universe I and II //           Universe model number ca91c042//  Docs:                                  //    This driver supports both the Universe and Universe II chips                                     //------------------------------------------------------------------------------  // RCS:// $Id: ca91c042.h,v 1.4 2001/10/27 03:50:07 jhuggins Exp $// $Log: ca91c042.h,v $// Revision 1.4  2001/10/27 03:50:07  jhuggins// These changes add support for the extra images offered by the Universe II.// CVS : ----------------------------------------------------------------------//// Revision 1.4  2001/10/16 15:16:53  wyrick// Minor Cleanup of Comments//////-----------------------------------------------------------------------------#ifndef _ca91c042_H#define _ca91c042_H//-----------------------------------------------------------------------------// Public Functions//-----------------------------------------------------------------------------// This is the typedef for a VmeIrqHandlertypedef void (*TirqHandler)(int vmeirq, int vector, void *dev_id, struct pt_regs *regs);// This is the typedef for a DMA Transfer Callback functiontypedef void (*TDMAcallback)(int status);//  Returns the PCI baseaddress of the Universe chipchar* Universe_BaseAddr(void);//  Returns the PCI IRQ That the universe is usingint Universe_IRQ(void);char* mapvme(unsigned int pci, unsigned int vme, unsigned int size,              int image,int ctl);void unmapvme(char *ptr, int image);// Interrupt Stuffvoid enable_vmeirq(unsigned int irq);void disable_vmeirq(unsigned int irq);int request_vmeirq(unsigned int irq, TirqHandler);void free_vmeirq(unsigned int irq);                                     // DMA Stuffvoid VME_DMA(void* pci, void* vme, unsigned int count, int ctl, TDMAcallback cback);void VME_DMA_LinkedList(void* CmdPacketList,TDMAcallback cback);// Miscint VME_Bus_Error(void);//-----------------------------------------------------------------------------// //-----------------------------------------------------------------------------#define IRQ_VOWN    0x0001#define IRQ_VIRQ1   0x0002#define IRQ_VIRQ2   0x0004#define IRQ_VIRQ3   0x0008#define IRQ_VIRQ4   0x0010#define IRQ_VIRQ5   0x0020#define IRQ_VIRQ6   0x0040#define IRQ_VIRQ7   0x0080#define IRQ_DMA     0x0100#define IRQ_LERR    0x0200#define IRQ_VERR    0x0400#define IRQ_res     0x0800#define IRQ_IACK    0x1000#define IRQ_SWINT   0x2000#define IRQ_SYSFAIL 0x4000#define IRQ_ACFAIL  0x8000//-----------------------------------------------------------------------------// //-----------------------------------------------------------------------------// See Page 2-77 in the Universe User Manualtypedef struct{   unsigned int dctl;   // DMA Control   unsigned int dtbc;   // Transfer Byte Count   unsigned int dlv;    // PCI Address   unsigned int res1;   // Reserved   unsigned int dva;    // Vme Address   unsigned int res2;   // Reserved   unsigned int dcpp;   // Pointer to Numed Cmd Packet with rPN   unsigned int res3;   // Reserved} TDMA_Cmd_Packet;//-----------------------------------------------------------------------------// Below here is normaly not used by a user module//-----------------------------------------------------------------------------#define  DMATIMEOUT 2*HZ;     // Define for the Universe#define SEEK_SET 0#define SEEK_CUR 1#define CONFIG_REG_SPACE        0xA0000000#define PCI_SIZE_8	    0x0001#define PCI_SIZE_16	    0x0002#define PCI_SIZE_32	    0x0003#define IOCTL_SET_CTL 	0xF001#define IOCTL_SET_BS	  0xF002#define IOCTL_SET_BD	  0xF003#define IOCTL_SET_TO	  0xF004#define IOCTL_PCI_SIZE  0xF005#define IOCTL_SET_MODE 	0xF006#define IOCTL_SET_WINT  0xF007    // Wait for interrupt before read#define PCI_ID          0x0000#define PCI_CSR        	0x0004#define PCI_CLASS	      0x0008#define PCI_MISC0  	    0x000C#define PCI_BS		      0x0010#define PCI_MISC1       0x003C#define LSI0_CTL	      0x0100#define LSI0_BS		      0x0104#define LSI0_BD         0x0108#define LSI0_TO		      0x010C#define LSI1_CTL	      0x0114#define LSI1_BS		      0x0118#define LSI1_BD		      0x011C#define LSI1_TO		      0x0120#define LSI2_CTL	      0x0128#define LSI2_BS		      0x012C#define LSI2_BD		      0x0130#define LSI2_TO		      0x0134#define LSI3_CTL	      0x013C#define LSI3_BS		      0x0140#define LSI3_BD		      0x0144#define LSI3_TO		      0x0148#define LSI4_CTL	      0x01A0#define LSI4_BS		      0x01A4#define LSI4_BD		      0x01A8#define LSI4_TO		      0x01AC#define LSI5_CTL	      0x01B4#define LSI5_BS		      0x01B8#define LSI5_BD		      0x01BC#define LSI5_TO		      0x01C0#define LSI6_CTL	      0x01C8#define LSI6_BS		      0x01CC#define LSI6_BD		      0x01D0#define LSI6_TO		      0x01D4#define LSI7_CTL	      0x01DC#define LSI7_BS		      0x01E0#define LSI7_BD		      0x01E4#define LSI7_TO		      0x01E8#define SCYC_CTL	      0x0170#define SCYC_ADDR    	  0x0174#define SCYC_EN		      0x0178#define SCYC_CMP	      0x017C#define SCYC_SWP	      0x0180#define LMISC		        0x0184#define SLSI		        0x0188#define L_CMDERR	      0x018C#define LAERR		        0x0190#define DCTL		        0x0200#define DTBC		        0x0204#define DLA		          0x0208#define DVA		          0x0210#define DCPP		        0x0218#define DGCS		        0x0220#define D_LLUE		      0x0224#define LINT_EN		      0x0300#define LINT_STAT	      0x0304#define LINT_MAP0	      0x0308#define LINT_MAP1	      0x030C#define VINT_EN		      0x0310#define VINT_STAT	      0x0314#define VINT_MAP0	      0x0318#define VINT_MAP1	      0x031C#define STATID		      0x0320#define V1_STATID	      0x0324#define V2_STATID	      0x0328#define V3_STATID	      0x032C#define V4_STATID	      0x0330#define V5_STATID	      0x0334#define V6_STATID	      0x0338#define V7_STATID	      0x033C#define MAST_CTL	      0x0400#define MISC_CTL	      0x0404#define MISC_STAT	      0x0408#define USER_AM		      0x040C#define VSI0_CTL	      0x0F00#define VSI0_BS		      0x0F04#define VSI0_BD		      0x0F08#define VSI0_TO		      0x0F0C#define VSI1_CTL	      0x0F14#define VSI1_BS		      0x0F18#define VSI1_BD		      0x0F1C#define VSI1_TO		      0x0F20#define VSI2_CTL	      0x0F28#define VSI2_BS		      0x0F2C#define VSI2_BD		      0x0F30#define VSI2_TO		      0x0F34#define VSI3_CTL	      0x0F3C#define VSI3_BS		      0x0F40#define VSI3_BD		      0x0F44#define VSI3_TO		      0x0F48#define VRAI_CTL	      0x0F70#define VRAI_BS		      0x0F74#define VCSR_CTL	      0x0F80#define VCSR_TO		      0x0F84#define V_AMERR		      0x0F88#define VAERR		        0x0F8C#define VSI4_CTL	      0x0F90#define VSI4_BS		      0x0F94#define VSI4_BD		      0x0F98#define VSI4_TO		      0x0F9C#define VSI5_CTL	      0x0FA4#define VSI5_BS		      0x0FA8#define VSI5_BD		      0x0FAC#define VSI5_TO		      0x0FB0                              #define VSI6_CTL	      0x0FB8#define VSI6_BS		      0x0FBC#define VSI6_BD		      0x0FC0#define VSI6_TO		      0x0FC4#define VSI7_CTL	      0x0FCC#define VSI7_BS		      0x0FD0#define VSI7_BD		      0x0FD4#define VSI7_TO		      0x0FD8                              #define VCSR_CLR	      0x0FF4#define VCSR_SET	      0x0FF8#define VCSR_BS		      0x0FFC// DMA General Control/Status Register DGCS (0x220)// 32-24 ||  GO   | STOPR | HALTR |   0   || CHAIN |   0   |   0   |   0   ||// 23-16 ||              VON              ||             VOFF              ||// 15-08 ||  ACT  | STOP  | HALT  |   0   || DONE  | LERR  | VERR  | P_ERR ||// 07-00 ||   0   | INT_S | INT_H |   0   || I_DNE | I_LER | I_VER | I_PER ||// VON - Length Per DMA VMEBus Transfer//  0000 = None//  0001 = 256 Bytes//  0010 = 512 //  0011 = 1024//  0100 = 2048//  0101 = 4096//  0110 = 8192//  0111 = 16384// VOFF - wait between DMA tenures//  0000 = 0    us//  0001 = 16   //  0010 = 32   //  0011 = 64   //  0100 = 128  //  0101 = 256  //  0110 = 512  //  0111 = 1024 #endif

⌨️ 快捷键说明

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