[U-Boot] [PATCH] firmware: ti_sci: Fix TISCI mailbox receive timeout handling

Andreas Dannenberg dannenberg at ti.com
Wed Apr 24 19:20:08 UTC 2019

An earlier commit converted the TISCI receive timeouts to be specified
in ms rather than us however it failed to take this change into account
when passing the actual timeout to be used when invoking the mailbox
receive API. This leads to the actual timeout to be 1,000 times shorter
than expected and as a result certain TISCI operations would fail.

Fix the issue by converting the timeout declared in ms to us on the fly
as expected by the respective API.

Fixes: fd6b40b1ba20 ("firmware: ti_sci: Add support for NAVSS resource management")
Signed-off-by: Andreas Dannenberg <dannenberg at ti.com>

Found this issue through bisecting the u-boot tree while maintaining my
yet-to-be-submitted-upstream system firmware loader series current, which
would cause SYSFW PM init to time out and the AM654x board to constantly
reset. The TI "ti-u-boot-2019.01" tree has this change already built-in
(it appears like when "firmware: ti_sci: Add support for NAVSS resource
management" was originally submitted upstream this change was missed).

Regards, Andreas

 drivers/firmware/ti_sci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/firmware/ti_sci.c b/drivers/firmware/ti_sci.c
index d47d22fff3..d72dd73f3b 100644
--- a/drivers/firmware/ti_sci.c
+++ b/drivers/firmware/ti_sci.c
@@ -158,7 +158,7 @@ static inline int ti_sci_get_response(struct ti_sci_info *info,
 	int ret;
 	/* Receive the response */
-	ret = mbox_recv(chan, msg, info->desc->max_rx_timeout_ms);
+	ret = mbox_recv(chan, msg, info->desc->max_rx_timeout_ms * 1000);
 	if (ret) {
 		dev_err(info->dev, "%s: Message receive failed. ret = %d\n",
 			__func__, ret);

More information about the U-Boot mailing list