int ibmebus_register_driver(struct of_platform_driver *drv)
 {
-       if (!drv->driver.of_match_table)
-               drv->driver.of_match_table = drv->match_table;
-
        /* If the driver uses devices that ibmebus doesn't know, add them */
        ibmebus_create_devices(drv->driver.of_match_table);
 
 
 };
 
 static struct of_platform_driver of_pci_phb_driver = {
-       .match_table = of_pci_phb_ids,
        .probe = of_pci_phb_probe,
        .driver = {
                .name = "of-pci",
+               .owner = THIS_MODULE,
+               .of_match_table = of_pci_phb_ids,
        },
 };
 
 
 };
 
 static struct of_platform_driver mpc52xx_wkup_gpiochip_driver = {
-       .name = "gpio_wkup",
-       .match_table = mpc52xx_wkup_gpiochip_match,
+       .driver = {
+               .name = "gpio_wkup",
+               .owner = THIS_MODULE,
+               .of_match_table = mpc52xx_wkup_gpiochip_match,
+       },
        .probe = mpc52xx_wkup_gpiochip_probe,
        .remove = mpc52xx_gpiochip_remove,
 };
 };
 
 static struct of_platform_driver mpc52xx_simple_gpiochip_driver = {
-       .name = "gpio",
-       .match_table = mpc52xx_simple_gpiochip_match,
+       .driver = {
+               .name = "gpio",
+               .owner = THIS_MODULE,
+               .of_match_table = mpc52xx_simple_gpiochip_match,
+       },
        .probe = mpc52xx_simple_gpiochip_probe,
        .remove = mpc52xx_gpiochip_remove,
 };
 
 };
 
 static struct of_platform_driver mpc52xx_gpt_driver = {
-       .name = "mpc52xx-gpt",
-       .match_table = mpc52xx_gpt_match,
+       .driver = {
+               .name = "mpc52xx-gpt",
+               .owner = THIS_MODULE,
+               .of_match_table = mpc52xx_gpt_match,
+       },
        .probe = mpc52xx_gpt_probe,
        .remove = mpc52xx_gpt_remove,
 };
 
 };
 
 static struct of_platform_driver mpc52xx_lpbfifo_driver = {
-       .owner = THIS_MODULE,
-       .name = "mpc52xx-lpbfifo",
-       .match_table = mpc52xx_lpbfifo_match,
+       .driver = {
+               .name = "mpc52xx-lpbfifo",
+               .owner = THIS_MODULE,
+               .of_match_table = mpc52xx_lpbfifo_match,
+       },
        .probe = mpc52xx_lpbfifo_probe,
        .remove = __devexit_p(mpc52xx_lpbfifo_remove),
 };
 
 static struct of_platform_driver ep8248e_mdio_driver = {
        .driver = {
                .name = "ep8248e-mdio-bitbang",
+               .owner = THIS_MODULE,
+               .of_match_table = ep8248e_mdio_match,
        },
-       .match_table = ep8248e_mdio_match,
        .probe = ep8248e_mdio_probe,
        .remove = ep8248e_mdio_remove,
 };
 
 };
 
 static struct of_platform_driver pmc_driver = {
-       .name = "mpc83xx-pmc",
-       .match_table = pmc_match,
+       .driver = {
+               .name = "mpc83xx-pmc",
+               .owner = THIS_MODULE,
+               .of_match_table = pmc_match,
+       },
        .probe = pmc_probe,
        .remove = pmc_remove
 };
 
 };
 
 static struct of_platform_driver axon_msi_driver = {
-       .match_table    = axon_msi_device_id,
        .probe          = axon_msi_probe,
        .shutdown       = axon_msi_shutdown,
-       .driver         = {
-               .name   = "axon-msi"
+       .driver = {
+               .name = "axon-msi",
+               .owner = THIS_MODULE,
+               .of_match_table = axon_msi_device_id,
        },
 };
 
 
 
 static struct of_platform_driver gpio_mdio_driver =
 {
-       .match_table    = gpio_mdio_match,
        .probe          = gpio_mdio_probe,
        .remove         = gpio_mdio_remove,
-       .driver         = {
-               .name   = "gpio-mdio-bitbang",
+       .driver = {
+               .name = "gpio-mdio-bitbang",
+               .owner = THIS_MODULE,
+               .of_match_table = gpio_mdio_match,
        },
 };
 
 
 };
 
 static struct of_platform_driver axon_ram_driver = {
-       .match_table    = axon_ram_device_id,
        .probe          = axon_ram_probe,
        .remove         = axon_ram_remove,
-       .driver         = {
-               .owner  = THIS_MODULE,
-               .name   = AXON_RAM_MODULE_NAME,
+       .driver = {
+               .name = AXON_RAM_MODULE_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = axon_ram_device_id,
        },
 };
 
 
 
 
 static struct of_platform_driver mpc52xx_bcom_of_platform_driver = {
-       .owner          = THIS_MODULE,
-       .name           = DRIVER_NAME,
-       .match_table    = mpc52xx_bcom_of_match,
        .probe          = mpc52xx_bcom_probe,
        .remove         = mpc52xx_bcom_remove,
-       .driver         = {
-               .name   = DRIVER_NAME,
-               .owner  = THIS_MODULE,
+       .driver = {
+               .name = DRIVER_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = mpc52xx_bcom_of_match,
        },
 };
 
 
 };
 
 static struct of_platform_driver fsl_of_msi_driver = {
-       .name = "fsl-msi",
-       .match_table = fsl_of_msi_ids,
+       .driver = {
+               .name = "fsl-msi",
+               .owner = THIS_MODULE,
+               .of_match_table = fsl_of_msi_ids,
+       },
        .probe = fsl_of_msi_probe,
 };
 
 
 };
 
 static struct of_platform_driver pmc_driver = {
-       .driver.name = "fsl-pmc",
-       .match_table = pmc_ids,
+       .driver = {
+               .name = "fsl-pmc",
+               .owner = THIS_MODULE,
+               .of_match_table = pmc_ids,
+       },
        .probe = pmc_probe,
 };
 
 
 };
 
 static struct of_platform_driver fsl_of_rio_rpn_driver = {
-       .name = "fsl-of-rio",
-       .match_table = fsl_of_rio_rpn_ids,
+       .driver = {
+               .name = "fsl-of-rio",
+               .owner = THIS_MODULE,
+               .of_match_table = fsl_of_rio_rpn_ids,
+       },
        .probe = fsl_of_rio_rpn_probe,
 };
 
 
 }
 
 static struct of_platform_driver pmi_of_platform_driver = {
-       .match_table    = pmi_match,
        .probe          = pmi_of_probe,
        .remove         = pmi_of_remove,
-       .driver         = {
-               .name   = "pmi",
+       .driver = {
+               .name = "pmi",
+               .owner = THIS_MODULE,
+               .of_match_table = pmi_match,
        },
 };
 
 
 };
 
 static struct of_platform_driver qe_driver = {
-       .driver.name = "fsl-qe",
-       .match_table = qe_ids,
+       .driver = {
+               .name = "fsl-qe",
+               .owner = THIS_MODULE,
+               .of_match_table = qe_ids,
+       },
        .probe = qe_probe,
        .resume = qe_resume,
 };
 
 };
 
 static struct of_platform_driver ecpp_driver = {
-       .name                   = "ecpp",
-       .match_table            = ecpp_match,
+       .driver = {
+               .name = "ecpp",
+               .owner = THIS_MODULE,
+               .of_match_table = ecpp_match,
+       },
        .probe                  = ecpp_probe,
        .remove                 = __devexit_p(ecpp_remove),
 };
 
 MODULE_DEVICE_TABLE(of, apc_match);
 
 static struct of_platform_driver apc_driver = {
-       .name           = "apc",
-       .match_table    = apc_match,
+       .driver = {
+               .name = "apc",
+               .owner = THIS_MODULE,
+               .of_match_table = apc_match,
+       },
        .probe          = apc_probe,
 };
 
 
 }
 
 static struct of_platform_driver auxio_driver = {
-       .match_table    = auxio_match,
        .probe          = auxio_probe,
-       .driver         = {
-               .name   = "auxio",
+       .driver = {
+               .name = "auxio",
+               .owner = THIS_MODULE,
+               .of_match_table = auxio_match,
        },
 };
 
 
 };
 
 static struct of_platform_driver clock_board_driver = {
-       .match_table    = clock_board_match,
        .probe          = clock_board_probe,
-       .driver         = {
-               .name   = "clock_board",
+       .driver = {
+               .name = "clock_board",
+               .owner = THIS_MODULE,
+               .of_match_table = clock_board_match,
        },
 };
 
 };
 
 static struct of_platform_driver fhc_driver = {
-       .match_table    = fhc_match,
        .probe          = fhc_probe,
-       .driver         = {
-               .name   = "fhc",
+       .driver = {
+               .name = "fhc",
+               .owner = THIS_MODULE,
+               .of_match_table = fhc_match,
        },
 };
 
 
 MODULE_DEVICE_TABLE(of, us3mc_match);
 
 static struct of_platform_driver us3mc_driver = {
-       .name           = "us3mc",
-       .match_table    = us3mc_match,
+       .driver = {
+               .name = "us3mc",
+               .owner = THIS_MODULE,
+               .of_match_table = us3mc_match,
+       },
        .probe          = us3mc_probe,
        .remove         = __devexit_p(us3mc_remove),
 };
 
 };
 
 static struct of_platform_driver fire_driver = {
-       .name           = DRIVER_NAME,
-       .match_table    = fire_match,
+       .driver = {
+               .name = DRIVER_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = fire_match,
+       },
        .probe          = fire_probe,
 };
 
 
 };
 
 static struct of_platform_driver psycho_driver = {
-       .name           = DRIVER_NAME,
-       .match_table    = psycho_match,
+       .driver = {
+               .name = DRIVER_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = psycho_match,
+       },
        .probe          = psycho_probe,
 };
 
 
 };
 
 static struct of_platform_driver sabre_driver = {
-       .name           = DRIVER_NAME,
-       .match_table    = sabre_match,
+       .driver = {
+               .name = DRIVER_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = sabre_match,
+       },
        .probe          = sabre_probe,
 };
 
 
 };
 
 static struct of_platform_driver schizo_driver = {
-       .name           = DRIVER_NAME,
-       .match_table    = schizo_match,
+       .driver = {
+               .name = DRIVER_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = schizo_match,
+       },
        .probe          = schizo_probe,
 };
 
 
 };
 
 static struct of_platform_driver pci_sun4v_driver = {
-       .name           = DRIVER_NAME,
-       .match_table    = pci_sun4v_match,
+       .driver = {
+               .name = DRIVER_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = pci_sun4v_match,
+       },
        .probe          = pci_sun4v_probe,
 };
 
 
 MODULE_DEVICE_TABLE(of, pmc_match);
 
 static struct of_platform_driver pmc_driver = {
-       .name           = "pmc",
-       .match_table    = pmc_match,
+       .driver = {
+               .name = "pmc",
+               .owner = THIS_MODULE,
+               .of_match_table = pmc_match,
+       },
        .probe          = pmc_probe,
 };
 
 
 };
 
 static struct of_platform_driver power_driver = {
-       .match_table    = power_match,
        .probe          = power_probe,
-       .driver         = {
-               .name   = "power",
+       .driver = {
+               .name = "power",
+               .owner = THIS_MODULE,
+               .of_match_table = power_match,
        },
 };
 
 
 };
 
 static struct of_platform_driver clock_driver = {
-       .match_table    = clock_match,
        .probe          = clock_probe,
-       .driver         = {
-               .name   = "rtc",
+       .driver = {
+               .name = "rtc",
+               .owner = THIS_MODULE,
+               .of_match_table = clock_match,
        },
 };
 
 
 };
 
 static struct of_platform_driver rtc_driver = {
-       .match_table    = rtc_match,
        .probe          = rtc_probe,
-       .driver         = {
-               .name   = "rtc",
+       .driver = {
+               .name = "rtc",
+               .owner = THIS_MODULE,
+               .of_match_table = rtc_match,
        },
 };
 
 };
 
 static struct of_platform_driver bq4802_driver = {
-       .match_table    = bq4802_match,
        .probe          = bq4802_probe,
-       .driver         = {
-               .name   = "bq4802",
+       .driver = {
+               .name = "bq4802",
+               .owner = THIS_MODULE,
+               .of_match_table = bq4802_match,
        },
 };
 
 };
 
 static struct of_platform_driver mostek_driver = {
-       .match_table    = mostek_match,
        .probe          = mostek_probe,
-       .driver         = {
-               .name   = "mostek",
+       .driver = {
+               .name = "mostek",
+               .owner = THIS_MODULE,
+               .of_match_table = mostek_match,
        },
 };
 
 
 
 
 static struct of_platform_driver mpc52xx_ata_of_platform_driver = {
-       .owner          = THIS_MODULE,
-       .name           = DRV_NAME,
-       .match_table    = mpc52xx_ata_of_match,
        .probe          = mpc52xx_ata_probe,
        .remove         = mpc52xx_ata_remove,
 #ifdef CONFIG_PM
        .driver         = {
                .name   = DRV_NAME,
                .owner  = THIS_MODULE,
+               .of_match_table = mpc52xx_ata_of_match,
        },
 };
 
 
 MODULE_DEVICE_TABLE(of, pata_of_platform_match);
 
 static struct of_platform_driver pata_of_platform_driver = {
-       .name           = "pata_of_platform",
-       .match_table    = pata_of_platform_match,
+       .driver = {
+               .name = "pata_of_platform",
+               .owner = THIS_MODULE,
+               .of_match_table = pata_of_platform_match,
+       },
        .probe          = pata_of_platform_probe,
        .remove         = __devexit_p(pata_of_platform_remove),
 };
 
 MODULE_DEVICE_TABLE(of, fsl_sata_match);
 
 static struct of_platform_driver fsl_sata_driver = {
-       .name           = "fsl-sata",
-       .match_table    = fsl_sata_match,
+       .driver = {
+               .name = "fsl-sata",
+               .owner = THIS_MODULE,
+               .of_match_table = fsl_sata_match,
+       },
        .probe          = sata_fsl_probe,
        .remove         = sata_fsl_remove,
 #ifdef CONFIG_PM
 
 MODULE_DEVICE_TABLE(of, fore200e_sba_match);
 
 static struct of_platform_driver fore200e_sba_driver = {
-       .name           = "fore_200e",
-       .match_table    = fore200e_sba_match,
+       .driver = {
+               .name = "fore_200e",
+               .owner = THIS_MODULE,
+               .of_match_table = fore200e_sba_match,
+       },
        .probe          = fore200e_sba_probe,
        .remove         = __devexit_p(fore200e_sba_remove),
 };
 
 MODULE_DEVICE_TABLE(of, ace_of_match);
 
 static struct of_platform_driver ace_of_driver = {
-       .owner = THIS_MODULE,
-       .name = "xsysace",
-       .match_table = ace_of_match,
        .probe = ace_of_probe,
        .remove = __devexit_p(ace_of_remove),
        .driver = {
                .name = "xsysace",
+               .owner = THIS_MODULE,
+               .of_match_table = ace_of_match,
        },
 };
 
 
 MODULE_DEVICE_TABLE(of, n2rng_match);
 
 static struct of_platform_driver n2rng_driver = {
-       .name           = "n2rng",
-       .match_table    = n2rng_match,
+       .driver = {
+               .name = "n2rng",
+               .owner = THIS_MODULE,
+               .of_match_table = n2rng_match,
+       },
        .probe          = n2rng_probe,
        .remove         = __devexit_p(n2rng_remove),
 };
 
 };
 
 static struct of_platform_driver rng_driver = {
-       .name           = "pasemi-rng",
-       .match_table    = rng_match,
+       .driver = {
+               .name = "pasemi-rng",
+               .owner = THIS_MODULE,
+               .of_match_table = rng_match,
+       },
        .probe          = rng_probe,
        .remove         = rng_remove,
 };
 
 };
 
 static struct of_platform_driver ipmi_of_platform_driver = {
-       .name           = "ipmi",
-       .match_table    = ipmi_match,
+       .driver = {
+               .name = "ipmi",
+               .owner = THIS_MODULE,
+               .of_match_table = ipmi_match,
+       },
        .probe          = ipmi_of_probe,
        .remove         = __devexit_p(ipmi_of_remove),
 };
 
 MODULE_DEVICE_TABLE(of, hwicap_of_match);
 
 static struct of_platform_driver hwicap_of_driver = {
-       .owner = THIS_MODULE,
-       .name = DRIVER_NAME,
-       .match_table = hwicap_of_match,
        .probe = hwicap_of_probe,
        .remove = __devexit_p(hwicap_of_remove),
        .driver = {
                .name = DRIVER_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = hwicap_of_match,
        },
 };
 
 
 };
 
 static struct of_platform_driver crypto4xx_driver = {
-       .name           = "crypto4xx",
-       .match_table    = crypto4xx_match,
+       .driver = {
+               .name = "crypto4xx",
+               .owner = THIS_MODULE,
+               .of_match_table = crypto4xx_match,
+       },
        .probe          = crypto4xx_probe,
        .remove         = crypto4xx_remove,
 };
 
 MODULE_DEVICE_TABLE(of, talitos_match);
 
 static struct of_platform_driver talitos_driver = {
-       .name = "talitos",
-       .match_table = talitos_match,
+       .driver = {
+               .name = "talitos",
+               .owner = THIS_MODULE,
+               .of_match_table = talitos_match,
+       },
        .probe = talitos_probe,
        .remove = talitos_remove,
 };
 
 };
 
 static struct of_platform_driver fsldma_of_driver = {
-       .name           = "fsl-elo-dma",
-       .match_table    = fsldma_of_ids,
-       .probe          = fsldma_of_probe,
-       .remove         = fsldma_of_remove,
+       .driver = {
+               .name = "fsl-elo-dma",
+               .owner = THIS_MODULE,
+               .of_match_table = fsldma_of_ids,
+       },
+       .probe = fsldma_of_probe,
+       .remove = fsldma_of_remove,
 };
 
 /*----------------------------------------------------------------------------*/
 
 MODULE_DEVICE_TABLE(of, ppc440spe_adma_of_match);
 
 static struct of_platform_driver ppc440spe_adma_driver = {
-       .match_table = ppc440spe_adma_of_match,
        .probe = ppc440spe_adma_probe,
        .remove = __devexit_p(ppc440spe_adma_remove),
        .driver = {
                .name = "PPC440SP(E)-ADMA",
                .owner = THIS_MODULE,
+               .of_match_table = ppc440spe_adma_of_match,
        },
 };
 
 
 };
 
 static struct of_platform_driver mpc85xx_pci_err_driver = {
-       .owner = THIS_MODULE,
-       .name = "mpc85xx_pci_err",
-       .match_table = mpc85xx_pci_err_of_match,
        .probe = mpc85xx_pci_err_probe,
        .remove = __devexit_p(mpc85xx_pci_err_remove),
        .driver = {
-                  .name = "mpc85xx_pci_err",
-                  .owner = THIS_MODULE,
-                  },
+               .name = "mpc85xx_pci_err",
+               .owner = THIS_MODULE,
+               .of_match_table = mpc85xx_pci_err_of_match,
+       },
 };
 
 #endif                         /* CONFIG_PCI */
 };
 
 static struct of_platform_driver mpc85xx_l2_err_driver = {
-       .owner = THIS_MODULE,
-       .name = "mpc85xx_l2_err",
-       .match_table = mpc85xx_l2_err_of_match,
        .probe = mpc85xx_l2_err_probe,
        .remove = mpc85xx_l2_err_remove,
        .driver = {
-                  .name = "mpc85xx_l2_err",
-                  .owner = THIS_MODULE,
-                  },
+               .name = "mpc85xx_l2_err",
+               .owner = THIS_MODULE,
+               .of_match_table = mpc85xx_l2_err_of_match,
+       },
 };
 
 /**************************** MC Err device ***************************/
 };
 
 static struct of_platform_driver mpc85xx_mc_err_driver = {
-       .owner = THIS_MODULE,
-       .name = "mpc85xx_mc_err",
-       .match_table = mpc85xx_mc_err_of_match,
        .probe = mpc85xx_mc_err_probe,
        .remove = mpc85xx_mc_err_remove,
        .driver = {
-                  .name = "mpc85xx_mc_err",
-                  .owner = THIS_MODULE,
-                  },
+               .name = "mpc85xx_mc_err",
+               .owner = THIS_MODULE,
+               .of_match_table = mpc85xx_mc_err_of_match,
+       },
 };
 
 #ifdef CONFIG_MPC85xx
 
 };
 
 static struct of_platform_driver ppc4xx_edac_driver = {
-       .match_table            = ppc4xx_edac_match,
        .probe                  = ppc4xx_edac_probe,
        .remove                 = ppc4xx_edac_remove,
-       .driver                 = {
-               .owner  = THIS_MODULE,
-               .name   = PPC4XX_EDAC_MODULE_NAME
-       }
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = PPC4XX_EDAC_MODULE_NAME
+               .of_match_table = ppc4xx_edac_match,
+       },
 };
 
 /*
 
 MODULE_DEVICE_TABLE(of, env_match);
 
 static struct of_platform_driver env_driver = {
-       .name           = "ultra45_env",
-       .match_table    = env_match,
+       .driver = {
+               .name = "ultra45_env",
+               .owner = THIS_MODULE,
+               .of_match_table = env_match,
+       },
        .probe          = env_probe,
        .remove         = __devexit_p(env_remove),
 };
 
 MODULE_DEVICE_TABLE(of, cpm_i2c_match);
 
 static struct of_platform_driver cpm_i2c_driver = {
-       .match_table    = cpm_i2c_match,
        .probe          = cpm_i2c_probe,
        .remove         = __devexit_p(cpm_i2c_remove),
-       .driver         = {
-               .name   = "fsl-i2c-cpm",
-               .owner  = THIS_MODULE,
-       }
+       .driver = {
+               .name = "fsl-i2c-cpm",
+               .owner = THIS_MODULE,
+               .of_match_table = cpm_i2c_match,
+       },
 };
 
 static int __init cpm_i2c_init(void)
 
 };
 
 static struct of_platform_driver ibm_iic_driver = {
-       .name   = "ibm-iic",
-       .match_table = ibm_iic_match,
+       .driver = {
+               .name = "ibm-iic",
+               .owner = THIS_MODULE,
+               .of_match_table = ibm_iic_match,
+       },
        .probe  = iic_probe,
        .remove = __devexit_p(iic_remove),
 };
 
 
 /* Structure for a device driver */
 static struct of_platform_driver mpc_i2c_driver = {
-       .match_table    = mpc_i2c_of_match,
        .probe          = fsl_i2c_probe,
        .remove         = __devexit_p(fsl_i2c_remove),
-       .driver         = {
-               .owner  = THIS_MODULE,
-               .name   = DRV_NAME,
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = DRV_NAME,
+               .of_match_table = mpc_i2c_of_match,
        },
 };
 
 
 MODULE_DEVICE_TABLE(of, ehca_device_table);
 
 static struct of_platform_driver ehca_driver = {
-       .name        = "ehca",
-       .match_table = ehca_device_table,
        .probe       = ehca_probe,
        .remove      = ehca_remove,
-       .driver      = {
+       .driver = {
+               .name = "ehca",
+               .owner = THIS_MODULE,
                .groups = ehca_drv_attr_groups,
+               .of_match_table = ehca_device_table,
        },
 };
 
 
 };
 
 static struct of_platform_driver bbc_beep_driver = {
-       .name           = "bbcbeep",
-       .match_table    = bbc_beep_match,
+       .driver = {
+               .name = "bbcbeep",
+               .owner = THIS_MODULE,
+               .of_match_table = bbc_beep_match,
+       },
        .probe          = bbc_beep_probe,
        .remove         = __devexit_p(bbc_remove),
        .shutdown       = sparcspkr_shutdown,
 };
 
 static struct of_platform_driver grover_beep_driver = {
-       .name           = "groverbeep",
-       .match_table    = grover_beep_match,
+       .driver = {
+               .name = "groverbeep",
+               .owner = THIS_MODULE,
+               .of_match_table = grover_beep_match,
+       },
        .probe          = grover_beep_probe,
        .remove         = __devexit_p(grover_remove),
        .shutdown       = sparcspkr_shutdown,
 
 MODULE_DEVICE_TABLE(of, sparc_i8042_match);
 
 static struct of_platform_driver sparc_i8042_driver = {
-       .name           = "i8042",
-       .match_table    = sparc_i8042_match,
+       .driver = {
+               .name = "i8042",
+               .owner = THIS_MODULE,
+               .of_match_table = sparc_i8042_match,
+       },
        .probe          = sparc_i8042_probe,
        .remove         = __devexit_p(sparc_i8042_remove),
 };
 
 MODULE_DEVICE_TABLE(of, xps2_of_match);
 
 static struct of_platform_driver xps2_of_driver = {
-       .name           = DRIVER_NAME,
-       .match_table    = xps2_of_match,
+       .driver = {
+               .name = DRIVER_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = xps2_of_match,
+       },
        .probe          = xps2_of_probe,
        .remove         = __devexit_p(xps2_of_remove),
 };
 
        .driver = {
                .name = "of_gpio_leds",
                .owner = THIS_MODULE,
+               .of_match_table = of_gpio_leds_match,
        },
-       .match_table = of_gpio_leds_match,
        .probe = of_gpio_leds_probe,
        .remove = __devexit_p(of_gpio_leds_remove),
 };
 
 
 static struct of_platform_driver smu_of_platform_driver =
 {
-       .name           = "smu",
-       .match_table    = smu_platform_match,
+       .driver = {
+               .name = "smu",
+               .owner = THIS_MODULE,
+               .of_match_table = smu_platform_match,
+       },
        .probe          = smu_platform_probe,
 };
 
 
 
 static struct of_platform_driver fcu_of_platform_driver = 
 {
-       .name           = "temperature",
-       .match_table    = fcu_match,
+       .driver = {
+               .name = "temperature",
+               .owner = THIS_MODULE,
+               .of_match_table = fcu_match,
+       },
        .probe          = fcu_of_probe,
        .remove         = fcu_of_remove
 };
 
 };
 
 static struct of_platform_driver therm_of_driver = {
-       .name           = "temperature",
-       .match_table    = therm_of_match,
+       .driver = {
+               .name = "temperature",
+               .owner = THIS_MODULE,
+               .of_match_table = therm_of_match,
+       },
        .probe          = therm_of_probe,
        .remove         = therm_of_remove,
 };
 
 MODULE_DEVICE_TABLE(of, sdhci_of_match);
 
 static struct of_platform_driver sdhci_of_driver = {
-       .driver.name = "sdhci-of",
-       .match_table = sdhci_of_match,
+       .driver = {
+               .name = "sdhci-of",
+               .owner = THIS_MODULE,
+               .of_match_table = sdhci_of_match,
+       },
        .probe = sdhci_of_probe,
        .remove = __devexit_p(sdhci_of_remove),
        .suspend = sdhci_of_suspend,
 
 MODULE_DEVICE_TABLE(of, of_flash_match);
 
 static struct of_platform_driver of_flash_driver = {
-       .name           = "of-flash",
-       .match_table    = of_flash_match,
+       .driver = {
+               .name = "of-flash",
+               .owner = THIS_MODULE,
+               .of_match_table = of_flash_match,
+       },
        .probe          = of_flash_probe,
        .remove         = of_flash_remove,
 };
 
 MODULE_DEVICE_TABLE(of, uflash_match);
 
 static struct of_platform_driver uflash_driver = {
-       .name           = DRIVER_NAME,
-       .match_table    = uflash_match,
+       .driver = {
+               .name = DRIVER_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = uflash_match,
+       },
        .probe          = uflash_probe,
        .remove         = __devexit_p(uflash_remove),
 };
 
 
 static struct of_platform_driver fsl_elbc_ctrl_driver = {
        .driver = {
-               .name   = "fsl-elbc",
+               .name = "fsl-elbc",
+               .owner = THIS_MODULE,
+               .of_match_table = fsl_elbc_match,
        },
-       .match_table = fsl_elbc_match,
        .probe = fsl_elbc_ctrl_probe,
        .remove = fsl_elbc_ctrl_remove,
 };
 
 MODULE_DEVICE_TABLE(of, of_fun_match);
 
 static struct of_platform_driver of_fun_driver = {
-       .name           = "fsl,upm-nand",
-       .match_table    = of_fun_match,
+       .driver = {
+               .name = "fsl,upm-nand",
+               .owner = THIS_MODULE,
+               .of_match_table = of_fun_match,
+       },
        .probe          = fun_probe,
        .remove         = __devexit_p(fun_remove),
 };
 
 
 static struct of_platform_driver ndfc_driver = {
        .driver = {
-               .name   = "ndfc",
+               .name = "ndfc",
+               .owner = THIS_MODULE,
+               .of_match_table = ndfc_match,
        },
-       .match_table = ndfc_match,
        .probe = ndfc_probe,
        .remove = __devexit_p(ndfc_remove),
 };
 
 
 static struct of_platform_driver pasemi_nand_driver =
 {
-       .name           = (char*)driver_name,
-       .match_table    = pasemi_nand_match,
+       .driver = {
+               .name = (char*)driver_name,
+               .owner = THIS_MODULE,
+               .of_match_table = pasemi_nand_match,
+       },
        .probe          = pasemi_nand_probe,
        .remove         = pasemi_nand_remove,
 };
 
 MODULE_DEVICE_TABLE(of, socrates_nand_match);
 
 static struct of_platform_driver socrates_nand_driver = {
-       .name           = "socrates_nand",
-       .match_table    = socrates_nand_match,
+       .driver = {
+               .name = "socrates_nand",
+               .owner = THIS_MODULE,
+               .of_match_table = socrates_nand_match,
+       },
        .probe          = socrates_nand_probe,
        .remove         = __devexit_p(socrates_nand_remove),
 };
 
 };
 
 static struct of_platform_driver mpc5xxx_can_driver = {
-       .owner = THIS_MODULE,
-       .name = "mpc5xxx_can",
+       .driver = {
+               .name = "mpc5xxx_can",
+               .owner = THIS_MODULE,
+               .of_match_table = mpc5xxx_can_table,
+       },
        .probe = mpc5xxx_can_probe,
        .remove = __devexit_p(mpc5xxx_can_remove),
 #ifdef CONFIG_PM
        .suspend = mpc5xxx_can_suspend,
        .resume = mpc5xxx_can_resume,
 #endif
-       .match_table = mpc5xxx_can_table,
 };
 
 static int __init mpc5xxx_can_init(void)
 
 MODULE_DEVICE_TABLE(of, sja1000_ofp_table);
 
 static struct of_platform_driver sja1000_ofp_driver = {
-       .owner = THIS_MODULE,
-       .name = DRV_NAME,
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = DRV_NAME,
+               .of_match_table = sja1000_ofp_table,
+       },
        .probe = sja1000_ofp_probe,
        .remove = __devexit_p(sja1000_ofp_remove),
-       .match_table = sja1000_ofp_table,
 };
 
 static int __init sja1000_ofp_init(void)
 
 MODULE_DEVICE_TABLE(of, ehea_device_table);
 
 static struct of_platform_driver ehea_driver = {
-       .name = "ehea",
-       .match_table = ehea_device_table,
+       .driver = {
+               .name = "ehea",
+               .owner = THIS_MODULE,
+               .of_match_table = ehea_device_table,
+       },
        .probe = ehea_probe_adapter,
        .remove = ehea_remove,
 };
 
 MODULE_DEVICE_TABLE(of, mpc52xx_fec_match);
 
 static struct of_platform_driver mpc52xx_fec_driver = {
-       .owner          = THIS_MODULE,
-       .name           = DRIVER_NAME,
-       .match_table    = mpc52xx_fec_match,
+       .driver = {
+               .name = DRIVER_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = mpc52xx_fec_match,
+       },
        .probe          = mpc52xx_fec_probe,
        .remove         = mpc52xx_fec_remove,
 #ifdef CONFIG_PM
 
 MODULE_DEVICE_TABLE(of, mpc52xx_fec_mdio_match);
 
 struct of_platform_driver mpc52xx_fec_mdio_driver = {
-       .name = "mpc5200b-fec-phy",
+       .driver = {
+               .name = "mpc5200b-fec-phy",
+               .owner = THIS_MODULE,
+               .of_match_table = mpc52xx_fec_mdio_match,
+       },
        .probe = mpc52xx_fec_mdio_probe,
        .remove = mpc52xx_fec_mdio_remove,
-       .match_table = mpc52xx_fec_mdio_match,
 };
 
 /* let fec driver call it, since this has to be registered before it */
 
 MODULE_DEVICE_TABLE(of, fs_enet_match);
 
 static struct of_platform_driver fs_enet_driver = {
-       .name   = "fs_enet",
-       .match_table = fs_enet_match,
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "fs_enet",
+               .of_match_table = fs_enet_match,
+       },
        .probe = fs_enet_probe,
        .remove = fs_enet_remove,
 };
 
 MODULE_DEVICE_TABLE(of, fs_enet_mdio_bb_match);
 
 static struct of_platform_driver fs_enet_bb_mdio_driver = {
-       .name = "fsl-bb-mdio",
-       .match_table = fs_enet_mdio_bb_match,
+       .driver = {
+               .name = "fsl-bb-mdio",
+               .owner = THIS_MODULE,
+               .of_match_table = fs_enet_mdio_bb_match,
+       },
        .probe = fs_enet_mdio_probe,
        .remove = fs_enet_mdio_remove,
 };
 
 MODULE_DEVICE_TABLE(of, fs_enet_mdio_fec_match);
 
 static struct of_platform_driver fs_enet_fec_mdio_driver = {
-       .name = "fsl-fec-mdio",
-       .match_table = fs_enet_mdio_fec_match,
+       .driver = {
+               .name = "fsl-fec-mdio",
+               .owner = THIS_MODULE,
+               .of_match_table = fs_enet_mdio_fec_match,
+       },
        .probe = fs_enet_mdio_probe,
        .remove = fs_enet_mdio_remove,
 };
 
 MODULE_DEVICE_TABLE(of, fsl_pq_mdio_match);
 
 static struct of_platform_driver fsl_pq_mdio_driver = {
-       .name = "fsl-pq_mdio",
+       .driver = {
+               .name = "fsl-pq_mdio",
+               .owner = THIS_MODULE,
+               .of_match_table = fsl_pq_mdio_match,
+       },
        .probe = fsl_pq_mdio_probe,
        .remove = fsl_pq_mdio_remove,
-       .match_table = fsl_pq_mdio_match,
 };
 
 int __init fsl_pq_mdio_init(void)
 
 
 /* Structure for a device driver */
 static struct of_platform_driver gfar_driver = {
-       .name = "fsl-gianfar",
-       .match_table = gfar_match,
-
+       .driver = {
+               .name = "fsl-gianfar",
+               .owner = THIS_MODULE,
+               .pm = GFAR_PM_OPS,
+               .of_match_table = gfar_match,
+       },
        .probe = gfar_probe,
        .remove = gfar_remove,
        .suspend = gfar_legacy_suspend,
        .resume = gfar_legacy_resume,
-       .driver.pm = GFAR_PM_OPS,
 };
 
 static int __init gfar_init(void)
 
 MODULE_DEVICE_TABLE(of, emac_match);
 
 static struct of_platform_driver emac_driver = {
-       .name = "emac",
-       .match_table = emac_match,
-
+       .driver = {
+               .name = "emac",
+               .owner = THIS_MODULE,
+               .of_match_table = emac_match,
+       },
        .probe = emac_probe,
        .remove = emac_remove,
 };
 
 };
 
 static struct of_platform_driver mal_of_driver = {
-       .name = "mcmal",
-       .match_table = mal_platform_match,
-
+       .driver = {
+               .name = "mcmal",
+               .owner = THIS_MODULE,
+               .of_match_table = mal_platform_match,
+       },
        .probe = mal_probe,
        .remove = mal_remove,
 };
 
 };
 
 static struct of_platform_driver rgmii_driver = {
-       .name = "emac-rgmii",
-       .match_table = rgmii_match,
-
+       .driver = {
+               .name = "emac-rgmii",
+               .owner = THIS_MODULE,
+               .of_match_table = rgmii_match,
+       },
        .probe = rgmii_probe,
        .remove = rgmii_remove,
 };
 
 };
 
 static struct of_platform_driver tah_driver = {
-       .name = "emac-tah",
-       .match_table = tah_match,
-
+       .driver = {
+               .name = "emac-tah",
+               .owner = THIS_MODULE,
+               .of_match_table = tah_match,
+       },
        .probe = tah_probe,
        .remove = tah_remove,
 };
 
 };
 
 static struct of_platform_driver zmii_driver = {
-       .name = "emac-zmii",
-       .match_table = zmii_match,
-
+       .driver = {
+               .name = "emac-zmii",
+               .owner = THIS_MODULE,
+               .of_match_table = zmii_match,
+       },
        .probe = zmii_probe,
        .remove = zmii_remove,
 };
 
 MODULE_DEVICE_TABLE(of, temac_of_match);
 
 static struct of_platform_driver temac_of_driver = {
-       .match_table = temac_of_match,
        .probe = temac_of_probe,
        .remove = __devexit_p(temac_of_remove),
        .driver = {
                .owner = THIS_MODULE,
                .name = "xilinx_temac",
+               .of_match_table = temac_of_match,
        },
 };
 
 
 MODULE_DEVICE_TABLE(of, myri_sbus_match);
 
 static struct of_platform_driver myri_sbus_driver = {
-       .name           = "myri",
-       .match_table    = myri_sbus_match,
+       .driver = {
+               .name = "myri",
+               .owner = THIS_MODULE,
+               .of_match_table = myri_sbus_match,
+       },
        .probe          = myri_sbus_probe,
        .remove         = __devexit_p(myri_sbus_remove),
 };
 
 MODULE_DEVICE_TABLE(of, niu_match);
 
 static struct of_platform_driver niu_of_driver = {
-       .name           = "niu",
-       .match_table    = niu_match,
+       .driver = {
+               .name = "niu",
+               .owner = THIS_MODULE,
+               .of_match_table = niu_match,
+       },
        .probe          = niu_of_probe,
        .remove         = __devexit_p(niu_of_remove),
 };
 
 MODULE_DEVICE_TABLE(of, mdio_ofgpio_match);
 
 static struct of_platform_driver mdio_ofgpio_driver = {
-       .name = "mdio-gpio",
-       .match_table = mdio_ofgpio_match,
+       .driver = {
+               .name = "mdio-gpio",
+               .owner = THIS_MODULE,
+               .of_match_table = mdio_ofgpio_match,
+       },
        .probe = mdio_ofgpio_probe,
        .remove = __devexit_p(mdio_ofgpio_remove),
 };
 
 MODULE_DEVICE_TABLE(of, bigmac_sbus_match);
 
 static struct of_platform_driver bigmac_sbus_driver = {
-       .name           = "sunbmac",
-       .match_table    = bigmac_sbus_match,
+       .driver = {
+               .name = "sunbmac",
+               .owner = THIS_MODULE,
+               .of_match_table = bigmac_sbus_match,
+       },
        .probe          = bigmac_sbus_probe,
        .remove         = __devexit_p(bigmac_sbus_remove),
 };
 
 MODULE_DEVICE_TABLE(of, hme_sbus_match);
 
 static struct of_platform_driver hme_sbus_driver = {
-       .name           = "hme",
-       .match_table    = hme_sbus_match,
+       .driver = {
+               .name = "hme",
+               .owner = THIS_MODULE,
+               .of_match_table = hme_sbus_match,
+       },
        .probe          = hme_sbus_probe,
        .remove         = __devexit_p(hme_sbus_remove),
 };
 
 MODULE_DEVICE_TABLE(of, sunlance_sbus_match);
 
 static struct of_platform_driver sunlance_sbus_driver = {
-       .name           = "sunlance",
-       .match_table    = sunlance_sbus_match,
+       .driver = {
+               .name = "sunlance",
+               .owner = THIS_MODULE,
+               .of_match_table = sunlance_sbus_match,
+       },
        .probe          = sunlance_sbus_probe,
        .remove         = __devexit_p(sunlance_sbus_remove),
 };
 
 MODULE_DEVICE_TABLE(of, qec_sbus_match);
 
 static struct of_platform_driver qec_sbus_driver = {
-       .name           = "qec",
-       .match_table    = qec_sbus_match,
+       .driver = {
+               .name = "qec",
+               .owner = THIS_MODULE,
+               .of_match_table = qec_sbus_match,
+       },
        .probe          = qec_sbus_probe,
        .remove         = __devexit_p(qec_sbus_remove),
 };
 
 MODULE_DEVICE_TABLE(of, ucc_geth_match);
 
 static struct of_platform_driver ucc_geth_driver = {
-       .name           = DRV_NAME,
-       .match_table    = ucc_geth_match,
+       .driver = {
+               .name = DRV_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = ucc_geth_match,
+       },
        .probe          = ucc_geth_probe,
        .remove         = ucc_geth_remove,
        .suspend        = ucc_geth_suspend,
 
 MODULE_DEVICE_TABLE(of, xemaclite_of_match);
 
 static struct of_platform_driver xemaclite_of_driver = {
-       .name           = DRIVER_NAME,
-       .match_table    = xemaclite_of_match,
+       .driver = {
+               .name = DRIVER_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = xemaclite_of_match,
+       },
        .probe          = xemaclite_of_probe,
        .remove         = __devexit_p(xemaclite_of_remove),
 };
 
 
 int of_register_driver(struct of_platform_driver *drv, struct bus_type *bus)
 {
-       /* initialize common driver fields */
-       if (!drv->driver.name)
-               drv->driver.name = drv->name;
-       if (!drv->driver.owner)
-               drv->driver.owner = drv->owner;
-       if (!drv->driver.of_match_table)
-               drv->driver.of_match_table = drv->match_table;
        drv->driver.bus = bus;
 
        /* register with core */
 
 MODULE_DEVICE_TABLE(of, bpp_match);
 
 static struct of_platform_driver bpp_sbus_driver = {
-       .name           = "bpp",
-       .match_table    = bpp_match,
+       .driver = {
+               .name = "bpp",
+               .owner = THIS_MODULE,
+               .of_match_table = bpp_match,
+       },
        .probe          = bpp_probe,
        .remove         = __devexit_p(bpp_remove),
 };
 
 MODULE_DEVICE_TABLE(of, electra_cf_match);
 
 static struct of_platform_driver electra_cf_driver = {
-       .name      = (char *)driver_name,
-       .match_table    = electra_cf_match,
+       .driver = {
+               .name = (char *)driver_name,
+               .owner = THIS_MODULE,
+               .of_match_table = electra_cf_match,
+       },
        .probe    = electra_cf_probe,
        .remove   = electra_cf_remove,
 };
 
 MODULE_DEVICE_TABLE(of, m8xx_pcmcia_match);
 
 static struct of_platform_driver m8xx_pcmcia_driver = {
-       .name = driver_name,
-       .match_table = m8xx_pcmcia_match,
+       .driver = {
+               .name = driver_name,
+               .owner = THIS_MODULE,
+               .match_table = m8xx_pcmcia_match,
+       },
        .probe = m8xx_probe,
        .remove = m8xx_remove,
 };
 
 MODULE_DEVICE_TABLE(of, bbc_i2c_match);
 
 static struct of_platform_driver bbc_i2c_driver = {
-       .name           = "bbc_i2c",
-       .match_table    = bbc_i2c_match,
+       .driver = {
+               .name = "bbc_i2c",
+               .owner = THIS_MODULE,
+               .of_match_table = bbc_i2c_match,
+       },
        .probe          = bbc_i2c_probe,
        .remove         = __devexit_p(bbc_i2c_remove),
 };
 
 MODULE_DEVICE_TABLE(of, d7s_match);
 
 static struct of_platform_driver d7s_driver = {
-       .name           = DRIVER_NAME,
-       .match_table    = d7s_match,
+       .driver = {
+               .name = DRIVER_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = d7s_match,
+       },
        .probe          = d7s_probe,
        .remove         = __devexit_p(d7s_remove),
 };
 
 MODULE_DEVICE_TABLE(of, envctrl_match);
 
 static struct of_platform_driver envctrl_driver = {
-       .name           = DRIVER_NAME,
-       .match_table    = envctrl_match,
+       .driver = {
+               .name = DRIVER_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = envctrl_match,
+       },
        .probe          = envctrl_probe,
        .remove         = __devexit_p(envctrl_remove),
 };
 
 MODULE_DEVICE_TABLE(of, flash_match);
 
 static struct of_platform_driver flash_driver = {
-       .name           = "flash",
-       .match_table    = flash_match,
+       .driver = {
+               .name = "flash",
+               .owner = THIS_MODULE,
+               .of_match_table = flash_match,
+       },
        .probe          = flash_probe,
        .remove         = __devexit_p(flash_remove),
 };
 
 MODULE_DEVICE_TABLE(of, uctrl_match);
 
 static struct of_platform_driver uctrl_driver = {
-       .name           = "uctrl",
-       .match_table    = uctrl_match,
+       .driver = {
+               .name = "uctrl",
+               .owner = THIS_MODULE,
+               .of_match_table = uctrl_match,
+       },
        .probe          = uctrl_probe,
        .remove         = __devexit_p(uctrl_remove),
 };
 
 MODULE_DEVICE_TABLE(of, qpti_match);
 
 static struct of_platform_driver qpti_sbus_driver = {
-       .name           = "qpti",
-       .match_table    = qpti_match,
+       .driver = {
+               .name = "qpti",
+               .owner = THIS_MODULE,
+               .of_match_table = qpti_match,
+       },
        .probe          = qpti_sbus_probe,
        .remove         = __devexit_p(qpti_sbus_remove),
 };
 
 MODULE_DEVICE_TABLE(of, esp_match);
 
 static struct of_platform_driver esp_sbus_driver = {
-       .name           = "esp",
-       .match_table    = esp_match,
+       .driver = {
+               .name = "esp",
+               .owner = THIS_MODULE,
+               .of_match_table = esp_match,
+       },
        .probe          = esp_sbus_probe,
        .remove         = __devexit_p(esp_sbus_remove),
 };
 
 };
 
 static struct of_platform_driver grlib_apbuart_of_driver = {
-       .match_table = apbuart_match,
        .probe = apbuart_probe,
        .driver = {
-                  .owner = THIS_MODULE,
-                  .name = "grlib-apbuart",
-                  },
+               .owner = THIS_MODULE,
+               .name = "grlib-apbuart",
+               .of_match_table = apbuart_match,
+       },
 };
 
 
 
 };
 
 static struct of_platform_driver cpm_uart_driver = {
-       .name = "cpm_uart",
-       .match_table = cpm_uart_match,
+       .driver = {
+               .name = "cpm_uart",
+               .owner = THIS_MODULE,
+               .of_match_table = cpm_uart_match,
+       },
        .probe = cpm_uart_probe,
        .remove = cpm_uart_remove,
  };
 
 MODULE_DEVICE_TABLE(of, mpc52xx_uart_of_match);
 
 static struct of_platform_driver mpc52xx_uart_of_driver = {
-       .match_table    = mpc52xx_uart_of_match,
        .probe          = mpc52xx_uart_of_probe,
        .remove         = mpc52xx_uart_of_remove,
 #ifdef CONFIG_PM
        .suspend        = mpc52xx_uart_of_suspend,
        .resume         = mpc52xx_uart_of_resume,
 #endif
-       .driver         = {
-               .name   = "mpc52xx-psc-uart",
+       .driver = {
+               .name = "mpc52xx-psc-uart",
+               .owner = THIS_MODULE,
+               .of_match_table = mpc52xx_uart_of_match,
        },
 };
 
 
 };
 
 static struct of_platform_driver of_platform_serial_driver = {
-       .owner = THIS_MODULE,
-       .name = "of_serial",
+       .driver = {
+               .name = "of_serial",
+               .owner = THIS_MODULE,
+               .of_match_table = of_platform_serial_table,
+       },
        .probe = of_platform_serial_probe,
        .remove = of_platform_serial_remove,
-       .match_table = of_platform_serial_table,
 };
 
 static int __init of_platform_serial_init(void)
 
 MODULE_DEVICE_TABLE(of, hv_match);
 
 static struct of_platform_driver hv_driver = {
-       .name           = "hv",
-       .match_table    = hv_match,
+       .driver = {
+               .name = "hv",
+               .owner = THIS_MODULE,
+               .of_match_table = hv_match,
+       },
        .probe          = hv_probe,
        .remove         = __devexit_p(hv_remove),
 };
 
 MODULE_DEVICE_TABLE(of, sab_match);
 
 static struct of_platform_driver sab_driver = {
-       .name           = "sab",
-       .match_table    = sab_match,
+       .driver = {
+               .name = "sab",
+               .owner = THIS_MODULE,
+               .of_match_table = sab_match,
+       },
        .probe          = sab_probe,
        .remove         = __devexit_p(sab_remove),
 };
 
 MODULE_DEVICE_TABLE(of, su_match);
 
 static struct of_platform_driver su_driver = {
-       .name           = "su",
-       .match_table    = su_match,
+       .driver = {
+               .name = "su",
+               .owner = THIS_MODULE,
+               .of_match_table = su_match,
+       },
        .probe          = su_probe,
        .remove         = __devexit_p(su_remove),
 };
 
 MODULE_DEVICE_TABLE(of, zs_match);
 
 static struct of_platform_driver zs_driver = {
-       .name           = "zs",
-       .match_table    = zs_match,
+       .driver = {
+               .name = "zs",
+               .owner = THIS_MODULE,
+               .of_match_table = zs_match,
+       },
        .probe          = zs_probe,
        .remove         = __devexit_p(zs_remove),
 };
 
 }
 
 static struct of_platform_driver ulite_of_driver = {
-       .owner = THIS_MODULE,
-       .name = "uartlite",
-       .match_table = ulite_of_match,
        .probe = ulite_of_probe,
        .remove = __devexit_p(ulite_of_remove),
        .driver = {
                .name = "uartlite",
+               .owner = THIS_MODULE,
+               .of_match_table = ulite_of_match,
        },
 };
 
 
 MODULE_DEVICE_TABLE(of, ucc_uart_match);
 
 static struct of_platform_driver ucc_uart_of_driver = {
-       .owner          = THIS_MODULE,
-       .name           = "ucc_uart",
-       .match_table    = ucc_uart_match,
+       .driver = {
+               .name = "ucc_uart",
+               .owner = THIS_MODULE,
+               .of_match_table    = ucc_uart_match,
+       },
        .probe          = ucc_uart_probe,
        .remove         = ucc_uart_remove,
 };
 
 MODULE_DEVICE_TABLE(of, mpc52xx_psc_spi_of_match);
 
 static struct of_platform_driver mpc52xx_psc_spi_of_driver = {
-       .owner = THIS_MODULE,
-       .name = "mpc52xx-psc-spi",
-       .match_table = mpc52xx_psc_spi_of_match,
        .probe = mpc52xx_psc_spi_of_probe,
        .remove = __exit_p(mpc52xx_psc_spi_of_remove),
        .driver = {
                .name = "mpc52xx-psc-spi",
                .owner = THIS_MODULE,
+               .of_match_table = mpc52xx_psc_spi_of_match,
        },
 };
 
 
 MODULE_DEVICE_TABLE(of, mpc52xx_spi_match);
 
 static struct of_platform_driver mpc52xx_spi_of_driver = {
-       .owner = THIS_MODULE,
-       .name = "mpc52xx-spi",
-       .match_table = mpc52xx_spi_match,
+       .driver = {
+               .name = "mpc52xx-spi",
+               .owner = THIS_MODULE,
+               .of_match_table = mpc52xx_spi_match,
+       },
        .probe = mpc52xx_spi_probe,
        .remove = __exit_p(mpc52xx_spi_remove),
 };
 
 MODULE_DEVICE_TABLE(of, of_mpc8xxx_spi_match);
 
 static struct of_platform_driver of_mpc8xxx_spi_driver = {
-       .name           = "mpc8xxx_spi",
-       .match_table    = of_mpc8xxx_spi_match,
+       .driver = {
+               .name = "mpc8xxx_spi",
+               .owner = THIS_MODULE,
+               .of_match_table = of_mpc8xxx_spi_match,
+       },
        .probe          = of_mpc8xxx_spi_probe,
        .remove         = __devexit_p(of_mpc8xxx_spi_remove),
 };
 
 MODULE_DEVICE_TABLE(of, spi_ppc4xx_of_match);
 
 static struct of_platform_driver spi_ppc4xx_of_driver = {
-       .match_table = spi_ppc4xx_of_match,
        .probe = spi_ppc4xx_of_probe,
        .remove = __exit_p(spi_ppc4xx_of_remove),
        .driver = {
                .name = DRIVER_NAME,
                .owner = THIS_MODULE,
+               .of_match_table = spi_ppc4xx_of_match,
        },
 };
 
 
 MODULE_DEVICE_TABLE(of, xilinx_spi_of_match);
 
 static struct of_platform_driver xilinx_spi_of_driver = {
-       .match_table = xilinx_spi_of_match,
        .probe = xilinx_spi_of_probe,
        .remove = __exit_p(xilinx_spi_of_remove),
        .driver = {
                .name = "xilinx-xps-spi",
                .owner = THIS_MODULE,
+               .of_match_table = xilinx_spi_of_match,
        },
 };
 
 
 MODULE_DEVICE_TABLE(of, qe_udc_match);
 
 static struct of_platform_driver udc_driver = {
-       .name           = (char *)driver_name,
-       .match_table    = qe_udc_match,
+       .driver = {
+               .name = (char *)driver_name,
+               .owner = THIS_MODULE,
+               .of_match_table = qe_udc_match,
+       },
        .probe          = qe_udc_probe,
        .remove         = __devexit_p(qe_udc_remove),
 #ifdef CONFIG_PM
 
 
 
 static struct of_platform_driver ehci_hcd_ppc_of_driver = {
-       .name           = "ppc-of-ehci",
-       .match_table    = ehci_hcd_ppc_of_match,
        .probe          = ehci_hcd_ppc_of_probe,
        .remove         = ehci_hcd_ppc_of_remove,
        .shutdown       = ehci_hcd_ppc_of_shutdown,
-       .driver         = {
-               .name   = "ppc-of-ehci",
-               .owner  = THIS_MODULE,
+       .driver = {
+               .name = "ppc-of-ehci",
+               .owner = THIS_MODULE,
+               .of_match_table = ehci_hcd_ppc_of_match,
        },
 };
 
 MODULE_DEVICE_TABLE(of, ehci_hcd_xilinx_of_match);
 
 static struct of_platform_driver ehci_hcd_xilinx_of_driver = {
-       .name           = "xilinx-of-ehci",
-       .match_table    = ehci_hcd_xilinx_of_match,
        .probe          = ehci_hcd_xilinx_of_probe,
        .remove         = ehci_hcd_xilinx_of_remove,
        .shutdown       = ehci_hcd_xilinx_of_shutdown,
-       .driver         = {
-               .name   = "xilinx-of-ehci",
-               .owner  = THIS_MODULE,
+       .driver = {
+               .name = "xilinx-of-ehci",
+               .owner = THIS_MODULE,
+               .of_match_table = ehci_hcd_xilinx_of_match,
        },
 };
 
 MODULE_DEVICE_TABLE(of, of_fhci_match);
 
 static struct of_platform_driver of_fhci_driver = {
-       .name           = "fsl,usb-fhci",
-       .match_table    = of_fhci_match,
+       .driver = {
+               .name = "fsl,usb-fhci",
+               .owner = THIS_MODULE,
+               .of_match_table = of_fhci_match,
+       },
        .probe          = of_fhci_probe,
        .remove         = __devexit_p(of_fhci_remove),
 };
 
 MODULE_DEVICE_TABLE(of, of_isp1760_match);
 
 static struct of_platform_driver isp1760_of_driver = {
-       .name           = "nxp-isp1760",
-       .match_table    = of_isp1760_match,
+       .driver = {
+               .name = "nxp-isp1760",
+               .owner = THIS_MODULE,
+               .of_match_table = of_isp1760_match,
+       },
        .probe          = of_isp1760_probe,
        .remove         = of_isp1760_remove,
 };
 
 
 
 static struct of_platform_driver ohci_hcd_ppc_of_driver = {
-       .name           = "ppc-of-ohci",
-       .match_table    = ohci_hcd_ppc_of_match,
        .probe          = ohci_hcd_ppc_of_probe,
        .remove         = ohci_hcd_ppc_of_remove,
        .shutdown       = ohci_hcd_ppc_of_shutdown,
-#ifdef CONFIG_PM
-       /*.suspend      = ohci_hcd_ppc_soc_drv_suspend,*/
-       /*.resume       = ohci_hcd_ppc_soc_drv_resume,*/
-#endif
-       .driver         = {
-               .name   = "ppc-of-ohci",
-               .owner  = THIS_MODULE,
+       .driver = {
+               .name = "ppc-of-ohci",
+               .owner = THIS_MODULE,
+               .of_match_table = ohci_hcd_ppc_of_match,
        },
 };
 
 
 MODULE_DEVICE_TABLE(of, bw2_match);
 
 static struct of_platform_driver bw2_driver = {
-       .name           = "bw2",
-       .match_table    = bw2_match,
+       .driver = {
+               .name = "bw2",
+               .owner = THIS_MODULE,
+               .of_match_table = bw2_match,
+       },
        .probe          = bw2_probe,
        .remove         = __devexit_p(bw2_remove),
 };
 
 MODULE_DEVICE_TABLE(of, cg14_match);
 
 static struct of_platform_driver cg14_driver = {
-       .name           = "cg14",
-       .match_table    = cg14_match,
+       .driver = {
+               .name = "cg14",
+               .owner = THIS_MODULE,
+               .of_match_table = cg14_match,
+       },
        .probe          = cg14_probe,
        .remove         = __devexit_p(cg14_remove),
 };
 
 MODULE_DEVICE_TABLE(of, cg3_match);
 
 static struct of_platform_driver cg3_driver = {
-       .name           = "cg3",
-       .match_table    = cg3_match,
+       .driver = {
+               .name = "cg3",
+               .owner = THIS_MODULE,
+               .of_match_table = cg3_match,
+       },
        .probe          = cg3_probe,
        .remove         = __devexit_p(cg3_remove),
 };
 
 MODULE_DEVICE_TABLE(of, cg6_match);
 
 static struct of_platform_driver cg6_driver = {
-       .name           = "cg6",
-       .match_table    = cg6_match,
+       .driver = {
+               .name = "cg6",
+               .owner = THIS_MODULE,
+               .of_match_table = cg6_match,
+       },
        .probe          = cg6_probe,
        .remove         = __devexit_p(cg6_remove),
 };
 
 MODULE_DEVICE_TABLE(of, ffb_match);
 
 static struct of_platform_driver ffb_driver = {
-       .name           = "ffb",
-       .match_table    = ffb_match,
+       .driver = {
+               .name = "ffb",
+               .owner = THIS_MODULE,
+               .of_match_table = ffb_match,
+       },
        .probe          = ffb_probe,
        .remove         = __devexit_p(ffb_remove),
 };
 
 MODULE_DEVICE_TABLE(of, fsl_diu_match);
 
 static struct of_platform_driver fsl_diu_driver = {
-       .owner          = THIS_MODULE,
-       .name           = "fsl_diu",
-       .match_table    = fsl_diu_match,
+       .driver = {
+               .name = "fsl_diu",
+               .owner = THIS_MODULE,
+               .of_match_table = fsl_diu_match,
+       },
        .probe          = fsl_diu_probe,
        .remove         = fsl_diu_remove,
        .suspend        = fsl_diu_suspend,
 
 MODULE_DEVICE_TABLE(of, leo_match);
 
 static struct of_platform_driver leo_driver = {
-       .name           = "leo",
-       .match_table    = leo_match,
+       .driver = {
+               .name = "leo",
+               .owner = THIS_MODULE,
+               .of_match_table = leo_match,
+       },
        .probe          = leo_probe,
        .remove         = __devexit_p(leo_remove),
 };
 
 };
 
 static struct of_platform_driver of_platform_mb862xxfb_driver = {
-       .owner          = THIS_MODULE,
-       .name           = DRV_NAME,
-       .match_table    = of_platform_mb862xx_tbl,
+       .driver = {
+               .name = DRV_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = of_platform_mb862xx_tbl,
+       },
        .probe          = of_platform_mb862xx_probe,
        .remove         = __devexit_p(of_platform_mb862xx_remove),
 };
 
 MODULE_DEVICE_TABLE(of, p9100_match);
 
 static struct of_platform_driver p9100_driver = {
-       .name           = "p9100",
-       .match_table    = p9100_match,
+       .driver = {
+               .name = "p9100",
+               .owner = THIS_MODULE,
+               .of_match_table = p9100_match,
+       },
        .probe          = p9100_probe,
        .remove         = __devexit_p(p9100_remove),
 };
 
 
 static struct of_platform_driver platinum_driver = 
 {
-       .name           = "platinumfb",
-       .match_table    = platinumfb_match,
+       .driver = {
+               .name = "platinumfb",
+               .owner = THIS_MODULE,
+               .of_match_table = platinumfb_match,
+       },
        .probe          = platinumfb_probe,
        .remove         = platinumfb_remove,
 };
 
 MODULE_DEVICE_TABLE(of, ffb_match);
 
 static struct of_platform_driver gfb_driver = {
-       .name           = "gfb",
-       .match_table    = gfb_match,
        .probe          = gfb_probe,
        .remove         = __devexit_p(gfb_remove),
+       .driver = {
+               .name           = "gfb",
+               .owner          = THIS_MODULE,
+               .of_match_table = gfb_match,
+       },
 };
 
 static int __init gfb_init(void)
 
 MODULE_DEVICE_TABLE(of, tcx_match);
 
 static struct of_platform_driver tcx_driver = {
-       .name           = "tcx",
-       .match_table    = tcx_match,
+       .driver = {
+               .name = "tcx",
+               .owner = THIS_MODULE,
+               .of_match_table = tcx_match,
+       },
        .probe          = tcx_probe,
        .remove         = __devexit_p(tcx_remove),
 };
 
 MODULE_DEVICE_TABLE(of, xilinxfb_of_match);
 
 static struct of_platform_driver xilinxfb_of_driver = {
-       .owner = THIS_MODULE,
-       .name = DRIVER_NAME,
-       .match_table = xilinxfb_of_match,
        .probe = xilinxfb_of_probe,
        .remove = __devexit_p(xilinxfb_of_remove),
        .driver = {
                .name = DRIVER_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = xilinxfb_of_match,
        },
 };
 
 
 MODULE_DEVICE_TABLE(of, cpwd_match);
 
 static struct of_platform_driver cpwd_driver = {
-       .name           = DRIVER_NAME,
-       .match_table    = cpwd_match,
+       .driver = {
+               .name = DRIVER_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = cpwd_match,
+       },
        .probe          = cpwd_probe,
        .remove         = __devexit_p(cpwd_remove),
 };
 
 };
 
 static struct of_platform_driver gef_wdt_driver = {
-       .owner          = THIS_MODULE,
-       .name           = "gef_wdt",
-       .match_table    = gef_wdt_ids,
+       .driver = {
+               .name = "gef_wdt",
+               .owner = THIS_MODULE,
+               .of_match_table = gef_wdt_ids,
+       },
        .probe          = gef_wdt_probe,
 };
 
 
 MODULE_DEVICE_TABLE(of, mpc8xxx_wdt_match);
 
 static struct of_platform_driver mpc8xxx_wdt_driver = {
-       .match_table    = mpc8xxx_wdt_match,
        .probe          = mpc8xxx_wdt_probe,
        .remove         = __devexit_p(mpc8xxx_wdt_remove),
-       .driver         = {
-               .name   = "mpc8xxx_wdt",
-               .owner  = THIS_MODULE,
+       .driver = {
+               .name = "mpc8xxx_wdt",
+               .owner = THIS_MODULE,
+               .of_match_table = mpc8xxx_wdt_match,
        },
 };
 
 
 MODULE_DEVICE_TABLE(of, riowd_match);
 
 static struct of_platform_driver riowd_driver = {
-       .name           = DRIVER_NAME,
-       .match_table    = riowd_match,
+       .driver = {
+               .name = DRIVER_NAME,
+               .owner = THIS_MODULE,
+               .of_match_table = riowd_match,
+       },
        .probe          = riowd_probe,
        .remove         = __devexit_p(riowd_remove),
 };
 
  */
 struct of_platform_driver
 {
-       const char              *name;
-       const struct of_device_id       *match_table;
-       struct module           *owner;
-
        int     (*probe)(struct of_device* dev,
                         const struct of_device_id *match);
        int     (*remove)(struct of_device* dev);
 
 MODULE_DEVICE_TABLE(of, psc_ac97_match);
 
 static struct of_platform_driver psc_ac97_driver = {
-       .match_table = psc_ac97_match,
        .probe = psc_ac97_of_probe,
        .remove = __devexit_p(psc_ac97_of_remove),
        .driver = {
                .name = "mpc5200-psc-ac97",
                .owner = THIS_MODULE,
+               .of_match_table = psc_ac97_match,
        },
 };
 
 
 MODULE_DEVICE_TABLE(of, psc_i2s_match);
 
 static struct of_platform_driver psc_i2s_driver = {
-       .match_table = psc_i2s_match,
        .probe = psc_i2s_of_probe,
        .remove = __devexit_p(psc_i2s_of_remove),
        .driver = {
                .name = "mpc5200-psc-i2s",
                .owner = THIS_MODULE,
+               .of_match_table = psc_i2s_match,
        },
 };
 
 
 MODULE_DEVICE_TABLE(of, mpc8610_hpcd_match);
 
 static struct of_platform_driver mpc8610_hpcd_of_driver = {
-       .owner          = THIS_MODULE,
-       .name           = "mpc8610_hpcd",
-       .match_table    = mpc8610_hpcd_match,
+       .driver = {
+               .name = "mpc8610_hpcd",
+               .owner = THIS_MODULE,
+               .of_match_table = mpc8610_hpcd_match,
+       },
        .probe          = mpc8610_hpcd_probe,
        .remove         = mpc8610_hpcd_remove,
 };
 
 };
 
 static struct of_platform_driver amd7930_sbus_driver = {
-       .name           = "audio",
-       .match_table    = amd7930_match,
+       .driver = {
+               .name = "audio",
+               .owner = THIS_MODULE,
+               .of_match_table = amd7930_match,
+       },
        .probe          = amd7930_sbus_probe,
 };
 
 
 MODULE_DEVICE_TABLE(of, cs4231_match);
 
 static struct of_platform_driver cs4231_driver = {
-       .name           = "audio",
-       .match_table    = cs4231_match,
+       .driver = {
+               .name = "audio",
+               .owner = THIS_MODULE,
+               .of_match_table = cs4231_match,
+       },
        .probe          = cs4231_probe,
        .remove         = __devexit_p(cs4231_remove),
 };
 
 MODULE_DEVICE_TABLE(of, dbri_match);
 
 static struct of_platform_driver dbri_sbus_driver = {
-       .name           = "dbri",
-       .match_table    = dbri_match,
+       .driver = {
+               .name = "dbri",
+               .owner = THIS_MODULE,
+               .of_match_table = dbri_match,
+       },
        .probe          = dbri_probe,
        .remove         = __devexit_p(dbri_remove),
 };