summaryrefslogtreecommitdiff
path: root/drivers/modem/shrm/shrm_protocol.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/modem/shrm/shrm_protocol.c')
-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;
}