diff options
author | Till Straumann <strauman@slac.stanford.edu> | 2006-12-13 20:04:05 +0000 |
---|---|---|
committer | Till Straumann <strauman@slac.stanford.edu> | 2006-12-13 20:04:05 +0000 |
commit | afd4c7bbff2487a3d40121e4c22e53db6fcddeb4 (patch) | |
tree | 42f014087181ea3a1c5086353a22480737b76f3b /c/src/lib/libbsp/shared/vmeUniverse/vme_am_defs.h | |
parent | 2006-12-13 Joel Sherrill <joel@OARcorp.com> (diff) | |
download | rtems-afd4c7bbff2487a3d40121e4c22e53db6fcddeb4.tar.bz2 |
* vmeUniverse/vme_am_defs.h: Added address modifiers for 2eVME. Added
flags for 2eSST and DBW16.
* vmeUniverse/vmeUniverse.h: Removed AM definitions and include vme_am_defs.h
instead. Declare new routine vmeUniverseMapCRG(). Export 'irq manager' API
only if __INSIDE_RTEMS_BSP__ defined. Renamed 'shared' argument to
vmeUniverseInstallIrqMgrAlt() to 'flags' since now more options are available.
Added new flag to install 'posted-write' workaround.
* vmeUniverse/vmeUniverse.c: Allow BSP to override BSP_PCI2LOCAL_ADDR()
macro. Data width of outbound port can now be restricted to 16-bit
(if new DBW16 flag set in address modifier). Added vmeUniverseMapCRG()
for mapping local registers onto VME. Interrupt manager now implements
a workaround (enabled at installation time) which flushes the write-fifo
after user ISR returns. This requires the universe's registers to be
accessible from VME (either CSR space or CRG mapped to A16/A24/A32),
though.
* vmeUniverse/vmeTsi148.h: vmeTsi148ClearVMEBusErrors() now returns
the fault address as a 32-bit address (not ulonglong anymore). The
driver only supports 32-bit addresses. Declare new routine vmeTsi148MapCRG().
Export 'irq manager' API only if __INSIDE_RTEMS_BSP__ defined.
Renamed 'shared' argument to vmeTsi148InstallIrqMgrAlt() to 'flags'
to allow more options to be supported. Added comments explaining the
'posted-write' workaround implemented by the interrupt manager.
* vmeUniverse/vmeTsi148.c: Clear 'SYSFAIL' during initialization.
Allow BSP to override BSP_PCI2LOCAL_ADDR() macro. Added support for
2eSST when configuring windows (untested - I have no 2eSST).
Added vmeTsi148MapCRG() for mapping local registers onto VME.
Implemented 'posted-write' workaround for interrupt manager
(consult source for details).
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/shared/vmeUniverse/vme_am_defs.h | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/c/src/lib/libbsp/shared/vmeUniverse/vme_am_defs.h b/c/src/lib/libbsp/shared/vmeUniverse/vme_am_defs.h index c822ae086f..7a45327f62 100644 --- a/c/src/lib/libbsp/shared/vmeUniverse/vme_am_defs.h +++ b/c/src/lib/libbsp/shared/vmeUniverse/vme_am_defs.h @@ -3,6 +3,8 @@ /* vxworks compatible addressing modes */ +/* NOTE: 64-bit *addresses* are not supported [data are]. */ + #ifndef VME_AM_STD_SUP_BLT #define VME_AM_STD_SUP_BLT 0x3f #endif @@ -63,6 +65,12 @@ #ifndef VME_AM_EXT_USR_MBLT #define VME_AM_EXT_USR_MBLT 0x08 #endif +#ifndef VME_AM_2eVME_6U +#define VME_AM_2eVME_6U 0x20 +#endif +#ifndef VME_AM_2eVME_3U +#define VME_AM_2eVME_3U 0x21 +#endif #ifndef VME_AM_CSR #define VME_AM_CSR 0x2f #endif @@ -99,8 +107,30 @@ #define VME_AM_IS_MEMORY (1<<8) #endif -/* Flags 1<<11 .. 1<<8 are reserved - * Flags 1<<12 .. 1<<31 are for driver specific options +/* I don't know AMs for 2eSST so we use some extra bits; + * HOWEVER: these are just qualifiers to the VME_AM_2eVME_xx modes + * i.e., if you want 2eSST you must also select 2eVME... + */ + +/* 2eSST broadcast; you still need to set one of the speed bits */ +#define VME_AM_2eSST_BCST (1<<9) +/* Low speed (driver specific) */ +#define VME_AM_2eSST_LO (1<<10) +/* Mid speed (driver specific) */ +#define VME_AM_2eSST_MID (2<<10) +/* High speed (driver specific) */ +#define VME_AM_2eSST_HI (3<<10) + +#define VME_AM_IS_2eSST(am) ((am) & (3<<10)) + +/* Use 16-bit transfers for coupled- or BLT cycles + * (MBLT, 2exxx are probably always 64-bit) + */ +#define VME_MODE_DBW16 (1<<12) + +/* Unused Flags 1<<12 .. 1<<23 are reserved + * Flags 1<<24 .. 1<<31 are for driver specific options */ + #endif |