Loading drivers/mtd/nand/fsl_upm.c +16 −13 Original line number Diff line number Diff line Loading @@ -31,7 +31,6 @@ struct fsl_upm_nand { struct device *dev; struct mtd_info mtd; struct nand_chip chip; int last_ctrl; struct mtd_partition *parts; Loading @@ -49,7 +48,8 @@ struct fsl_upm_nand { static inline struct fsl_upm_nand *to_fsl_upm_nand(struct mtd_info *mtdinfo) { return container_of(mtdinfo, struct fsl_upm_nand, mtd); return container_of(mtd_to_nand(mtdinfo), struct fsl_upm_nand, chip); } static int fun_chip_ready(struct mtd_info *mtd) Loading @@ -66,9 +66,10 @@ static int fun_chip_ready(struct mtd_info *mtd) static void fun_wait_rnb(struct fsl_upm_nand *fun) { if (fun->rnb_gpio[fun->mchip_number] >= 0) { struct mtd_info *mtd = nand_to_mtd(&fun->chip); int cnt = 1000000; while (--cnt && !fun_chip_ready(&fun->mtd)) while (--cnt && !fun_chip_ready(mtd)) cpu_relax(); if (!cnt) dev_err(fun->dev, "tired waiting for RNB\n"); Loading Loading @@ -157,6 +158,7 @@ static int fun_chip_init(struct fsl_upm_nand *fun, const struct device_node *upm_np, const struct resource *io_res) { struct mtd_info *mtd = nand_to_mtd(&fun->chip); int ret; struct device_node *flash_np; Loading @@ -174,30 +176,30 @@ static int fun_chip_init(struct fsl_upm_nand *fun, if (fun->rnb_gpio[0] >= 0) fun->chip.dev_ready = fun_chip_ready; fun->mtd.priv = &fun->chip; fun->mtd.dev.parent = fun->dev; mtd->priv = &fun->chip; mtd->dev.parent = fun->dev; flash_np = of_get_next_child(upm_np, NULL); if (!flash_np) return -ENODEV; nand_set_flash_node(&fun->chip, flash_np); fun->mtd.name = kasprintf(GFP_KERNEL, "0x%llx.%s", (u64)io_res->start, mtd->name = kasprintf(GFP_KERNEL, "0x%llx.%s", (u64)io_res->start, flash_np->name); if (!fun->mtd.name) { if (!mtd->name) { ret = -ENOMEM; goto err; } ret = nand_scan(&fun->mtd, fun->mchip_count); ret = nand_scan(mtd, fun->mchip_count); if (ret) goto err; ret = mtd_device_register(&fun->mtd, NULL, 0); ret = mtd_device_register(mtd, NULL, 0); err: of_node_put(flash_np); if (ret) kfree(fun->mtd.name); kfree(mtd->name); return ret; } Loading Loading @@ -321,10 +323,11 @@ static int fun_probe(struct platform_device *ofdev) static int fun_remove(struct platform_device *ofdev) { struct fsl_upm_nand *fun = dev_get_drvdata(&ofdev->dev); struct mtd_info *mtd = nand_to_mtd(&fun->chip); int i; nand_release(&fun->mtd); kfree(fun->mtd.name); nand_release(mtd); kfree(mtd->name); for (i = 0; i < fun->mchip_count; i++) { if (fun->rnb_gpio[i] < 0) Loading Loading
drivers/mtd/nand/fsl_upm.c +16 −13 Original line number Diff line number Diff line Loading @@ -31,7 +31,6 @@ struct fsl_upm_nand { struct device *dev; struct mtd_info mtd; struct nand_chip chip; int last_ctrl; struct mtd_partition *parts; Loading @@ -49,7 +48,8 @@ struct fsl_upm_nand { static inline struct fsl_upm_nand *to_fsl_upm_nand(struct mtd_info *mtdinfo) { return container_of(mtdinfo, struct fsl_upm_nand, mtd); return container_of(mtd_to_nand(mtdinfo), struct fsl_upm_nand, chip); } static int fun_chip_ready(struct mtd_info *mtd) Loading @@ -66,9 +66,10 @@ static int fun_chip_ready(struct mtd_info *mtd) static void fun_wait_rnb(struct fsl_upm_nand *fun) { if (fun->rnb_gpio[fun->mchip_number] >= 0) { struct mtd_info *mtd = nand_to_mtd(&fun->chip); int cnt = 1000000; while (--cnt && !fun_chip_ready(&fun->mtd)) while (--cnt && !fun_chip_ready(mtd)) cpu_relax(); if (!cnt) dev_err(fun->dev, "tired waiting for RNB\n"); Loading Loading @@ -157,6 +158,7 @@ static int fun_chip_init(struct fsl_upm_nand *fun, const struct device_node *upm_np, const struct resource *io_res) { struct mtd_info *mtd = nand_to_mtd(&fun->chip); int ret; struct device_node *flash_np; Loading @@ -174,30 +176,30 @@ static int fun_chip_init(struct fsl_upm_nand *fun, if (fun->rnb_gpio[0] >= 0) fun->chip.dev_ready = fun_chip_ready; fun->mtd.priv = &fun->chip; fun->mtd.dev.parent = fun->dev; mtd->priv = &fun->chip; mtd->dev.parent = fun->dev; flash_np = of_get_next_child(upm_np, NULL); if (!flash_np) return -ENODEV; nand_set_flash_node(&fun->chip, flash_np); fun->mtd.name = kasprintf(GFP_KERNEL, "0x%llx.%s", (u64)io_res->start, mtd->name = kasprintf(GFP_KERNEL, "0x%llx.%s", (u64)io_res->start, flash_np->name); if (!fun->mtd.name) { if (!mtd->name) { ret = -ENOMEM; goto err; } ret = nand_scan(&fun->mtd, fun->mchip_count); ret = nand_scan(mtd, fun->mchip_count); if (ret) goto err; ret = mtd_device_register(&fun->mtd, NULL, 0); ret = mtd_device_register(mtd, NULL, 0); err: of_node_put(flash_np); if (ret) kfree(fun->mtd.name); kfree(mtd->name); return ret; } Loading Loading @@ -321,10 +323,11 @@ static int fun_probe(struct platform_device *ofdev) static int fun_remove(struct platform_device *ofdev) { struct fsl_upm_nand *fun = dev_get_drvdata(&ofdev->dev); struct mtd_info *mtd = nand_to_mtd(&fun->chip); int i; nand_release(&fun->mtd); kfree(fun->mtd.name); nand_release(mtd); kfree(mtd->name); for (i = 0; i < fun->mchip_count; i++) { if (fun->rnb_gpio[i] < 0) Loading