aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/mediatek/patches-5.10/330-mtk-snand-bmt-support.patch
blob: 318c8b2873602e7c0024c1d4968d124095bbeb64 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
--- 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>
 
@@ -612,6 +613,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");
@@ -623,6 +626,7 @@ static int mtk_snand_probe(struct platfo
 	return 0;
 
 errout4:
+	mtk_bmt_detach(mtd);
 	devm_kfree(msm->pdev.dev, msm->page_cache);
 
 errout3:
@@ -650,6 +654,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)