#include <linux/module.h>
#include <linux/dma-mapping.h>
#include <linux/mtd/mtd.h>
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0)
#include <linux/mtd/nand.h>
-#endif
#include <linux/mtd/rawnand.h>
#include <linux/mtd/partitions.h>
#include <linux/platform_device.h>
break;
case NAND_CMD_PAGEPROG:
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0)
if (nand->ecc.engine_type == NAND_ECC_ENGINE_TYPE_ON_HOST) {
-#else
- if (nand->ecc.mode == NAND_ECC_HW) {
-#endif
/* the data is already written */
break;
}
if (mtd->writesize == 2048)
nand->options |= NAND_NO_SUBPAGE_WRITE;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0)
if (nand->ecc.engine_type == NAND_ECC_ENGINE_TYPE_ON_HOST) {
-#else
- if (nand->ecc.mode == NAND_ECC_HW) {
-#endif
ret = ar934x_nfc_setup_hwecc(nfc);
if (ret)
return ret;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0)
} else if (nand->ecc.engine_type != NAND_ECC_ENGINE_TYPE_SOFT) {
dev_err(dev, "unknown ECC mode %d\n", nand->ecc.engine_type);
-#else
- } else if (nand->ecc.mode != NAND_ECC_SOFT) {
- dev_err(dev, "unknown ECC mode %d\n", nand->ecc.mode);
-#endif
return -EINVAL;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0)
} else if ((nand->ecc.algo != NAND_ECC_ALGO_BCH) &&
(nand->ecc.algo != NAND_ECC_ALGO_HAMMING)) {
-#else
- } else if ((nand->ecc.algo != NAND_ECC_BCH) &&
- (nand->ecc.algo != NAND_ECC_HAMMING)) {
-#endif
dev_err(dev, "unknown software ECC algo %d\n", nand->ecc.algo);
return -EINVAL;
}
nand->legacy.read_byte = ar934x_nfc_read_byte;
nand->legacy.write_buf = ar934x_nfc_write_buf;
nand->legacy.read_buf = ar934x_nfc_read_buf;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0)
nand->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST; /* default */
-#else
- nand->ecc.mode = NAND_ECC_HW; /* default */
-#endif
nand->priv = nfc;
platform_set_drvdata(pdev, nfc);
nfc = platform_get_drvdata(pdev);
if (nfc) {
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,8,0)
mtd_device_unregister(nand_to_mtd(&nfc->nand_chip));
nand_cleanup(&nfc->nand_chip);
-#else
- nand_release(&nfc->nand_chip);
-#endif
ar934x_nfc_free_buf(nfc);
}
if (mtd->writesize == 512)
mtd_set_ooblayout(mtd, &rb4xx_nand_ecclayout_ops);
-#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;
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;
}
{
struct rb4xx_nand *nand = platform_get_drvdata(pdev);
-#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
+ mtd_device_unregister(nand_to_mtd(&nand->chip));
+ nand_cleanup(&nand->chip);
return 0;
}
static void rb91x_nand_release(struct rb91x_nand_drvdata *drvdata)
{
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,8,0)
mtd_device_unregister(nand_to_mtd(&drvdata->chip));
nand_cleanup(&drvdata->chip);
-#else
- nand_release(&drvdata->chip);
-#endif
}
static int rb91x_nand_probe(struct platform_device *pdev)
drvdata->chip.legacy.read_buf = rb91x_nand_read_buf;
drvdata->chip.legacy.chip_delay = 25;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0)
drvdata->chip.ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
drvdata->chip.ecc.algo = NAND_ECC_ALGO_HAMMING;
-#else
- drvdata->chip.ecc.mode = NAND_ECC_SOFT;
- drvdata->chip.ecc.algo = NAND_ECC_HAMMING;
-#endif
drvdata->chip.options = NAND_NO_SUBPAGE_WRITE;
r = nand_scan(&drvdata->chip, 1);
napi_schedule(&ag->napi);
}
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0)
static void ag71xx_tx_timeout(struct net_device *dev, unsigned int txqueue)
-#else
-static void ag71xx_tx_timeout(struct net_device *dev)
-#endif
{
struct ag71xx *ag = netdev_priv(dev);
eth_random_addr(dev->dev_addr);
}
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,10,0)
err = of_get_phy_mode(np, &ag->phy_if_mode);
if (err < 0) {
-#else
- ag->phy_if_mode = of_get_phy_mode(np);
- if (ag->phy_if_mode < 0) {
-#endif
dev_err(&pdev->dev, "missing phy-mode property in DT\n");
return ag->phy_if_mode;
}