spi: spi-qpic-snand: reuse qcom_spi_check_raw_flash_errors()

The qcom_spi_check_raw_flash_errors() function can be used to
verify the flash status after raw operations.

Move the function slightly up in the code and change the
qcom_spi_read_last_cw() function to call it instead of using
an open coded implementation of the same check.

Signed-off-by: Gabor Juhos <j4g8y7@gmail.com>
Link: https://patch.msgid.link/20250514-qpic-snand-error-check-v1-1-c0ebd3aae72a@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Gabor Juhos
2025-05-14 12:16:38 +02:00
committed by Mark Brown
parent 70e5f38e73
commit 4026c6b51c

View File

@@ -524,6 +524,22 @@ static void qcom_spi_config_single_cw_page_read(struct qcom_nand_controller *sna
qcom_read_reg_dma(snandc, NAND_FLASH_STATUS, 1, 0);
}
static int qcom_spi_check_raw_flash_errors(struct qcom_nand_controller *snandc, int cw_cnt)
{
int i;
qcom_nandc_dev_to_mem(snandc, true);
for (i = 0; i < cw_cnt; i++) {
u32 flash = le32_to_cpu(snandc->reg_read_buf[i]);
if (flash & (FS_OP_ERR | FS_MPU_ERR))
return -EIO;
}
return 0;
}
static int qcom_spi_read_last_cw(struct qcom_nand_controller *snandc,
const struct spi_mem_op *op)
{
@@ -569,11 +585,9 @@ static int qcom_spi_read_last_cw(struct qcom_nand_controller *snandc,
return ret;
}
qcom_nandc_dev_to_mem(snandc, true);
u32 flash = le32_to_cpu(snandc->reg_read_buf[0]);
if (flash & (FS_OP_ERR | FS_MPU_ERR))
return -EIO;
ret = qcom_spi_check_raw_flash_errors(snandc, 1);
if (ret)
return ret;
bbpos = mtd->writesize - ecc_cfg->cw_size * (num_cw - 1);
@@ -654,22 +668,6 @@ static int qcom_spi_check_error(struct qcom_nand_controller *snandc, u8 *data_bu
return 0;
}
static int qcom_spi_check_raw_flash_errors(struct qcom_nand_controller *snandc, int cw_cnt)
{
int i;
qcom_nandc_dev_to_mem(snandc, true);
for (i = 0; i < cw_cnt; i++) {
u32 flash = le32_to_cpu(snandc->reg_read_buf[i]);
if (flash & (FS_OP_ERR | FS_MPU_ERR))
return -EIO;
}
return 0;
}
static int qcom_spi_read_cw_raw(struct qcom_nand_controller *snandc, u8 *data_buf,
u8 *oob_buf, int cw)
{