Unverified Commit 6516169f authored by Praveen Talari's avatar Praveen Talari Committed by Mark Brown
Browse files

spi: geni-qcom: Add target abort support



SPI target mode currently lacks a mechanism to gracefully abort ongoing
transfers when the client or core needs to cancel active transactions.

Implement spi_geni_target_abort() to handle aborting SPI target
operations when the client and core want to cancel ongoing transfers.
This provides a mechanism for graceful termination of active SPI
transactions in target mode.

Signed-off-by: default avatarPraveen Talari <praveen.talari@oss.qualcomm.com>
Reviewed-by: default avatarKonrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://patch.msgid.link/20260204162854.1206323-5-praveen.talari@oss.qualcomm.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 9934383f
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -1003,6 +1003,17 @@ static irqreturn_t geni_spi_isr(int irq, void *data)
	return IRQ_HANDLED;
}

static int spi_geni_target_abort(struct spi_controller *spi)
{
	if (!spi->cur_msg)
		return 0;

	handle_se_timeout(spi);
	spi_finalize_current_transfer(spi);

	return 0;
}

static int spi_geni_probe(struct platform_device *pdev)
{
	int ret, irq;
@@ -1076,6 +1087,9 @@ static int spi_geni_probe(struct platform_device *pdev)
	init_completion(&mas->rx_reset_done);
	spin_lock_init(&mas->lock);

	if (spi->target)
		spi->target_abort = spi_geni_target_abort;

	ret = geni_icc_get(&mas->se, NULL);
	if (ret)
		return ret;