Unverified Commit 20d7b236 authored by Mikhail Kshevetskiy's avatar Mikhail Kshevetskiy Committed by Mark Brown
Browse files

spi: airoha: switch back to non-dma mode in the case of error



Current dirmap code does not switch back to non-dma mode in the case of
error. This is wrong.

This patch fixes dirmap read/write error path.

Fixes: a403997c ("spi: airoha: add SPI-NAND Flash controller driver")
Signed-off-by: default avatarMikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Acked-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Reviewed-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://patch.msgid.link/20251012121707.2296160-6-mikhail.kshevetskiy@iopsys.eu


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent edd2e261
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -698,13 +698,13 @@ static ssize_t airoha_snand_dirmap_read(struct spi_mem_dirmap_desc *desc,

	err = airoha_snand_nfi_config(as_ctrl);
	if (err)
		return err;
		goto error_dma_mode_off;

	dma_addr = dma_map_single(as_ctrl->dev, txrx_buf, SPI_NAND_CACHE_SIZE,
				  DMA_FROM_DEVICE);
	err = dma_mapping_error(as_ctrl->dev, dma_addr);
	if (err)
		return err;
		goto error_dma_mode_off;

	/* set dma addr */
	err = regmap_write(as_ctrl->regmap_nfi, REG_SPI_NFI_STRADDR,
@@ -804,6 +804,8 @@ static ssize_t airoha_snand_dirmap_read(struct spi_mem_dirmap_desc *desc,
error_dma_unmap:
	dma_unmap_single(as_ctrl->dev, dma_addr, SPI_NAND_CACHE_SIZE,
			 DMA_FROM_DEVICE);
error_dma_mode_off:
	airoha_snand_set_mode(as_ctrl, SPI_MODE_MANUAL);
	return err;
}

@@ -936,6 +938,7 @@ static ssize_t airoha_snand_dirmap_write(struct spi_mem_dirmap_desc *desc,
error_dma_unmap:
	dma_unmap_single(as_ctrl->dev, dma_addr, SPI_NAND_CACHE_SIZE,
			 DMA_TO_DEVICE);
	airoha_snand_set_mode(as_ctrl, SPI_MODE_MANUAL);
	return err;
}