From: Andrew F. Davis Date: Fri, 4 Jan 2019 18:49:16 +0000 (-0600) Subject: ti: k3: drivers: ti_sci: Clear receive queue before transmitting X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=73522f0087cee4d3e290356e4ee6f2de5c516be4;p=project%2Fbcm63xx%2Fatf.git ti: k3: drivers: ti_sci: Clear receive queue before transmitting Send and receive currently must be be serialized, any message already in the receive queue when a new message is to be sent will cause a mismatch with the expected response from this new message. Clear out all messages from the response queue before sending a new request. Signed-off-by: Andrew F. Davis Acked-by: Nishanth Menon --- diff --git a/plat/ti/k3/common/drivers/ti_sci/ti_sci.c b/plat/ti/k3/common/drivers/ti_sci/ti_sci.c index b211bdf6..b4b120e4 100644 --- a/plat/ti/k3/common/drivers/ti_sci/ti_sci.c +++ b/plat/ti/k3/common/drivers/ti_sci/ti_sci.c @@ -158,6 +158,13 @@ static inline int ti_sci_do_xfer(struct ti_sci_xfer *xfer) struct k3_sec_proxy_msg *msg = &xfer->tx_message; int ret; + /* Clear any spurious messages in receive queue */ + ret = k3_sec_proxy_clear_rx_thread(SP_RESPONSE); + if (ret) { + ERROR("Could not clear response queue (%d)\n", ret); + return ret; + } + /* Send the message */ ret = k3_sec_proxy_send(SP_HIGH_PRIORITY, msg); if (ret) { @@ -165,6 +172,7 @@ static inline int ti_sci_do_xfer(struct ti_sci_xfer *xfer) return ret; } + /* Get the response */ ret = ti_sci_get_response(xfer, SP_RESPONSE); if (ret) { ERROR("Failed to get response (%d)\n", ret);