[PATCH 1/1] mtd: msm_nand: Add initial msm nand driver support.

Russell King - ARM Linux linux at arm.linux.org.uk
Thu Jan 6 10:48:52 EST 2011


On Fri, Dec 31, 2010 at 02:24:40PM +0530, Murali Nalajala wrote:
> +	info->msm_nand.dev = &pdev->dev;
> +
> +	init_waitqueue_head(&info->msm_nand.wait_queue);
> +
> +	info->msm_nand.dma_channel = res->start;
> +	pr_debug("dma channel 0x%x\n", info->msm_nand.dma_channel);
> +	info->msm_nand.dma_buffer =
> +		dma_alloc_coherent(NULL, MSM_NAND_DMA_BUFFER_SIZE,
> +				   &info->msm_nand.dma_addr, GFP_KERNEL);

Haven't you got a struct device for this (&pdev->dev) ?

> +	if (info->msm_nand.dma_buffer == NULL) {
> +		err = -ENOMEM;
> +		goto out_free_info;
> +	}
> +
> +	pr_debug("allocated dma buffer at %p, dma_addr %x\n",
> +		info->msm_nand.dma_buffer, info->msm_nand.dma_addr);
> +
> +	info->mtd.name = dev_name(&pdev->dev);
> +	info->mtd.priv = &info->msm_nand;
> +	info->mtd.owner = THIS_MODULE;
> +
> +	if (msm_nand_scan(&info->mtd, 1)) {
> +		err = -ENXIO;
> +		goto out_free_dma_buffer;
> +	}
> +
> +#ifdef CONFIG_MTD_PARTITIONS
> +	err = parse_mtd_partitions(&info->mtd, part_probes, &info->parts, 0);
> +	if (err > 0)
> +		err = add_mtd_partitions(&info->mtd, info->parts, err);
> +	else if (err <= 0 && pdata && pdata->parts)
> +		err = add_mtd_partitions(&info->mtd, pdata->parts,
> +					 pdata->nr_parts);
> +	else
> +#endif
> +		err = add_mtd_device(&info->mtd);
> +
> +	if (err != 0)
> +		goto out_free_dma_buffer;
> +
> +	platform_set_drvdata(pdev, info);
> +
> +	return 0;
> +
> +out_free_dma_buffer:
> +	dma_free_coherent(NULL, MSM_NAND_DMA_BUFFER_SIZE,

Ditto.

> +			  info->msm_nand.dma_buffer, info->msm_nand.dma_addr);
> +out_free_info:
> +	kfree(info);
> +
> +	return err;
> +}
> +
> +static int __devexit msm_nand_remove(struct platform_device *pdev)
> +{
> +	struct msm_nand_info *info = platform_get_drvdata(pdev);
> +
> +	platform_set_drvdata(pdev, NULL);
> +
> +#ifdef CONFIG_MTD_PARTITIONS
> +	if (info->parts)
> +		del_mtd_partitions(&info->mtd);
> +	else
> +#endif
> +		del_mtd_device(&info->mtd);
> +
> +	msm_nand_release(&info->mtd);
> +	dma_free_coherent(NULL, MSM_NAND_DMA_BUFFER_SIZE,

Ditto.



More information about the linux-arm-kernel mailing list