diff options
author | Boris Brezillon <boris.brezillon@bootlin.com> | 2018-02-18 19:05:16 +0300 |
---|---|---|
committer | Boris Brezillon <boris.brezillon@bootlin.com> | 2018-03-15 17:40:37 +0300 |
commit | 26777d37216c976cf6fd196700133a38aa2c4b0f (patch) | |
tree | 73199fbe5fba118d48421b21bfdb110d21c03532 /drivers/mtd/onenand/generic.c | |
parent | 801492c508f617d5bdc383b98b4a49d7de90c154 (diff) | |
download | linux-26777d37216c976cf6fd196700133a38aa2c4b0f.tar.xz |
mtd: Move onenand code base to drivers/mtd/nand/onenand
Move onenand code base to the drivers/mtd/nand directory in the hope
that someday someone will patch it to use the generic NAND helpers.
If it never happens, at least we'll have all NAND related support in a
single directory and not spread over the drivers/mtd/ directory.
Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
Diffstat (limited to 'drivers/mtd/onenand/generic.c')
-rw-r--r-- | drivers/mtd/onenand/generic.c | 116 |
1 files changed, 0 insertions, 116 deletions
diff --git a/drivers/mtd/onenand/generic.c b/drivers/mtd/onenand/generic.c deleted file mode 100644 index d5ccaf943b91..000000000000 --- a/drivers/mtd/onenand/generic.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (c) 2005 Samsung Electronics - * Kyungmin Park <kyungmin.park@samsung.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Overview: - * This is a device driver for the OneNAND flash for generic boards. - */ - -#include <linux/module.h> -#include <linux/slab.h> -#include <linux/platform_device.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/onenand.h> -#include <linux/mtd/partitions.h> -#include <linux/io.h> - -/* - * Note: Driver name and platform data format have been updated! - * - * This version of the driver is named "onenand-flash" and takes struct - * onenand_platform_data as platform data. The old ARM-specific version - * with the name "onenand" used to take struct flash_platform_data. - */ -#define DRIVER_NAME "onenand-flash" - -struct onenand_info { - struct mtd_info mtd; - struct onenand_chip onenand; -}; - -static int generic_onenand_probe(struct platform_device *pdev) -{ - struct onenand_info *info; - struct onenand_platform_data *pdata = dev_get_platdata(&pdev->dev); - struct resource *res = pdev->resource; - unsigned long size = resource_size(res); - int err; - - info = kzalloc(sizeof(struct onenand_info), GFP_KERNEL); - if (!info) - return -ENOMEM; - - if (!request_mem_region(res->start, size, dev_name(&pdev->dev))) { - err = -EBUSY; - goto out_free_info; - } - - info->onenand.base = ioremap(res->start, size); - if (!info->onenand.base) { - err = -ENOMEM; - goto out_release_mem_region; - } - - info->onenand.mmcontrol = pdata ? pdata->mmcontrol : NULL; - info->onenand.irq = platform_get_irq(pdev, 0); - - info->mtd.dev.parent = &pdev->dev; - info->mtd.priv = &info->onenand; - - if (onenand_scan(&info->mtd, 1)) { - err = -ENXIO; - goto out_iounmap; - } - - err = mtd_device_parse_register(&info->mtd, NULL, NULL, - pdata ? pdata->parts : NULL, - pdata ? pdata->nr_parts : 0); - - platform_set_drvdata(pdev, info); - - return 0; - -out_iounmap: - iounmap(info->onenand.base); -out_release_mem_region: - release_mem_region(res->start, size); -out_free_info: - kfree(info); - - return err; -} - -static int generic_onenand_remove(struct platform_device *pdev) -{ - struct onenand_info *info = platform_get_drvdata(pdev); - struct resource *res = pdev->resource; - unsigned long size = resource_size(res); - - if (info) { - onenand_release(&info->mtd); - release_mem_region(res->start, size); - iounmap(info->onenand.base); - kfree(info); - } - - return 0; -} - -static struct platform_driver generic_onenand_driver = { - .driver = { - .name = DRIVER_NAME, - }, - .probe = generic_onenand_probe, - .remove = generic_onenand_remove, -}; - -module_platform_driver(generic_onenand_driver); - -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("Kyungmin Park <kyungmin.park@samsung.com>"); -MODULE_DESCRIPTION("Glue layer for OneNAND flash on generic boards"); -MODULE_ALIAS("platform:" DRIVER_NAME); |