Skip to content

Commit 6516169

Browse files
ptalari27broonie
authored andcommitted
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: Praveen Talari <praveen.talari@oss.qualcomm.com> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Link: https://patch.msgid.link/20260204162854.1206323-5-praveen.talari@oss.qualcomm.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 9934383 commit 6516169

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

drivers/spi/spi-geni-qcom.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,6 +1003,17 @@ static irqreturn_t geni_spi_isr(int irq, void *data)
10031003
return IRQ_HANDLED;
10041004
}
10051005

1006+
static int spi_geni_target_abort(struct spi_controller *spi)
1007+
{
1008+
if (!spi->cur_msg)
1009+
return 0;
1010+
1011+
handle_se_timeout(spi);
1012+
spi_finalize_current_transfer(spi);
1013+
1014+
return 0;
1015+
}
1016+
10061017
static int spi_geni_probe(struct platform_device *pdev)
10071018
{
10081019
int ret, irq;
@@ -1076,6 +1087,9 @@ static int spi_geni_probe(struct platform_device *pdev)
10761087
init_completion(&mas->rx_reset_done);
10771088
spin_lock_init(&mas->lock);
10781089

1090+
if (spi->target)
1091+
spi->target_abort = spi_geni_target_abort;
1092+
10791093
ret = geni_icc_get(&mas->se, NULL);
10801094
if (ret)
10811095
return ret;

0 commit comments

Comments
 (0)