EdmaMgr : Fix logic in Large xfer APIs to detect when chaining is necessary. 3.30 fc-3.30-next 3.30.01.08
authorJacob Stiffler <j-stiffler@ti.com>
Tue, 19 Aug 2014 18:28:24 +0000 (14:28 -0400)
committerChris Ring <cring@ti.com>
Tue, 19 Aug 2014 20:53:09 +0000 (13:53 -0700)
* Previous logic attempted to simplify detection using bit-wise logic on the
pitch size, but was incorrect due wrong assumptions on the size of integers.
* New log explicitly check whether or not the pitch size is on the interval
[-32768,32767].

packages/ti/sdo/fc/edmamgr/edmamgr_xfer.h

index c57459fe0cd27c1892dfe9f3b8637df567e7e7bd..ae1b6559943734a60f779f162d5bb54d17a1d8a6 100644 (file)
@@ -734,7 +734,7 @@ int32_t EdmaMgr_copy1D2DLarge
   /* Setting up the parameters for the transfer */
   memset(&p, 0, sizeof(ECPY_Params));
 
-  if ( (pitch & (~0xFFFF)) == 0 ) {
+  if ( (pitch < 32768) && (pitch >= -32768) ) {
     /* If pitch fits in HW reg, fall back on basic 1D2D transfer */
     p.transferType = ECPY_1D2D;
     p.numFrames    = 1;
@@ -915,7 +915,7 @@ int32_t EdmaMgr_copy2D1DLarge
   /* Setting up the parameters for the first transfer (data grp 1) */
   memset(&p, 0, sizeof(ECPY_Params));
 
-  if ( (pitch & (~0xFFFF)) == 0 ) {
+  if ( (pitch < 32768) && (pitch >= -32768) ) {
     /* If pitch fits in HW reg, fall back on basic 1D2D transfer */
     p.transferType = ECPY_2D1D;
     p.numFrames    = 1;