summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Murthy <arun.murthy@stericsson.com>2012-02-08 19:05:44 +0530
committerPhilippe Langlais <philippe.langlais@linaro.org>2012-03-19 09:02:50 +0100
commit00441d0a17594a041cb832b7c725162b7867216f (patch)
tree2ec920d71b0bf8eee20c90669a67a9dab23965b0
parentd8cc656b33fbb18fec4787ed9d0d0dea057c7717 (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;
}