source: rtems/c/src/lib/libbsp/powerpc/shared/vme/vme_universe.c @ 93cd2c6

Last change on this file since 93cd2c6 was 93cd2c6, checked in by Till Straumann <strauman@…>, on 12/13/06 at 20:48:37

2006-12-13 Till Straumann <strauman@…>

  • shared/vme/vmeconfig.c, shared/vme/vme_universe.c: use symbolic flag instead of numerical value (vmeUniverseInstallIrqMgrAlt()). Define INSIDE_RTEMS_BSP before including <bsp/vmeUniverse.h>
  • Property mode set to 100644
File size: 2.8 KB
Line 
1/*$Id$*/
2
3#include <rtems.h>
4#include <bsp.h>
5#include <bsp/VME.h>
6#include <bsp/VMEConfig.h>
7#include <bsp/irq.h>
8#define __INSIDE_RTEMS_BSP__
9#include <bsp/vmeUniverse.h>
10
11/* Wrap BSP VME calls around driver calls - we do this so EPICS doesn't have to
12 * include bridge-specific headers. This file provides the necessary glue
13 * to make VME.h and vmeconfig.c independent of the bridge chip.
14 */
15
16/* Author: Till Straumann <strauman@slac.stanford.edu>, 9/2005 */
17
18int
19BSP_vme2local_adrs(unsigned long am, unsigned long vmeaddr, unsigned long *plocaladdr)
20{
21int rval=vmeUniverseXlateAddr(1,0,am,vmeaddr,plocaladdr);
22        *plocaladdr+=PCI_MEM_BASE;
23        return rval;
24}
25
26int
27BSP_local2vme_adrs(unsigned long am, unsigned long localaddr, unsigned long *pvmeaddr)
28{
29        return vmeUniverseXlateAddr(0, 0, am,localaddr+PCI_DRAM_OFFSET,pvmeaddr);
30}
31
32
33int
34BSP_installVME_isr(unsigned long vector, BSP_VME_ISR_t handler, void *arg)
35{
36        return vmeUniverseInstallISR(vector, handler, arg);
37}
38
39int
40BSP_removeVME_isr(unsigned long vector, BSP_VME_ISR_t handler, void *arg)
41{
42        return vmeUniverseRemoveISR(vector, handler, arg);
43}
44
45/* retrieve the currently installed ISR for a given vector */
46BSP_VME_ISR_t
47BSP_getVME_isr(unsigned long vector, void **parg)
48{
49        return vmeUniverseISRGet(vector, parg);
50}
51
52int
53BSP_enableVME_int_lvl(unsigned int level)
54{
55        return vmeUniverseIntEnable(level);
56}
57
58int
59BSP_disableVME_int_lvl(unsigned int level)
60{
61        return vmeUniverseIntDisable(level);
62}
63
64int
65BSP_VMEOutboundPortCfg(
66        unsigned long port,
67        unsigned long address_space,
68        unsigned long vme_address,
69        unsigned long pci_address,
70        unsigned long size)
71{
72        return vmeUniverseMasterPortCfg(port, address_space, vme_address, pci_address, size);
73}
74
75int
76BSP_VMEInboundPortCfg(
77        unsigned long port,
78        unsigned long address_space,
79        unsigned long vme_address,
80        unsigned long pci_address,
81        unsigned long size)
82{
83        return vmeUniverseSlavePortCfg(port, address_space, vme_address, pci_address, size);
84}
85
86void
87BSP_VMEOutboundPortsShow(FILE *f)
88{
89        vmeUniverseMasterPortsShow(f);
90}
91
92void
93BSP_VMEInboundPortsShow(FILE *f)
94{
95        vmeUniverseSlavePortsShow(f);
96}
97
98
99int BSP_VMEInit()
100{
101  if ( vmeUniverseInit() ) {
102        /*  maybe no VME at all - or no universe ... */
103        return -1;
104  }
105  vmeUniverseReset();
106  return 0;
107}
108
109int BSP_VMEIrqMgrInstall()
110{
111#ifndef BSP_VME_UNIVERSE_INSTALL_IRQ_MGR
112  /* No map; use first line only and obtain PIC wire from PCI config */
113  vmeUniverseInstallIrqMgrAlt(
114        VMEUNIVERSE_IRQ_MGR_FLAG_SHARED, /* use shared IRQs */
115        0, -1,  /* Universe pin0 -> PIC line from config space */
116        -1      /* terminate list  */
117  );
118
119#else
120  BSP_VME_UNIVERSE_INSTALL_IRQ_MGR;
121#endif
122#if defined(BSP_PCI_VME_DRIVER_DOES_EOI) && defined(BSP_PIC_DO_EOI)
123  if (vmeUniverse0PciIrqLine<0)
124        BSP_panic("Unable to get universe interrupt line info from PCI config");
125  _BSP_vme_bridge_irq = vmeUniverse0PciIrqLine;
126#endif
127  return 0;
128}
Note: See TracBrowser for help on using the repository browser.