--- initial
+++ final
@@ -1,74 +1,74 @@
 static int s3c_onenand_probe(struct platform_device *pdev) {
   struct onenand_platform_data *pdata;
   struct onenand_chip *this;
   struct mtd_info *mtd;
   struct resource *r;
   int size, err;
   pdata = dev_get_platdata(&pdev->dev);
   /* No need to check pdata. the platform data is optional */
   size = sizeof(struct mtd_info) + sizeof(struct onenand_chip);
   mtd = devm_kzalloc(&pdev->dev, size, GFP_KERNEL);
   if (!mtd) return -ENOMEM;
   onenand = devm_kzalloc(&pdev->dev, sizeof(struct s3c_onenand), GFP_KERNEL);
   if (!onenand) return -ENOMEM;
   this = (struct onenand_chip *)&mtd[1];
   mtd->priv = this;
   mtd->dev.parent = &pdev->dev;
   onenand->pdev = pdev;
   onenand->type = platform_get_device_id(pdev)->driver_data;
   s3c_onenand_setup(mtd);
   r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
   onenand->base = devm_ioremap_resource(&pdev->dev, r);
   if (IS_ERR(onenand->base)) return PTR_ERR(onenand->base);
   onenand->phys_base = r->start;
   /* Set onenand_chip also */
   this->base = onenand->base;
   /* Use runtime badblock check */
   this->options |= ONENAND_SKIP_UNLOCK_CHECK;
   if (onenand->type != TYPE_S5PC110) {
     r = platform_get_resource(pdev, IORESOURCE_MEM, 1);
     onenand->ahb_addr = devm_ioremap_resource(&pdev->dev, r);
     if (IS_ERR(onenand->ahb_addr)) return PTR_ERR(onenand->ahb_addr);
     /* Allocate 4KiB BufferRAM */
     onenand->page_buf = devm_kzalloc(&pdev->dev, SZ_4K, GFP_KERNEL);
     if (!onenand->page_buf) return -ENOMEM;
     /* Allocate 128 SpareRAM */
     onenand->oob_buf = devm_kzalloc(&pdev->dev, 128, GFP_KERNEL);
     if (!onenand->oob_buf) return -ENOMEM;
     /* S3C doesn't handle subpage write */
     mtd->subpage_sft = 0;
     this->subpagesize = mtd->writesize;
   } else { /* S5PC110 */
     r = platform_get_resource(pdev, IORESOURCE_MEM, 1);
     onenand->dma_addr = devm_ioremap_resource(&pdev->dev, r);
     if (IS_ERR(onenand->dma_addr)) return PTR_ERR(onenand->dma_addr);
     s5pc110_dma_ops = s5pc110_dma_poll;
     /* Interrupt support */
     r = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
     if (r) {
       init_completion(&onenand->complete);
       s5pc110_dma_ops = s5pc110_dma_irq;
       err = devm_request_irq(&pdev->dev, r->start, s5pc110_onenand_irq, IRQF_SHARED, "onenand", &onenand);
       if (err) {
         dev_err(&pdev->dev, "failed to get irq\n");
         return err;
       }
     }
   }
   err = onenand_scan(mtd, 1);
   if (err) return err;
   if (onenand->type != TYPE_S5PC110) {
     /* S3C doesn't handle subpage write */
     mtd->subpage_sft = 0;
     this->subpagesize = mtd->writesize;
   }
   if (s3c_read_reg(MEM_CFG_OFFSET) & ONENAND_SYS_CFG1_SYNC_READ) dev_info(&onenand->pdev->dev, "OneNAND Sync. Burst Read enabled\n");
-  err = mtd_device_parse_register(mtd, NULL, NULL, pdata ? pdata->parts : NULL, pdata ? pdata->nr_parts : 0);
+  err = mtd_device_register(mtd, pdata ? pdata->parts : NULL, pdata ? pdata->nr_parts : 0);
   if (err) {
     dev_err(&pdev->dev, "failed to parse partitions and register the MTD device\n");
     onenand_release(mtd);
     return err;
   }
   platform_set_drvdata(pdev, mtd);
   return 0;
 }<sep>@@
expression e1,e2,e3;
@@
-       mtd_device_parse_register
+       mtd_device_register
         (e1,
-                                      NULL, NULL,
                                       e2,e3)