Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:53

0001 /**
0002  *  @file
0003  *
0004  *  @ingroup shared_vme
0005  *
0006  *  @brief SVGM et al. BSP's VME support
0007  */
0008 
0009 #ifndef RTEMS_BSP_VME_API_H
0010 #define RTEMS_BSP_VME_API_H
0011 
0012 /*
0013  * Authorship
0014  * ----------
0015  * This software was created by
0016  *     Till Straumann <strauman@slac.stanford.edu>, 2002,
0017  *     Stanford Linear Accelerator Center, Stanford University.
0018  *
0019  * Acknowledgement of sponsorship
0020  * ------------------------------
0021  * This software was produced by
0022  *     the Stanford Linear Accelerator Center, Stanford University,
0023  *     under Contract DE-AC03-76SFO0515 with the Department of Energy.
0024  *
0025  * Government disclaimer of liability
0026  * ----------------------------------
0027  * Neither the United States nor the United States Department of Energy,
0028  * nor any of their employees, makes any warranty, express or implied, or
0029  * assumes any legal liability or responsibility for the accuracy,
0030  * completeness, or usefulness of any data, apparatus, product, or process
0031  * disclosed, or represents that its use would not infringe privately owned
0032  * rights.
0033  *
0034  * Stanford disclaimer of liability
0035  * --------------------------------
0036  * Stanford University makes no representations or warranties, express or
0037  * implied, nor assumes any liability for the use of this software.
0038  *
0039  * Stanford disclaimer of copyright
0040  * --------------------------------
0041  * Stanford University, owner of the copyright, hereby disclaims its
0042  * copyright and all other rights in this software.  Hence, anyone may
0043  * freely use it for any purpose without restriction.
0044  *
0045  * Maintenance of notices
0046  * ----------------------
0047  * In the interest of clarity regarding the origin and status of this
0048  * SLAC software, this and all the preceding Stanford University notices
0049  * are to remain affixed to any copy or derivative of this software made
0050  * or distributed by the recipient and are to be affixed to any copy of
0051  * software made or distributed by the recipient that contains a copy or
0052  * derivative of this software.
0053  *
0054  * ------------------ SLAC Software Notices, Set 4 OTT.002a, 2004 FEB 03
0055  */
0056 
0057 #include <stdio.h>
0058 
0059 /* address modifiers & friends */
0060 #include <bsp/vme_am_defs.h>
0061 
0062 #ifdef __cplusplus
0063 extern "C" {
0064 #endif
0065 
0066 /**
0067  *  @defgroup shared_vme VME related declarations
0068  *
0069  *  @ingroup shared_vmeuniverse
0070  *
0071  *  @brief BSP-specific configuration routine; sets up
0072  * VME windows and installs the VME interrupt manager.
0073  */
0074 
0075 void BSP_vme_config(void);
0076 
0077 /* translate through host bridge and vme master window of vme bridge */
0078 int
0079 BSP_vme2local_adrs(unsigned long am, unsigned long vmeaddr, unsigned long *plocaladdr);
0080 
0081 /* how a CPU address is mapped to the VME bus (if at all) */
0082 int
0083 BSP_local2vme_adrs(unsigned long am, unsigned long localaddr, unsigned long *pvmeaddr);
0084 
0085 /* interrupt handlers and levels */
0086 typedef void (*BSP_VME_ISR_t)(void *usrArg, unsigned long vector);
0087 
0088 int
0089 BSP_installVME_isr(unsigned long vector, BSP_VME_ISR_t handler, void *arg);
0090 int
0091 BSP_removeVME_isr(unsigned long vector, BSP_VME_ISR_t handler, void *arg);
0092 
0093 /* retrieve the currently installed ISR for a given vector */
0094 BSP_VME_ISR_t
0095 BSP_getVME_isr(unsigned long vector, void **parg);
0096 
0097 int
0098 BSP_enableVME_int_lvl(unsigned int level);
0099 
0100 int
0101 BSP_disableVME_int_lvl(unsigned int level);
0102 
0103 int
0104 BSP_VMEOutboundPortCfg(
0105     unsigned long port,
0106     unsigned long address_space,
0107     unsigned long vme_address,
0108     unsigned long pci_address,
0109     unsigned long size);
0110 
0111 int
0112 BSP_VMEInboundPortCfg(
0113     unsigned long port,
0114     unsigned long address_space,
0115     unsigned long vme_address,
0116     unsigned long pci_address,
0117     unsigned long size);
0118 
0119 void
0120 BSP_VMEOutboundPortsShow(FILE *f);
0121 
0122 void
0123 BSP_VMEInboundPortsShow(FILE *f);
0124 
0125 /* Assert VME SYSRESET */
0126 void
0127 BSP_VMEResetBus(void);
0128 
0129 #ifdef __cplusplus
0130 }
0131 #endif
0132 
0133 #endif