|
@@ -160,10 +160,8 @@ static int __init cmx270_init(void)
|
|
|
gpio_direction_input(GPIO_NAND_RB);
|
|
|
|
|
|
/* Allocate memory for MTD device structure and private data */
|
|
|
- cmx270_nand_mtd = kzalloc(sizeof(struct mtd_info) +
|
|
|
- sizeof(struct nand_chip),
|
|
|
- GFP_KERNEL);
|
|
|
- if (!cmx270_nand_mtd) {
|
|
|
+ this = kzalloc(sizeof(struct nand_chip), GFP_KERNEL);
|
|
|
+ if (!this) {
|
|
|
ret = -ENOMEM;
|
|
|
goto err_kzalloc;
|
|
|
}
|
|
@@ -175,8 +173,7 @@ static int __init cmx270_init(void)
|
|
|
goto err_ioremap;
|
|
|
}
|
|
|
|
|
|
- /* Get pointer to private data */
|
|
|
- this = (struct nand_chip *)(&cmx270_nand_mtd[1]);
|
|
|
+ cmx270_nand_mtd = nand_to_mtd(this);
|
|
|
|
|
|
/* Link the private data with the MTD structure */
|
|
|
cmx270_nand_mtd->owner = THIS_MODULE;
|
|
@@ -216,7 +213,7 @@ static int __init cmx270_init(void)
|
|
|
err_scan:
|
|
|
iounmap(cmx270_nand_io);
|
|
|
err_ioremap:
|
|
|
- kfree(cmx270_nand_mtd);
|
|
|
+ kfree(this);
|
|
|
err_kzalloc:
|
|
|
gpio_free(GPIO_NAND_RB);
|
|
|
err_gpio_request:
|
|
@@ -240,8 +237,7 @@ static void __exit cmx270_cleanup(void)
|
|
|
|
|
|
iounmap(cmx270_nand_io);
|
|
|
|
|
|
- /* Free the MTD device structure */
|
|
|
- kfree (cmx270_nand_mtd);
|
|
|
+ kfree(mtd_to_nand(cmx270_nand_mtd));
|
|
|
}
|
|
|
module_exit(cmx270_cleanup);
|
|
|
|