Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mtd: nand: r852: use the mtd instance embedded in struct nand_chip

struct nand_chip now embeds an mtd device. Make use of this mtd instance.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>

authored by

Boris BREZILLON and committed by
Brian Norris
de9f56f9 063294a3

+15 -20
+15 -19
drivers/mtd/nand/r852.c
··· 634 634 */ 635 635 static int r852_register_nand_device(struct r852_device *dev) 636 636 { 637 - dev->mtd = kzalloc(sizeof(struct mtd_info), GFP_KERNEL); 638 - 639 - if (!dev->mtd) 640 - goto error1; 637 + struct mtd_info *mtd = nand_to_mtd(dev->chip); 641 638 642 639 WARN_ON(dev->card_registred); 643 640 644 - dev->mtd->priv = dev->chip; 645 - dev->mtd->dev.parent = &dev->pci_dev->dev; 641 + mtd->priv = dev->chip; 642 + mtd->dev.parent = &dev->pci_dev->dev; 646 643 647 644 if (dev->readonly) 648 645 dev->chip->options |= NAND_ROM; 649 646 650 647 r852_engine_enable(dev); 651 648 652 - if (sm_register_device(dev->mtd, dev->sm)) 653 - goto error2; 649 + if (sm_register_device(mtd, dev->sm)) 650 + goto error1; 654 651 655 - if (device_create_file(&dev->mtd->dev, &dev_attr_media_type)) { 652 + if (device_create_file(&mtd->dev, &dev_attr_media_type)) { 656 653 message("can't create media type sysfs attribute"); 657 654 goto error3; 658 655 } ··· 657 660 dev->card_registred = 1; 658 661 return 0; 659 662 error3: 660 - nand_release(dev->mtd); 661 - error2: 662 - kfree(dev->mtd); 663 + nand_release(mtd); 663 664 error1: 664 665 /* Force card redetect */ 665 666 dev->card_detected = 0; ··· 670 675 671 676 static void r852_unregister_nand_device(struct r852_device *dev) 672 677 { 678 + struct mtd_info *mtd = nand_to_mtd(dev->chip); 679 + 673 680 if (!dev->card_registred) 674 681 return; 675 682 676 - device_remove_file(&dev->mtd->dev, &dev_attr_media_type); 677 - nand_release(dev->mtd); 683 + device_remove_file(&mtd->dev, &dev_attr_media_type); 684 + nand_release(mtd); 678 685 r852_engine_disable(dev); 679 686 dev->card_registred = 0; 680 - kfree(dev->mtd); 681 - dev->mtd = NULL; 682 687 } 683 688 684 689 /* Card state updater */ ··· 1026 1031 static int r852_resume(struct device *device) 1027 1032 { 1028 1033 struct r852_device *dev = pci_get_drvdata(to_pci_dev(device)); 1034 + struct mtd_info *mtd = nand_to_mtd(dev->chip); 1029 1035 1030 1036 r852_disable_irqs(dev); 1031 1037 r852_card_update_present(dev); ··· 1046 1050 /* Otherwise, initialize the card */ 1047 1051 if (dev->card_registred) { 1048 1052 r852_engine_enable(dev); 1049 - dev->chip->select_chip(dev->mtd, 0); 1050 - dev->chip->cmdfunc(dev->mtd, NAND_CMD_RESET, -1, -1); 1051 - dev->chip->select_chip(dev->mtd, -1); 1053 + dev->chip->select_chip(mtd, 0); 1054 + dev->chip->cmdfunc(mtd, NAND_CMD_RESET, -1, -1); 1055 + dev->chip->select_chip(mtd, -1); 1052 1056 } 1053 1057 1054 1058 /* Program card detection IRQ */
-1
drivers/mtd/nand/r852.h
··· 108 108 109 109 struct r852_device { 110 110 void __iomem *mmio; /* mmio */ 111 - struct mtd_info *mtd; /* mtd backpointer */ 112 111 struct nand_chip *chip; /* nand chip backpointer */ 113 112 struct pci_dev *pci_dev; /* pci backpointer */ 114 113