*/
 struct macio_driver
 {
-       char                    *name;
-       struct of_device_id     *match_table;
-       struct module           *owner;
-
        int     (*probe)(struct macio_dev* dev, const struct of_device_id *match);
        int     (*remove)(struct macio_dev* dev);
 
 
 
 static struct macio_driver pata_macio_driver =
 {
-       .name           = "pata-macio",
-       .match_table    = pata_macio_match,
+       .driver = {
+               .name           = "pata-macio",
+               .owner          = THIS_MODULE,
+               .of_match_table = pata_macio_match,
+       },
        .probe          = pata_macio_attach,
        .remove         = pata_macio_detach,
 #ifdef CONFIG_PM
 #ifdef CONFIG_PMAC_MEDIABAY
        .mediabay_event = pata_macio_mb_event,
 #endif
-       .driver = {
-               .owner          = THIS_MODULE,
-       },
 };
 
 static const struct pci_device_id pata_macio_pci_match[] = {
 
 
 static struct macio_driver swim3_driver =
 {
-       .name           = "swim3",
-       .match_table    = swim3_match,
+       .driver = {
+               .name           = "swim3",
+               .of_match_table = swim3_match,
+       },
        .probe          = swim3_attach,
 #if 0
        .suspend        = swim3_suspend,
 
 
 static struct macio_driver pmac_ide_macio_driver = 
 {
-       .name           = "ide-pmac",
-       .match_table    = pmac_ide_macio_match,
+       .driver = {
+               .name           = "ide-pmac",
+               .owner          = THIS_MODULE,
+               .of_match_table = pmac_ide_macio_match,
+       },
        .probe          = pmac_ide_macio_attach,
        .suspend        = pmac_ide_macio_suspend,
        .resume         = pmac_ide_macio_resume,
 
 int macio_register_driver(struct macio_driver *drv)
 {
        /* initialize common driver fields */
-       drv->driver.name = drv->name;
        drv->driver.bus = &macio_bus_type;
 
        /* register with core */
 
 
 static struct macio_driver media_bay_driver =
 {
-       .name           = "media-bay",
-       .match_table    = media_bay_match,
+       .driver = {
+               .name           = "media-bay",
+               .of_match_table = media_bay_match,
+       },
        .probe          = media_bay_attach,
        .suspend        = media_bay_suspend,
        .resume         = media_bay_resume
 
 };
 
 static struct macio_driver rackmeter_driver = {
-       .name = "rackmeter",
-       .owner = THIS_MODULE,
-       .match_table = rackmeter_match,
+       .driver = {
+               .name = "rackmeter",
+               .owner = THIS_MODULE,
+               .of_match_table = rackmeter_match,
+       },
        .probe = rackmeter_probe,
        .remove = __devexit_p(rackmeter_remove),
        .shutdown = rackmeter_shutdown,
 
 
 static struct macio_driver bmac_driver =
 {
-       .name           = "bmac",
-       .match_table    = bmac_match,
+       .driver = {
+               .name           = "bmac",
+               .owner          = THIS_MODULE,
+               .of_match_table = bmac_match,
+       },
        .probe          = bmac_probe,
        .remove         = bmac_remove,
 #ifdef CONFIG_PM
 
 
 static struct macio_driver mace_driver =
 {
-       .name           = "mace",
-       .match_table    = mace_match,
+       .driver = {
+               .name           = "mace",
+               .owner          = THIS_MODULE,
+               .of_match_table = mace_match,
+       },
        .probe          = mace_probe,
        .remove         = mace_remove,
 };
 
 MODULE_DEVICE_TABLE(of, airport_match);
 
 static struct macio_driver airport_driver = {
-       .name           = DRIVER_NAME,
-       .match_table    = airport_match,
+       .driver = {
+               .name           = DRIVER_NAME,
+               .owner          = THIS_MODULE,
+               .of_match_table = airport_match,
+       },
        .probe          = airport_attach,
        .remove         = airport_detach,
        .suspend        = airport_suspend,
 
 
 static struct macio_driver mac53c94_driver = 
 {
-       .name           = "mac53c94",
-       .match_table    = mac53c94_match,
+       .driver = {
+               .name           = "mac53c94",
+               .owner          = THIS_MODULE,
+               .of_match_table = mac53c94_match,
+       },
        .probe          = mac53c94_probe,
        .remove         = mac53c94_remove,
 };
 
 
 static struct macio_driver mesh_driver = 
 {
-       .name           = "mesh",
-       .match_table    = mesh_match,
+       .driver = {
+               .name           = "mesh",
+               .owner          = THIS_MODULE,
+               .of_match_table = mesh_match,
+       },
        .probe          = mesh_probe,
        .remove         = mesh_remove,
        .shutdown       = mesh_shutdown,
 
 MODULE_DEVICE_TABLE (of, pmz_match);
 
 static struct macio_driver pmz_driver = {
-       .name           = "pmac_zilog",
-       .match_table    = pmz_match,
+       .driver = {
+               .name           = "pmac_zilog",
+               .owner          = THIS_MODULE,
+               .of_match_table = pmz_match,
+       },
        .probe          = pmz_attach,
        .remove         = pmz_detach,
        .suspend        = pmz_suspend,
 
 }
 
 static struct macio_driver i2sbus_drv = {
-       .name = "soundbus-i2s",
-       .owner = THIS_MODULE,
-       .match_table = i2sbus_match,
+       .driver = {
+               .name = "soundbus-i2s",
+               .owner = THIS_MODULE,
+               .of_match_table = i2sbus_match,
+       },
        .probe = i2sbus_probe,
        .remove = i2sbus_remove,
 #ifdef CONFIG_PM