}
 
        tc6393xb_cells[TC6393XB_CELL_NAND].driver_data = tcpd->nand_data;
-       tc6393xb_cells[TC6393XB_CELL_NAND].platform_data =
-               &tc6393xb_cells[TC6393XB_CELL_NAND];
-       tc6393xb_cells[TC6393XB_CELL_NAND].data_size =
-               sizeof(tc6393xb_cells[TC6393XB_CELL_NAND]);
-
-       tc6393xb_cells[TC6393XB_CELL_MMC].platform_data =
-               &tc6393xb_cells[TC6393XB_CELL_MMC];
-       tc6393xb_cells[TC6393XB_CELL_MMC].data_size =
-               sizeof(tc6393xb_cells[TC6393XB_CELL_MMC]);
-
-       tc6393xb_cells[TC6393XB_CELL_OHCI].platform_data =
-               &tc6393xb_cells[TC6393XB_CELL_OHCI];
-       tc6393xb_cells[TC6393XB_CELL_OHCI].data_size =
-               sizeof(tc6393xb_cells[TC6393XB_CELL_OHCI]);
-
        tc6393xb_cells[TC6393XB_CELL_FB].driver_data = tcpd->fb_data;
-       tc6393xb_cells[TC6393XB_CELL_FB].platform_data =
-               &tc6393xb_cells[TC6393XB_CELL_FB];
-       tc6393xb_cells[TC6393XB_CELL_FB].data_size =
-               sizeof(tc6393xb_cells[TC6393XB_CELL_FB]);
 
        ret = mfd_add_devices(&dev->dev, dev->id,
                        tc6393xb_cells, ARRAY_SIZE(tc6393xb_cells),
 
 
 static int __devinit ohci_hcd_tmio_drv_probe(struct platform_device *dev)
 {
-       struct mfd_cell *cell = dev->dev.platform_data;
+       struct mfd_cell *cell = mfd_get_cell(dev);
        struct resource *regs = platform_get_resource(dev, IORESOURCE_MEM, 0);
        struct resource *config = platform_get_resource(dev, IORESOURCE_MEM, 1);
        struct resource *sram = platform_get_resource(dev, IORESOURCE_MEM, 2);
 {
        struct usb_hcd *hcd = platform_get_drvdata(dev);
        struct tmio_hcd *tmio = hcd_to_tmio(hcd);
-       struct mfd_cell *cell = dev->dev.platform_data;
+       struct mfd_cell *cell = mfd_get_cell(dev);
 
        usb_remove_hcd(hcd);
        tmio_stop_hc(dev);
 #ifdef CONFIG_PM
 static int ohci_hcd_tmio_drv_suspend(struct platform_device *dev, pm_message_t state)
 {
-       struct mfd_cell *cell = dev->dev.platform_data;
+       struct mfd_cell *cell = mfd_get_cell(dev);
        struct usb_hcd *hcd = platform_get_drvdata(dev);
        struct ohci_hcd *ohci = hcd_to_ohci(hcd);
        struct tmio_hcd *tmio = hcd_to_tmio(hcd);
 
 static int ohci_hcd_tmio_drv_resume(struct platform_device *dev)
 {
-       struct mfd_cell *cell = dev->dev.platform_data;
+       struct mfd_cell *cell = mfd_get_cell(dev);
        struct usb_hcd *hcd = platform_get_drvdata(dev);
        struct ohci_hcd *ohci = hcd_to_ohci(hcd);
        struct tmio_hcd *tmio = hcd_to_tmio(hcd);
 
  */
 static int tmiofb_hw_stop(struct platform_device *dev)
 {
-       struct mfd_cell *cell = dev->dev.platform_data;
+       struct mfd_cell *cell = mfd_get_cell(dev);
        struct tmio_fb_data *data = cell->driver_data;
        struct fb_info *info = platform_get_drvdata(dev);
        struct tmiofb_par *par = info->par;
  */
 static int tmiofb_hw_init(struct platform_device *dev)
 {
-       struct mfd_cell *cell = dev->dev.platform_data;
+       struct mfd_cell *cell = mfd_get_cell(dev);
        struct fb_info *info = platform_get_drvdata(dev);
        struct tmiofb_par *par = info->par;
        const struct resource *nlcr = &cell->resources[0];
  */
 static void tmiofb_hw_mode(struct platform_device *dev)
 {
-       struct mfd_cell *cell = dev->dev.platform_data;
+       struct mfd_cell *cell = mfd_get_cell(dev);
        struct tmio_fb_data *data = cell->driver_data;
        struct fb_info *info = platform_get_drvdata(dev);
        struct fb_videomode *mode = info->mode;
 static struct fb_videomode *
 tmiofb_find_mode(struct fb_info *info, struct fb_var_screeninfo *var)
 {
-       struct mfd_cell *cell =
-               info->device->platform_data;
+       struct mfd_cell *cell = mfd_get_cell(to_platform_device(info->device));
        struct tmio_fb_data *data = cell->driver_data;
        struct fb_videomode *best = NULL;
        int i;
 {
 
        struct fb_videomode *mode;
-       struct mfd_cell *cell =
-               info->device->platform_data;
+       struct mfd_cell *cell = mfd_get_cell(to_platform_device(info->device));
        struct tmio_fb_data *data = cell->driver_data;
 
        mode = tmiofb_find_mode(info, var);
 
 static int __devinit tmiofb_probe(struct platform_device *dev)
 {
-       struct mfd_cell *cell = dev->dev.platform_data;
+       struct mfd_cell *cell = mfd_get_cell(dev);
        struct tmio_fb_data *data = cell->driver_data;
        struct resource *ccr = platform_get_resource(dev, IORESOURCE_MEM, 1);
        struct resource *lcr = platform_get_resource(dev, IORESOURCE_MEM, 0);
 
 static int __devexit tmiofb_remove(struct platform_device *dev)
 {
-       struct mfd_cell *cell = dev->dev.platform_data;
+       struct mfd_cell *cell = mfd_get_cell(dev);
        struct fb_info *info = platform_get_drvdata(dev);
        int irq = platform_get_irq(dev, 0);
        struct tmiofb_par *par;
 #ifdef CONFIG_FB_TMIO_ACCELL
        struct tmiofb_par *par = info->par;
 #endif
-       struct mfd_cell *cell = dev->dev.platform_data;
+       struct mfd_cell *cell = mfd_get_cell(dev);
        int retval = 0;
 
        console_lock();
 static int tmiofb_resume(struct platform_device *dev)
 {
        struct fb_info *info = platform_get_drvdata(dev);
-       struct mfd_cell *cell = dev->dev.platform_data;
+       struct mfd_cell *cell = mfd_get_cell(dev);
        int retval = 0;
 
        console_lock();