struct onenand_info {
        struct mtd_info         mtd;
-       struct mtd_partition    *parts;
        struct onenand_chip     onenand;
 };
 
                goto out_iounmap;
        }
 
-       err = parse_mtd_partitions(&info->mtd, NULL, &info->parts, 0);
-       if (err > 0)
-               mtd_device_register(&info->mtd, info->parts, err);
-       else if (err <= 0 && pdata && pdata->parts)
-               mtd_device_register(&info->mtd, pdata->parts, pdata->nr_parts);
-       else
-               err = mtd_device_register(&info->mtd, NULL, 0);
+       err = mtd_device_parse_register(&info->mtd, NULL, 0,
+                       pdata ? pdata->parts : NULL,
+                       pdata ? pdata->nr_parts : 0);
 
        platform_set_drvdata(pdev, info);