Commit 4978bc28 authored by Abdul Halim, Muhammad Hadi Asyrafi's avatar Abdul Halim, Muhammad Hadi Asyrafi
Browse files

intel: mailbox: Use retry count in mailbox poll



Change the main loop inside mailbox poll function from while(1) to a
retry counter named sdm_loop. This is to limit the maximum possible
looping of the function and prevent unexpected behaviour.
Signed-off-by: default avatarAbdul Halim, Muhammad Hadi Asyrafi <muhammad.hadi.asyrafi.abdul.halim@intel.com>
Change-Id: I63afad958fe5f656f6333b60d5a8b4c0ada3b23d
parent d96e7cda
...@@ -90,12 +90,13 @@ int mailbox_poll_response(uint32_t job_id, int urgent, uint32_t *response, ...@@ -90,12 +90,13 @@ int mailbox_poll_response(uint32_t job_id, int urgent, uint32_t *response,
int resp_len) int resp_len)
{ {
uint32_t timeout = 40U; uint32_t timeout = 40U;
uint32_t sdm_loop = 255U;
int rin = 0; int rin = 0;
int rout = 0; int rout = 0;
int resp_data = 0; int resp_data = 0;
int ret_resp_len; int ret_resp_len;
while (1) { while (sdm_loop != 0U) {
do { do {
if (mmio_read_32(MBOX_OFFSET + MBOX_DOORBELL_FROM_SDM) if (mmio_read_32(MBOX_OFFSET + MBOX_DOORBELL_FROM_SDM)
...@@ -106,8 +107,7 @@ int mailbox_poll_response(uint32_t job_id, int urgent, uint32_t *response, ...@@ -106,8 +107,7 @@ int mailbox_poll_response(uint32_t job_id, int urgent, uint32_t *response,
} while (--timeout != 0U); } while (--timeout != 0U);
if (timeout == 0U) { if (timeout == 0U) {
INFO("Timed out waiting for SDM\n"); break;
return MBOX_TIMEOUT;
} }
mmio_write_32(MBOX_OFFSET + MBOX_DOORBELL_FROM_SDM, 0); mmio_write_32(MBOX_OFFSET + MBOX_DOORBELL_FROM_SDM, 0);
...@@ -155,7 +155,12 @@ int mailbox_poll_response(uint32_t job_id, int urgent, uint32_t *response, ...@@ -155,7 +155,12 @@ int mailbox_poll_response(uint32_t job_id, int urgent, uint32_t *response,
return ret_resp_len; return ret_resp_len;
} }
sdm_loop--;
} }
INFO("Timed out waiting for SDM\n");
return MBOX_TIMEOUT;
} }
int iterate_resp(int mbox_resp_len, uint32_t *resp_buf, int resp_len) int iterate_resp(int mbox_resp_len, uint32_t *resp_buf, int resp_len)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment