From e8c5dd0c5b4ea6ffb4797d993c47c55b1ff13efe Mon Sep 17 00:00:00 2001 From: Arun Murthy Date: Wed, 8 Feb 2012 18:57:14 +0530 Subject: 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 Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/48277 Reviewed-by: QABUILD Reviewed-by: Srinidhi KASAGAR --- drivers/modem/shrm/shrm_protocol.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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; } -- cgit v1.2.3