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