return sprintf(buf, "%s\n", of_node ? of_node->full_name : "none");
  }
  
 -      dn = dev->archdata.of_node;
+ static ssize_t modalias_show(struct device *dev, struct device_attribute *attr,
+                            char *buf)
+ {
+       const struct vio_dev *vio_dev = to_vio_dev(dev);
+       struct device_node *dn;
+       const char *cp;
+ 
++      dn = dev->of_node;
+       if (!dn)
+               return -ENODEV;
+       cp = of_get_property(dn, "compatible", NULL);
+       if (!cp)
+               return -ENODEV;
+ 
+       return sprintf(buf, "vio:T%sS%s\n", vio_dev->type, cp);
+ }
+ 
  static struct device_attribute vio_dev_attrs[] = {
        __ATTR_RO(name),
        __ATTR_RO(devspec),
 
  
        init_waitqueue_head(&cpm->i2c_wait);
  
 -      cpm->irq = of_irq_to_resource(ofdev->node, 0, NULL);
 +      cpm->irq = of_irq_to_resource(ofdev->dev.of_node, 0, NULL);
-       if (cpm->irq == NO_IRQ)
+       if (!cpm->irq)
                return -EINVAL;
  
        /* Install interrupt handler. */
 
                goto fail_map;
        }
  
 -      i2c->irq = irq_of_parse_and_map(op->node, 0);
 +      i2c->irq = irq_of_parse_and_map(op->dev.of_node, 0);
-       if (i2c->irq != NO_IRQ) { /* i2c->irq = NO_IRQ implies polling */
+       if (i2c->irq) { /* no i2c->irq implies polling */
                result = request_irq(i2c->irq, mpc_i2c_isr,
                                     IRQF_SHARED, "i2c-mpc", i2c);
                if (result < 0) {
 
                                    const struct of_device_id *match)
  {
  #ifdef CONFIG_MTD_PARTITIONS
-       static const char *part_probe_types[]
-               = { "cmdlinepart", "RedBoot", NULL };
+       const char **part_probe_types;
  #endif
 -      struct device_node *dp = dev->node;
 +      struct device_node *dp = dev->dev.of_node;
        struct resource res;
        struct of_flash *info;
        const char *probe_type = match->data;
 
  
  /* 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)
 
                return rc;
        }
  
 -      irq = irq_of_parse_and_map(op->node, 0);
 +      irq = irq_of_parse_and_map(op->dev.of_node, 0);
  
 -      id = of_get_property(op->node, "port-number", NULL);
 +      id = of_get_property(op->dev.of_node, "port-number", NULL);
  
-       return ulite_assign(&op->dev, id ? *id : -1, res.start+3, irq);
+       return ulite_assign(&op->dev, id ? *id : -1, res.start, irq);
  }
  
  static int __devexit ulite_of_remove(struct of_device *op)