platform-drivers: msm: sps: use spin_lock_irqsave for SPS driver

Use spin_lock_irqsave to prevent the deadlock caused by SoftIRQ

Signed-off-by: Yan He <yanhe@codeaurora.org>
diff --git a/drivers/platform/msm/sps/sps.c b/drivers/platform/msm/sps/sps.c
index 7bf393a..15c8402 100644
--- a/drivers/platform/msm/sps/sps.c
+++ b/drivers/platform/msm/sps/sps.c
@@ -473,7 +473,7 @@
 		return NULL;
 	}
 
-	spin_lock(&bam->connection_lock);
+	spin_lock_irqsave(&bam->connection_lock, bam->irqsave_flags);
 
 	/* Verify client owns this pipe */
 	pipe_index = pipe->pipe_index;
@@ -482,7 +482,8 @@
 		SPS_ERR("Client not owner of BAM 0x%x pipe: %d (max %d)",
 			bam->props.phys_addr, pipe_index,
 			bam->props.num_pipes);
-		spin_unlock(&bam->connection_lock);
+		spin_unlock_irqrestore(&bam->connection_lock,
+						bam->irqsave_flags);
 		return NULL;
 	}
 
@@ -499,7 +500,7 @@
  */
 static inline void sps_bam_unlock(struct sps_bam *bam)
 {
-	spin_unlock(&bam->connection_lock);
+	spin_unlock_irqrestore(&bam->connection_lock, bam->irqsave_flags);
 }
 
 /**
diff --git a/drivers/platform/msm/sps/sps_bam.h b/drivers/platform/msm/sps/sps_bam.h
index 6d8177c..3af891e 100644
--- a/drivers/platform/msm/sps/sps_bam.h
+++ b/drivers/platform/msm/sps/sps_bam.h
@@ -196,6 +196,7 @@
 	u32 version;
 	spinlock_t isr_lock;
 	spinlock_t connection_lock;
+	unsigned long irqsave_flags;
 
 	/* Pipe state */
 	u32 pipe_active_mask;