msm_shared: qpic_nand: Add support to reset bam pipes before jumping into kernel.

Change-Id: Ib72ba339f2adb4f53e6a84e41173eb2f4f52d887
diff --git a/platform/msm_shared/bam.c b/platform/msm_shared/bam.c
index 8501fd2..e48254d 100644
--- a/platform/msm_shared/bam.c
+++ b/platform/msm_shared/bam.c
@@ -50,8 +50,8 @@
 }
 
 /* Resets pipe registers and state machines */
-static void bam_pipe_reset(struct bam_instance *bam,
-                              uint8_t pipe_num)
+void bam_pipe_reset(struct bam_instance *bam,
+					uint8_t pipe_num)
 {
 	/* Start sw reset of the pipe to be allocated */
 	writel(1, BAM_P_RSTn(bam->pipe[pipe_num].pipe_num, bam->base));
@@ -163,7 +163,7 @@
 {
 	uint32_t val = 0;
 
-	bam_reset(bam);
+//	bam_reset(bam);
 
 	/* Check for only one pipe's direction.
 	 * The other is assumed to be the opposite system
diff --git a/platform/msm_shared/include/bam.h b/platform/msm_shared/include/bam.h
index 3338bef..d06f7cd 100644
--- a/platform/msm_shared/include/bam.h
+++ b/platform/msm_shared/include/bam.h
@@ -252,5 +252,7 @@
                            uint8_t pipe_num,
                            enum p_int_type interrupt);
 void bam_read_offset_update(struct bam_instance *bam, unsigned int pipe_num);
+void bam_pipe_reset(struct bam_instance *bam,
+					uint8_t pipe_num);
 
 #endif
diff --git a/platform/msm_shared/include/qpic_nand.h b/platform/msm_shared/include/qpic_nand.h
index d3613d3..e64c20b 100644
--- a/platform/msm_shared/include/qpic_nand.h
+++ b/platform/msm_shared/include/qpic_nand.h
@@ -331,6 +331,7 @@
 qpic_nand_init(struct qpic_nand_init_config *config);
 unsigned
 flash_block_size(void);
-
+void
+qpic_nand_uninit();
 
 #endif
diff --git a/platform/msm_shared/qpic_nand.c b/platform/msm_shared/qpic_nand.c
index 8879e03..f359b20 100644
--- a/platform/msm_shared/qpic_nand.c
+++ b/platform/msm_shared/qpic_nand.c
@@ -1238,6 +1238,14 @@
 }
 
 void
+qpic_nand_uninit()
+{
+	bam_pipe_reset(&bam, DATA_PRODUCER_PIPE_INDEX);
+	bam_pipe_reset(&bam, DATA_CONSUMER_PIPE_INDEX);
+	bam_pipe_reset(&bam, CMD_PIPE_INDEX);
+
+}
+void
 flash_set_ptable(struct ptable *new_ptable)
 {
 	ASSERT(flash_ptable == NULL && new_ptable != NULL);