Subversion Repositories f9daq

Rev

Blame | Last modification | View Log | RSS feed

#ifndef __PCIIF_H__
//-----------------------------------------------------------------------
// Address definitions of PCI-VME interface designed by A.Rausch        
//                                                                      
// (c) 1999-2004 ARW Elektronik
//
// this source code is published under GPL (Open Source). You can use, redistrubute and
// modify it unless this header   is not modified or deleted. No warranty is given that
// this software will work like expected.
// This product is not authorized for use as critical component in life support systems
// wihout the express written approval of ARW Elektronik Germany.
//
// Please announce changes and hints to ARW Elektronik
//
// $Log: pciif.h,v $
// Revision 1.3  2004/07/24 07:07:26  klaus
// Update copyright to 2004
//
// Revision 1.2  2003/11/15 19:12:26  klaus
// Update copyright to 2003
//
// Revision 1.1.1.1  2003/11/14 23:16:33  klaus
// First put into repository
//
// Revision 1.3  2002/10/27 16:17:48  klaus
// Typing bug fixed caused at log addition
//
// Revision 1.2  2002/10/27 16:11:02  klaus
// Added CVS log into header
//
// what                                              who   when          
// first parts                                       AR    24.11.1997    
// converted to new address layout                   AR    18.05.1998    
// next address layout conversion                    AR    27.06.1998    
// no pointer usage at definitions                   AR    20.02.1999    
// first release                                     AR    20.02.1999    
// corrected global and local reset                  AR    18.04.1999
//

#include <vic.h>

/*-----------------------------------------------------------------------*/
/* all addresses relative to PCI-Window                                  */

/*------------- addresses of vmemm local devices ------------------------*/
#define CSR     (DWORD)0x0000 /* control status register                 */
#define VICRES  (DWORD)0x0004 /* VIC reset register / interrupt status   */
#define ADRHL   (DWORD)0x0008 /* AdrH and AdrL as long                   */
#define VICBASE (DWORD)0x0400 /* base of VIC68A                          */
#define VECBASE (DWORD)0x0800 /* base of vector registers                */
#define VMEBASE (DWORD)0x1000 /* base of 4k VME-BUS window               */

/*---------- parts of addresses derived from above ----------------------*/
#define IVEC1   (DWORD)(VECBASE + 3)    /* IACK 1 vector                 */
#define IVEC2   (DWORD)(VECBASE + 5)    /* IACK 2 vector                 */
#define IVEC3   (DWORD)(VECBASE + 7)    /* IACK 3 vector                 */
#define IVEC4   (DWORD)(VECBASE + 9)    /* IACK 4 vector                 */
#define IVEC5   (DWORD)(VECBASE + b)    /* IACK 5 vector                 */
#define IVEC6   (DWORD)(VECBASE + d)    /* IACK 6 vector                 */
#define IVEC7   (DWORD)(VECBASE + f)    /* IACK 7 vector                 */

#define ADRL    (DWORD)ADRHL            /* word access addr. VME-addr    */
#define ADRH    (DWORD)(ADRHL + 2)

/*--------- address mask ------------------------------------------------*/
#define VME_ADR_MASK (DWORD)0x00000FFF  /* masks lower part of address   */

/*--------- some masks in CSR -------------------------------------------*/
#define FLAG_RMC     (WORD)0x0001       /* set = next cycle is RMC       */
#define FLAG_BLT     (WORD)0x0002       /* don't use it. must be 0       */
#define FLAG_WORD    (WORD)0x0004       /* it is a word wide interface   */
#define FLAG_SYSCTL  (WORD)0x0008       /* the system contrl. is enabled */
#define MASK_MODNR   (WORD)0x00F0       /* the mask to get the module No */
#define MASK_FPGA    (WORD)0x0F00       /* the mask to get the FPGA rev. */
#define MASK_MODTYPE (WORD)0xF000       /* the mask to get type of module*/

/*---------- action commands in VICRES -----------------------------------*/
#define GLOBAL_RESET (WORD)0x000A       /* write this to reset the intrfc */
#define LOCAL_RESET  (WORD)0x0005       /* generate a local reset         */

/*---------- release und inhibit into 0x50 of PLX ------------------------*/
#define RELEASE_VMEMM (WORD)0x4180      /* write this to release access ..*/
#define INHIBIT_VMEMM (WORD)0x4080      /* write this to inhibit access ..*/
#define ENABLE_PCIADA_IRQS  (WORD)0x0049 /* enable PCIADA IRQs            */
#define DISABLE_PCIADA_IRQS (WORD)0x0009 /* disable PCIADA IRQs           */

#define __PCIIF_H__
#endif