vmeUniverse.c patch for DMA MBLT via UniverseII
Kate Feng
feng at bnl.gov
Wed Jun 6 17:48:06 UTC 2012
Hi,
I thought that the "64-bit PCI bus transactions" bit should be enabled
for the DMA MBLT transfer via UniverseII, using a patch such as the one
suggested below. Is there any reason for not to enable that bit ? Please
advise.
Regards,
Kate
----------------------------------------------------------------------------------------------------
diff -Naur
rtems-4.10/c/src/lib/libbsp/shared/vmeUniverse/vmeUniverse.c.orig
rtems-4.10/c/src/lib/libbsp/shared/vmeUniverse/vmeUniverse.c
--- rtems-4.10/c/src/lib/libbsp/shared/vmeUniverse/vmeUniverse.c.orig
2011-05-24 14:03:41.000000000 -0400
+++ rtems-4.10/c/src/lib/libbsp/shared/vmeUniverse/vmeUniverse.c
2012-06-06 13:11:14.019038585 -0400
@@ -1295,9 +1295,9 @@
#include "bspVmeDmaListP.h"
#include <bsp/vmeUniverseDMA.h>
-/* Filter valid bits of DCTL */
+/* Filter valid bits of DCTL , Kate Feng 5/2012: added the
UNIV_DCTL_LD64EN */
#define DCTL_MODE_MASK \
- ( UNIV_DCTL_VDW_MSK | UNIV_DCTL_VAS_MSK | UNIV_DCTL_PGM |
UNIV_DCTL_SUPER | UNIV_DCTL_VCT )
+ ( UNIV_DCTL_VDW_MSK | UNIV_DCTL_VAS_MSK | UNIV_DCTL_PGM |
UNIV_DCTL_SUPER | UNIV_DCTL_VCT | UNIV_DCTL_LD64EN )
static uint32_t
xfer_mode2dctl(uint32_t xfer_mode)
@@ -1342,11 +1342,15 @@
* if data width is 64-bit so we go back to 32-bit
* if they didn't explicitely ask for MBLT cycles
*/
- if ( (xfer_mode & 0xb) != 8 /* MBLT */
- && ( UNIV_DCTL_VDW_64 == (dctl & UNIV_DCTL_VDW_MSK) ) ) {
+ if ( UNIV_DCTL_VDW_64 == (dctl & UNIV_DCTL_VDW_MSK) ) {
+ if ( (xfer_mode & 0xb) != 8 ) /* not MBLT */ {
dctl &= ~UNIV_DCTL_VDW_MSK;
dctl |= UNIV_DCTL_VDW_32;
- }
+ }
+ else /* MBLT */
+ /* Kate Feng 5/2012: enable 64-bit PCI bus
transactions */
+ dctl |= UNIV_DCTL_LD64EN;
+ }
break;
case UNIV_DCTL_VAS_A16:
More information about the users
mailing list