mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
spi: core: Abort active target transfer on controller suspend
When an SPI controller operating in target mode has a transfer in progress at the time of system suspend, the suspend path proceeds without aborting the ongoing transfer. This can leave the hardware in an inconsistent state, potentially causing the system to hang or fail to resume cleanly. Fix this by invoking the controller's target_abort callback from spi_controller_suspend() when the controller is in target mode and the callback is registered. This ensures any active target transfer is cleanly terminated before the controller is suspended. Signed-off-by: Praveen Talari <praveen.talari@oss.qualcomm.com> Link: https://patch.msgid.link/20260625-abort_active_transfer_duirng_s2r-v2-1-1d6f724406b6@oss.qualcomm.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
6dbaa4d288
commit
c1bab046d4
|
|
@ -3671,6 +3671,9 @@ int spi_controller_suspend(struct spi_controller *ctlr)
|
|||
{
|
||||
int ret = 0;
|
||||
|
||||
if (ctlr->cur_msg && spi_controller_is_target(ctlr) && ctlr->target_abort)
|
||||
ctlr->target_abort(ctlr);
|
||||
|
||||
/* Basically no-ops for non-queued controllers */
|
||||
if (ctlr->queued) {
|
||||
ret = spi_stop_queue(ctlr);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user