Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d5f304ac authored by Rafał Miłecki's avatar Rafał Miłecki Committed by Boris Brezillon
Browse files

mtd: nand: atmel: set ECC algorithm explicitly



This is part of process deprecating NAND_ECC_SOFT_BCH (and switching to
enum nand_ecc_algo).

Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
Signed-off-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
parent 867f9873
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -1212,6 +1212,7 @@ static int atmel_pmecc_nand_init_params(struct platform_device *pdev,
		dev_warn(host->dev,
			"Can't get I/O resource regs for PMECC controller, rolling back on software ECC\n");
		nand_chip->ecc.mode = NAND_ECC_SOFT;
		nand_chip->ecc.algo = NAND_ECC_HAMMING;
		return 0;
	}

@@ -1295,6 +1296,7 @@ static int atmel_pmecc_nand_init_params(struct platform_device *pdev,
		/* page size not handled by HW ECC */
		/* switching back to soft ECC */
		nand_chip->ecc.mode = NAND_ECC_SOFT;
		nand_chip->ecc.algo = NAND_ECC_HAMMING;
		return 0;
	}

@@ -1613,6 +1615,7 @@ static int atmel_of_init_port(struct atmel_nand_host *host,
	 * even if the nand-ecc-mode property is not defined.
	 */
	host->nand_chip.ecc.mode = NAND_ECC_SOFT;
	host->nand_chip.ecc.algo = NAND_ECC_HAMMING;

	return 0;
}
@@ -1629,6 +1632,7 @@ static int atmel_hw_nand_init_params(struct platform_device *pdev,
		dev_err(host->dev,
			"Can't get I/O resource regs, use software ECC\n");
		nand_chip->ecc.mode = NAND_ECC_SOFT;
		nand_chip->ecc.algo = NAND_ECC_HAMMING;
		return 0;
	}

@@ -1661,6 +1665,7 @@ static int atmel_hw_nand_init_params(struct platform_device *pdev,
		/* page size not handled by HW ECC */
		/* switching back to soft ECC */
		nand_chip->ecc.mode = NAND_ECC_SOFT;
		nand_chip->ecc.algo = NAND_ECC_HAMMING;
		return 0;
	}

@@ -2160,6 +2165,14 @@ static int atmel_nand_probe(struct platform_device *pdev)
		       sizeof(struct atmel_nand_data));
		nand_chip->ecc.mode = host->board.ecc_mode;

		/*
		 * When using software ECC every supported avr32 board means
		 * Hamming algorithm. If that ever changes we'll need to add
		 * ecc_algo field to the struct atmel_nand_data.
		 */
		if (nand_chip->ecc.mode == NAND_ECC_SOFT)
			nand_chip->ecc.algo = NAND_ECC_HAMMING;

		/* 16-bit bus width */
		if (host->board.bus_width_16)
			nand_chip->options |= NAND_BUSWIDTH_16;