Merge "msm_shared: bam: Add support for cached descriptors."
diff --git a/platform/msm_shared/bam.c b/platform/msm_shared/bam.c
index cb6fc4c..57361c6 100644
--- a/platform/msm_shared/bam.c
+++ b/platform/msm_shared/bam.c
@@ -30,6 +30,7 @@
 #include <reg.h>
 #include <debug.h>
 #include <stdlib.h>
+#include <arch/ops.h>
 #include <platform.h>
 #include <platform/interrupts.h>
 #include <platform/iomap.h>
@@ -450,11 +451,13 @@
 		goto bam_add_one_desc_error;
 	}
 
-	desc->flags = flags;
-	desc->addr = (uint32_t)data_ptr;
-	desc->size = (uint16_t)len;
+	desc->flags    = flags;
+	desc->addr     = (uint32_t)data_ptr;
+	desc->size     = (uint16_t)len;
 	desc->reserved = 0;
 
+	arch_clean_invalidate_cache_range((addr_t) desc, BAM_DESC_SIZE);
+
 	/* Update the FIFO to point to the head */
 	bam->pipe[pipe_num].fifo.current = fifo_getnext(&bam->pipe[pipe_num].fifo, desc);
 
diff --git a/platform/msm_shared/include/bam.h b/platform/msm_shared/include/bam.h
index 84f9fb4..099b1b6 100644
--- a/platform/msm_shared/include/bam.h
+++ b/platform/msm_shared/include/bam.h
@@ -35,6 +35,7 @@
 #define BAM_DESC_SIZE                   8
 #define BAM_CE_SIZE                     16
 #define BAM_MAX_DESC_DATA_LEN           0xFFFF
+#define BAM_NDP_MAX_DESC_DATA_LEN       0x7FFF
 #define BAM_DATA_READ                   0
 #define BAM_DATA_WRITE                  1