ath79: mikrotik: update nand-rb4xx driver
[openwrt/openwrt.git] / target / linux / ath79 / files / drivers / mtd / nand / raw / nand_rb4xx.c
index 50bd69f6a410d465f1ab0963ca87607e416452e1..22e2660b38f91ca280debb78c4cfd10f944fdd72 100644 (file)
@@ -188,10 +188,15 @@ static int rb4xx_nand_probe(struct platform_device *pdev)
        if (mtd->writesize == 512)
                mtd_set_ooblayout(mtd, &rb4xx_nand_ecclayout_ops);
 
-       nand->chip.ecc.mode     = NAND_ECC_SOFT;
-       nand->chip.ecc.algo     = NAND_ECC_HAMMING;
-       nand->chip.options      = NAND_NO_SUBPAGE_WRITE;
-       nand->chip.priv         = nand;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0)
+       nand->chip.ecc.engine_type      = NAND_ECC_ENGINE_TYPE_SOFT;
+       nand->chip.ecc.algo             = NAND_ECC_ALGO_HAMMING;
+#else
+       nand->chip.ecc.mode             = NAND_ECC_SOFT;
+       nand->chip.ecc.algo             = NAND_ECC_HAMMING;
+#endif
+       nand->chip.options              = NAND_NO_SUBPAGE_WRITE;
+       nand->chip.priv                 = nand;
 
        nand->chip.legacy.read_byte     = rb4xx_nand_read_byte;
        nand->chip.legacy.write_buf     = rb4xx_nand_write_buf;
@@ -206,7 +211,12 @@ static int rb4xx_nand_probe(struct platform_device *pdev)
 
        ret = mtd_device_register(mtd, NULL, 0);
        if (ret) {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,8,0)
+               mtd_device_unregister(nand_to_mtd(&nand->chip));
+               nand_cleanup(&nand->chip);
+#else
                nand_release(&nand->chip);
+#endif
                return ret;
        }
 
@@ -217,7 +227,12 @@ static int rb4xx_nand_remove(struct platform_device *pdev)
 {
        struct rb4xx_nand *nand = platform_get_drvdata(pdev);
 
-       nand_release(&nand->chip);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,8,0)
+               mtd_device_unregister(nand_to_mtd(&nand->chip));
+               nand_cleanup(&nand->chip);
+#else
+               nand_release(&nand->chip);
+#endif
 
        return 0;
 }