summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Murthy <arun.murthy@stericsson.com>2012-02-08 18:57:14 +0530
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-06-05 10:40:30 +0200
commite8c5dd0c5b4ea6ffb4797d993c47c55b1ff13efe (patch)
treefa1a38d9092fd4438121e8468dee446f44785697
parent29b8dd738210a2bcf1ddc5f4c07c71323a375af0 (diff)
u8500-shrm: check for modem awake along with hostaccess_port
Before writing to GOP we mush ensure that hostaccess_port is high. Along with that its better to check the modem awake status, to confirm that modem is awake and we dont end up with a freeze on writing to GOP. ST-Ericsson Linux next: NA ST-Ericsson ID: 413508 ST-Ericsson FOSS-OUT ID: Trivial Change-Id: Ia1bfa7adb8b472745f53ddd03878f25b3ed62375 Signed-off-by: Arun Murthy <arun.murthy@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/48277 Reviewed-by: QABUILD Reviewed-by: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com>
-rw-r--r--drivers/modem/shrm/shrm_protocol.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/modem/shrm/shrm_protocol.c b/drivers/modem/shrm/shrm_protocol.c
index e3daeda4348..fa4251cdbbd 100644
--- a/drivers/modem/shrm/shrm_protocol.c
+++ b/drivers/modem/shrm/shrm_protocol.c
@@ -35,8 +35,12 @@
#define MAX_PAYLOAD 1024
#define MOD_STUCK_TIMEOUT 6
#define FIFO_FULL_TIMEOUT 1
+#define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_COREPD_AWAKE BIT(0)
+#define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_AAPD_AWAKE BIT(1)
+#define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_VMODEM_OFF_ISO BIT(2)
#define PRCM_HOSTACCESS_REQ 0x334
+#define PRCM_MOD_AWAKE_STATUS 0x4A0
static u8 boot_state = BOOT_INIT;
static u8 recieve_common_msg[8*1024];
@@ -127,10 +131,14 @@ static void shm_ac_wake_req_work(struct kthread_work *work)
static u32 get_host_accessport_val(void)
{
u32 prcm_hostaccess;
+ u32 status;
+ status = (prcmu_read(PRCM_MOD_AWAKE_STATUS) & 0x03);
prcm_hostaccess = prcmu_read(PRCM_HOSTACCESS_REQ);
wmb();
- prcm_hostaccess = prcm_hostaccess & 0x01;
+ prcm_hostaccess = (prcm_hostaccess & 0x01) &&
+ (status == (PRCM_MOD_AWAKE_STATUS_PRCM_MOD_AAPD_AWAKE |
+ PRCM_MOD_AWAKE_STATUS_PRCM_MOD_COREPD_AWAKE));
return prcm_hostaccess;
}