mediatek: attach bmt to the new snand driver
Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
This commit is contained in:
		| @@ -805,33 +805,6 @@ | |||||||
| +MODULE_AUTHOR("Xiangsheng Hou <xiangsheng.hou@mediatek.com>, Felix Fietkau <nbd@nbd.name>"); | +MODULE_AUTHOR("Xiangsheng Hou <xiangsheng.hou@mediatek.com>, Felix Fietkau <nbd@nbd.name>"); | ||||||
| +MODULE_DESCRIPTION("Bad Block mapping management v2 for MediaTek NAND Flash Driver"); | +MODULE_DESCRIPTION("Bad Block mapping management v2 for MediaTek NAND Flash Driver"); | ||||||
| + | + | ||||||
| --- a/drivers/mtd/nand/spi/core.c |  | ||||||
| +++ b/drivers/mtd/nand/spi/core.c |  | ||||||
| @@ -19,6 +19,7 @@ |  | ||||||
|  #include <linux/string.h> |  | ||||||
|  #include <linux/spi/spi.h> |  | ||||||
|  #include <linux/spi/spi-mem.h> |  | ||||||
| +#include <linux/mtd/mtk_bmt.h> |  | ||||||
|   |  | ||||||
|  static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val) |  | ||||||
|  { |  | ||||||
| @@ -1140,6 +1141,8 @@ static int spinand_probe(struct spi_mem |  | ||||||
|  	if (ret) |  | ||||||
|  		return ret; |  | ||||||
|   |  | ||||||
| +	mtk_bmt_attach(mtd); |  | ||||||
| + |  | ||||||
|  	ret = mtd_device_register(mtd, NULL, 0); |  | ||||||
|  	if (ret) |  | ||||||
|  		goto err_spinand_cleanup; |  | ||||||
| @@ -1165,6 +1168,7 @@ static int spinand_remove(struct spi_mem |  | ||||||
|  	if (ret) |  | ||||||
|  		return ret; |  | ||||||
|   |  | ||||||
| +	mtk_bmt_detach(mtd); |  | ||||||
|  	spinand_cleanup(spinand); |  | ||||||
|   |  | ||||||
|  	return 0; |  | ||||||
| --- /dev/null | --- /dev/null | ||||||
| +++ b/include/linux/mtd/mtk_bmt.h | +++ b/include/linux/mtd/mtk_bmt.h | ||||||
| @@ -0,0 +1,18 @@ | @@ -0,0 +1,18 @@ | ||||||
| @@ -853,3 +826,39 @@ | |||||||
| +#endif | +#endif | ||||||
| + | + | ||||||
| +#endif | +#endif | ||||||
|  | --- a/drivers/mtd/mtk-snand/mtk-snand-mtd.c | ||||||
|  | +++ b/drivers/mtd/mtk-snand/mtk-snand-mtd.c | ||||||
|  | @@ -16,6 +16,7 @@ | ||||||
|  |  #include <linux/dma-mapping.h> | ||||||
|  |  #include <linux/wait.h> | ||||||
|  |  #include <linux/mtd/mtd.h> | ||||||
|  | +#include <linux/mtd/mtk_bmt.h> | ||||||
|  |  #include <linux/mtd/partitions.h> | ||||||
|  |  #include <linux/of_platform.h> | ||||||
|  |   | ||||||
|  | @@ -608,6 +609,8 @@ static int mtk_snand_probe(struct platfo | ||||||
|  |  	mtd->_block_isbad = mtk_snand_mtd_block_isbad; | ||||||
|  |  	mtd->_block_markbad = mtk_snand_mtd_block_markbad; | ||||||
|  |   | ||||||
|  | +	mtk_bmt_attach(mtd); | ||||||
|  | + | ||||||
|  |  	ret = mtd_device_register(mtd, NULL, 0); | ||||||
|  |  	if (ret) { | ||||||
|  |  		dev_err(msm->pdev.dev, "failed to register mtd partition\n"); | ||||||
|  | @@ -619,6 +622,7 @@ static int mtk_snand_probe(struct platfo | ||||||
|  |  	return 0; | ||||||
|  |   | ||||||
|  |  errout4: | ||||||
|  | +	mtk_bmt_detach(mtd); | ||||||
|  |  	devm_kfree(msm->pdev.dev, msm->page_cache); | ||||||
|  |   | ||||||
|  |  errout3: | ||||||
|  | @@ -646,6 +650,8 @@ static int mtk_snand_remove(struct platf | ||||||
|  |  	if (ret) | ||||||
|  |  		return ret; | ||||||
|  |   | ||||||
|  | +	mtk_bmt_detach(mtd); | ||||||
|  | + | ||||||
|  |  	mtk_snand_cleanup(msm->snf); | ||||||
|  |   | ||||||
|  |  	if (msm->irq >= 0) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Chuanhong Guo
					Chuanhong Guo