diff options
Diffstat (limited to 'drivers/mtd/nand/raw/lpc32xx_mlc.c')
| -rw-r--r-- | drivers/mtd/nand/raw/lpc32xx_mlc.c | 23 | 
1 files changed, 13 insertions, 10 deletions
| diff --git a/drivers/mtd/nand/raw/lpc32xx_mlc.c b/drivers/mtd/nand/raw/lpc32xx_mlc.c index 4940bb2e3c07..9e728c731795 100644 --- a/drivers/mtd/nand/raw/lpc32xx_mlc.c +++ b/drivers/mtd/nand/raw/lpc32xx_mlc.c @@ -648,6 +648,9 @@ static int lpc32xx_nand_attach_chip(struct nand_chip *chip)  	struct lpc32xx_nand_host *host = nand_get_controller_data(chip);  	struct device *dev = &host->pdev->dev; +	if (chip->ecc.engine_type != NAND_ECC_ENGINE_TYPE_ON_HOST) +		return 0; +  	host->dma_buf = devm_kzalloc(dev, mtd->writesize, GFP_KERNEL);  	if (!host->dma_buf)  		return -ENOMEM; @@ -656,8 +659,17 @@ static int lpc32xx_nand_attach_chip(struct nand_chip *chip)  	if (!host->dummy_buf)  		return -ENOMEM; -	chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;  	chip->ecc.size = 512; +	chip->ecc.hwctl = lpc32xx_ecc_enable; +	chip->ecc.read_page_raw = lpc32xx_read_page; +	chip->ecc.read_page = lpc32xx_read_page; +	chip->ecc.write_page_raw = lpc32xx_write_page_lowlevel; +	chip->ecc.write_page = lpc32xx_write_page_lowlevel; +	chip->ecc.write_oob = lpc32xx_write_oob; +	chip->ecc.read_oob = lpc32xx_read_oob; +	chip->ecc.strength = 4; +	chip->ecc.bytes = 10; +  	mtd_set_ooblayout(mtd, &lpc32xx_ooblayout_ops);  	host->mlcsubpages = mtd->writesize / 512; @@ -741,15 +753,6 @@ static int lpc32xx_nand_probe(struct platform_device *pdev)  	platform_set_drvdata(pdev, host);  	/* Initialize function pointers */ -	nand_chip->ecc.hwctl = lpc32xx_ecc_enable; -	nand_chip->ecc.read_page_raw = lpc32xx_read_page; -	nand_chip->ecc.read_page = lpc32xx_read_page; -	nand_chip->ecc.write_page_raw = lpc32xx_write_page_lowlevel; -	nand_chip->ecc.write_page = lpc32xx_write_page_lowlevel; -	nand_chip->ecc.write_oob = lpc32xx_write_oob; -	nand_chip->ecc.read_oob = lpc32xx_read_oob; -	nand_chip->ecc.strength = 4; -	nand_chip->ecc.bytes = 10;  	nand_chip->legacy.waitfunc = lpc32xx_waitfunc;  	nand_chip->options = NAND_NO_SUBPAGE_WRITE; |