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 <afd@ti.com> Acked-by: Nishanth Menon <nm@ti.com>
This commit is contained in:
parent
2004552e62
commit
73522f0087
|
@ -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;
|
struct k3_sec_proxy_msg *msg = &xfer->tx_message;
|
||||||
int ret;
|
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 */
|
/* Send the message */
|
||||||
ret = k3_sec_proxy_send(SP_HIGH_PRIORITY, msg);
|
ret = k3_sec_proxy_send(SP_HIGH_PRIORITY, msg);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -165,6 +172,7 @@ static inline int ti_sci_do_xfer(struct ti_sci_xfer *xfer)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Get the response */
|
||||||
ret = ti_sci_get_response(xfer, SP_RESPONSE);
|
ret = ti_sci_get_response(xfer, SP_RESPONSE);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
ERROR("Failed to get response (%d)\n", ret);
|
ERROR("Failed to get response (%d)\n", ret);
|
||||||
|
|
Loading…
Reference in New Issue