diff options
Diffstat (limited to 'drivers/modem/shrm/shrm_protocol.c')
-rw-r--r-- | drivers/modem/shrm/shrm_protocol.c | 10 |
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; } |