Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f32a3e2 authored by Sachin Kamat's avatar Sachin Kamat Committed by David Woodhouse
Browse files

mtd: s3c2410: Use devm_* functions



devm_* functions are device managed functions and make cleanup code
simpler and smaller.
devm_kzalloc, devm_clk_get and devm_request_and_ioremap functions
are used.

Signed-off-by: default avatarSachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
parent c83d29f0
Loading
Loading
Loading
Loading
+10 −37
Original line number Diff line number Diff line
@@ -97,9 +97,8 @@ enum s3c_nand_clk_state {
 * @mtds: An array of MTD instances on this controoler.
 * @platform: The platform data for this board.
 * @device: The platform device we bound to.
 * @area: The IO area resource that came from request_mem_region().
 * @clk: The clock resource for this controller.
 * @regs: The area mapped for the hardware registers described by @area.
 * @regs: The area mapped for the hardware registers.
 * @sel_reg: Pointer to the register controlling the NAND selection.
 * @sel_bit: The bit in @sel_reg to select the NAND chip.
 * @mtd_count: The number of MTDs created from this controller.
@@ -116,7 +115,6 @@ struct s3c2410_nand_info {

	/* device info */
	struct device			*device;
	struct resource			*area;
	struct clk			*clk;
	void __iomem			*regs;
	void __iomem			*sel_reg;
@@ -716,29 +714,12 @@ static int s3c24xx_nand_remove(struct platform_device *pdev)
			pr_debug("releasing mtd %d (%p)\n", mtdno, ptr);
			nand_release(&ptr->mtd);
		}

		kfree(info->mtds);
	}

	/* free the common resources */

	if (!IS_ERR(info->clk)) {
	if (!IS_ERR(info->clk))
		s3c2410_nand_clk_set_state(info, CLOCK_DISABLE);
		clk_put(info->clk);
	}

	if (info->regs != NULL) {
		iounmap(info->regs);
		info->regs = NULL;
	}

	if (info->area != NULL) {
		release_resource(info->area);
		kfree(info->area);
		info->area = NULL;
	}

	kfree(info);

	return 0;
}
@@ -933,7 +914,7 @@ static int s3c24xx_nand_probe(struct platform_device *pdev)

	pr_debug("s3c2410_nand_probe(%p)\n", pdev);

	info = kzalloc(sizeof(*info), GFP_KERNEL);
	info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL);
	if (info == NULL) {
		dev_err(&pdev->dev, "no memory for flash info\n");
		err = -ENOMEM;
@@ -947,7 +928,7 @@ static int s3c24xx_nand_probe(struct platform_device *pdev)

	/* get the clock source and enable it */

	info->clk = clk_get(&pdev->dev, "nand");
	info->clk = devm_clk_get(&pdev->dev, "nand");
	if (IS_ERR(info->clk)) {
		dev_err(&pdev->dev, "failed to get clock\n");
		err = -ENOENT;
@@ -962,19 +943,11 @@ static int s3c24xx_nand_probe(struct platform_device *pdev)
	res = pdev->resource;
	size = resource_size(res);

	info->area = request_mem_region(res->start, size, pdev->name);

	if (info->area == NULL) {
		dev_err(&pdev->dev, "cannot reserve register region\n");
		err = -ENOENT;
		goto exit_error;
	}

	info->device	= &pdev->dev;
	info->platform	= plat;
	info->regs       = ioremap(res->start, size);
	info->cpu_type	= cpu_type;

	info->regs	= devm_request_and_ioremap(&pdev->dev, res);
	if (info->regs == NULL) {
		dev_err(&pdev->dev, "cannot reserve register region\n");
		err = -EIO;
@@ -997,7 +970,7 @@ static int s3c24xx_nand_probe(struct platform_device *pdev)
	/* allocate our information */

	size = nr_sets * sizeof(*info->mtds);
	info->mtds = kzalloc(size, GFP_KERNEL);
	info->mtds = devm_kzalloc(&pdev->dev, size, GFP_KERNEL);
	if (info->mtds == NULL) {
		dev_err(&pdev->dev, "failed to allocate mtd storage\n");
		err = -ENOMEM;