Unverified Commit 4026c6b5 authored by Gabor Juhos's avatar Gabor Juhos Committed by Mark Brown
Browse files

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: default avatarGabor Juhos <j4g8y7@gmail.com>
Link: https://patch.msgid.link/20250514-qpic-snand-error-check-v1-1-c0ebd3aae72a@gmail.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 70e5f38e
Loading
Loading
Loading
Loading
+19 −21
Original line number Diff line number Diff line
@@ -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)
{