cregit-Linux how code gets into the kernel

Release 4.7 drivers/mtd/onenand/generic.c

/*
 *  linux/drivers/mtd/onenand/generic.c
 *
 *  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; }

Contributors

PersonTokensPropCommitsCommitProp
kyungmin parkkyungmin park24587.19%215.38%
magnus dammmagnus damm124.27%17.69%
dmitry eremin-baryshkovdmitry eremin-baryshkov72.49%215.38%
lei minglei ming51.78%17.69%
jingoo hanjingoo han41.42%17.69%
frans klaverfrans klaver31.07%17.69%
kay sieverskay sievers10.36%17.69%
brian norrisbrian norris10.36%17.69%
burman yanburman yan10.36%17.69%
jamie ilesjamie iles10.36%17.69%
artem bityutskiyartem bityutskiy10.36%17.69%
Total281100.00%13100.00%


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; }

Contributors

PersonTokensPropCommitsCommitProp
kyungmin parkkyungmin park7392.41%133.33%
lei minglei ming33.80%133.33%
magnus dammmagnus damm33.80%133.33%
Total79100.00%3100.00%

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);

Overall Contributors

PersonTokensPropCommitsCommitProp
kyungmin parkkyungmin park39286.53%317.65%
magnus dammmagnus damm173.75%15.88%
lei minglei ming143.09%15.88%
dmitry eremin-baryshkovdmitry eremin-baryshkov71.55%211.76%
axel linaxel lin71.55%15.88%
jingoo hanjingoo han40.88%15.88%
frans klaverfrans klaver30.66%15.88%
tim schmielautim schmielau30.66%15.88%
jamie ilesjamie iles10.22%15.88%
artem bityutskiyartem bityutskiy10.22%15.88%
burman yanburman yan10.22%15.88%
dan williamsdan williams10.22%15.88%
kay sieverskay sievers10.22%15.88%
brian norrisbrian norris10.22%15.88%
Total453100.00%17100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
{% endraw %}