summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Murthy <arun.murthy@stericsson.com>2012-02-08 19:05:44 +0530
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-06-05 10:40:31 +0200
commit9b09ef653efdbba08391af1858c1597781c16c48 (patch)
tree16bf95fa39205afc99347fb95397e7d30d68816f
parente8c5dd0c5b4ea6ffb4797d993c47c55b1ff13efe (diff)
u8500-shrm: before accessing GOP check modem reset
Apart from checking the modem reset based on the shrm protocol internal state machine, PRCMU registers can also be checked to know the modem reset status before accessing the GOP registers. ST-Ericsson Linux next: NA ST-Ericsson ID: 413508 ST-Ericsson FOSS-OUT ID: Trivial Change-Id: I3fefea9d001ccd7a0478967706fec083085ac7f3 Signed-off-by: Arun Murthy <arun.murthy@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/48278 Reviewed-by: QABUILD Reviewed-by: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com>
-rw-r--r--drivers/modem/shrm/shrm_protocol.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/modem/shrm/shrm_protocol.c b/drivers/modem/shrm/shrm_protocol.c
index fa4251cdbbd..df277dc9dfd 100644
--- a/drivers/modem/shrm/shrm_protocol.c
+++ b/drivers/modem/shrm/shrm_protocol.c
@@ -38,9 +38,12 @@
#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_MOD_PURESET BIT(0)
+#define PRCM_MOD_SW_RESET BIT(1)
-#define PRCM_HOSTACCESS_REQ 0x334
-#define PRCM_MOD_AWAKE_STATUS 0x4A0
+#define PRCM_HOSTACCESS_REQ 0x334
+#define PRCM_MOD_AWAKE_STATUS 0x4A0
+#define PRCM_MOD_RESETN_VAL 0x204
static u8 boot_state = BOOT_INIT;
static u8 recieve_common_msg[8*1024];
@@ -132,13 +135,16 @@ static u32 get_host_accessport_val(void)
{
u32 prcm_hostaccess;
u32 status;
+ u32 reset_stats;
status = (prcmu_read(PRCM_MOD_AWAKE_STATUS) & 0x03);
+ reset_stats = (prcmu_read(PRCM_MOD_RESETN_VAL) & 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));
+ PRCM_MOD_AWAKE_STATUS_PRCM_MOD_COREPD_AWAKE)) &&
+ (reset_stats == (PRCM_MOD_SW_RESET | PRCM_MOD_PURESET)));
return prcm_hostaccess;
}