--- initial
+++ final
@@ -1,77 +1,77 @@
 static int __init txx9ndfmc_probe(struct platform_device *dev) {
   struct txx9ndfmc_platform_data *plat = dev_get_platdata(&dev->dev);
   int hold, spw;
   int i;
   struct txx9ndfmc_drvdata *drvdata;
   unsigned long gbusclk = plat->gbus_clock;
   struct resource *res;
   drvdata = devm_kzalloc(&dev->dev, sizeof(*drvdata), GFP_KERNEL);
   if (!drvdata) return -ENOMEM;
   res = platform_get_resource(dev, IORESOURCE_MEM, 0);
   drvdata->base = devm_ioremap_resource(&dev->dev, res);
   if (IS_ERR(drvdata->base)) return PTR_ERR(drvdata->base);
   hold = plat->hold ?: 20; /* tDH */
   spw = plat->spw ?: 90;   /* max(tREADID, tWP, tRP) */
   hold = TXX9NDFMC_NS_TO_CYC(gbusclk, hold);
   spw = TXX9NDFMC_NS_TO_CYC(gbusclk, spw);
   if (plat->flags & NDFMC_PLAT_FLAG_HOLDADD) hold -= 2; /* actual hold time : (HOLD + 2) BUSCLK */
   spw -= 1;                                             /* actual wait time : (SPW + 1) BUSCLK */
   hold = clamp(hold, 1, 15);
   drvdata->hold = hold;
   spw = clamp(spw, 1, 15);
   drvdata->spw = spw;
   dev_info(&dev->dev, "CLK:%ldMHz HOLD:%d SPW:%d\n", (gbusclk + 500000) / 1000000, hold, spw);
   nand_hw_control_init(&drvdata->hw_control);
   platform_set_drvdata(dev, drvdata);
   txx9ndfmc_initialize(dev);
   for (i = 0; i < MAX_TXX9NDFMC_DEV; i++) {
     struct txx9ndfmc_priv *txx9_priv;
     struct nand_chip *chip;
     struct mtd_info *mtd;
     if (!(plat->ch_mask & (1 << i))) continue;
     txx9_priv = kzalloc(sizeof(struct txx9ndfmc_priv), GFP_KERNEL);
     if (!txx9_priv) continue;
     chip = &txx9_priv->chip;
     mtd = nand_to_mtd(chip);
     mtd->dev.parent = &dev->dev;
     chip->read_byte = txx9ndfmc_read_byte;
     chip->read_buf = txx9ndfmc_read_buf;
     chip->write_buf = txx9ndfmc_write_buf;
     chip->cmd_ctrl = txx9ndfmc_cmd_ctrl;
     chip->dev_ready = txx9ndfmc_dev_ready;
     chip->ecc.calculate = txx9ndfmc_calculate_ecc;
     chip->ecc.correct = txx9ndfmc_correct_data;
     chip->ecc.hwctl = txx9ndfmc_enable_hwecc;
     chip->ecc.mode = NAND_ECC_HW;
     /* txx9ndfmc_nand_scan will overwrite ecc.size and ecc.bytes */
     chip->ecc.size = 256;
     chip->ecc.bytes = 3;
     chip->ecc.strength = 1;
     chip->chip_delay = 100;
     chip->controller = &drvdata->hw_control;
     nand_set_controller_data(chip, txx9_priv);
     txx9_priv->dev = dev;
     if (plat->ch_mask != 1) {
       txx9_priv->cs = i;
       txx9_priv->mtdname = kasprintf(GFP_KERNEL, "%s.%u", dev_name(&dev->dev), i);
     } else {
       txx9_priv->cs = -1;
       txx9_priv->mtdname = kstrdup(dev_name(&dev->dev), GFP_KERNEL);
     }
     if (!txx9_priv->mtdname) {
       kfree(txx9_priv);
       dev_err(&dev->dev, "Unable to allocate MTD name.\n");
       continue;
     }
     if (plat->wide_mask & (1 << i)) chip->options |= NAND_BUSWIDTH_16;
     if (txx9ndfmc_nand_scan(mtd)) {
       kfree(txx9_priv->mtdname);
       kfree(txx9_priv);
       continue;
     }
     mtd->name = txx9_priv->mtdname;
-    mtd_device_parse_register(mtd, NULL, NULL, NULL, 0);
+    mtd_device_register(mtd, NULL, 0);
     drvdata->mtds[i] = mtd;
   }
   return 0;
 }<sep>@@
expression e1,e2,e3;
@@
-       mtd_device_parse_register
+       mtd_device_register
         (e1,
-                                      NULL, NULL,
                                       e2,e3)