return -ENODEV;
  }
  
 -
 -static int __devinit myri_sbus_probe(struct of_device *dev, const struct of_device_id *match)
 -{
 -      struct sbus_dev *sdev = to_sbus_device(&dev->dev);
 -
 -      return myri_ether_init(sdev);
 -}
 -
 -static int __devexit myri_sbus_remove(struct of_device *dev)
 +static int __devexit myri_sbus_remove(struct of_device *op)
  {
 -      struct myri_eth *mp = dev_get_drvdata(&dev->dev);
 +      struct myri_eth *mp = dev_get_drvdata(&op->dev);
        struct net_device *net_dev = mp->dev;
  
-       unregister_netdevice(net_dev);
+       unregister_netdev(net_dev);
  
        free_irq(net_dev->irq, net_dev);
  
 
        return -ENODEV;
  }
  
 -/* QEC can be the parent of either QuadEthernet or
 - * a BigMAC.  We want the latter.
 +/* QEC can be the parent of either QuadEthernet or a BigMAC.  We want
 + * the latter.
   */
 -static int __devinit bigmac_sbus_probe(struct of_device *dev, const struct of_device_id *match)
 +static int __devinit bigmac_sbus_probe(struct of_device *op,
 +                                     const struct of_device_id *match)
  {
 -      struct sbus_dev *sdev = to_sbus_device(&dev->dev);
 -      struct device_node *dp = dev->node;
 +      struct device *parent = op->dev.parent;
 +      struct of_device *qec_op;
  
 -      if (!strcmp(dp->name, "be"))
 -              sdev = sdev->parent;
 +      qec_op = to_of_device(parent);
  
 -      return bigmac_ether_init(sdev);
 +      return bigmac_ether_init(op, qec_op);
  }
  
 -static int __devexit bigmac_sbus_remove(struct of_device *dev)
 +static int __devexit bigmac_sbus_remove(struct of_device *op)
  {
 -      struct bigmac *bp = dev_get_drvdata(&dev->dev);
 +      struct bigmac *bp = dev_get_drvdata(&op->dev);
 +      struct device *parent = op->dev.parent;
        struct net_device *net_dev = bp->dev;
 +      struct of_device *qec_op;
 +
 +      qec_op = to_of_device(parent);
  
-       unregister_netdevice(net_dev);
+       unregister_netdev(net_dev);
  
 -      sbus_iounmap(bp->gregs, GLOB_REG_SIZE);
 -      sbus_iounmap(bp->creg, CREG_REG_SIZE);
 -      sbus_iounmap(bp->bregs, BMAC_REG_SIZE);
 -      sbus_iounmap(bp->tregs, TCVR_REG_SIZE);
 -      sbus_free_consistent(bp->bigmac_sdev,
 -                           PAGE_SIZE,
 -                           bp->bmac_block,
 -                           bp->bblock_dvma);
 +      of_iounmap(&qec_op->resource[0], bp->gregs, GLOB_REG_SIZE);
 +      of_iounmap(&op->resource[0], bp->creg, CREG_REG_SIZE);
 +      of_iounmap(&op->resource[1], bp->bregs, BMAC_REG_SIZE);
 +      of_iounmap(&op->resource[2], bp->tregs, TCVR_REG_SIZE);
 +      dma_free_coherent(&op->dev,
 +                        PAGE_SIZE,
 +                        bp->bmac_block,
 +                        bp->bblock_dvma);
  
        free_netdev(net_dev);