]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/net/fs_enet/fs_enet-main.c
fs-enet: remove code associated with !CONFIG_PPC_MERGE
[mv-sheeva.git] / drivers / net / fs_enet / fs_enet-main.c
index 92591384afa5550bc592a2bcb03e3002642dc422..cb51c1fb0338e722334dcab4f72e6f9abb79137d 100644 (file)
@@ -664,23 +664,6 @@ static int fs_enet_start_xmit(struct sk_buff *skb, struct net_device *dev)
        return NETDEV_TX_OK;
 }
 
-static int fs_request_irq(struct net_device *dev, int irq, const char *name,
-               irq_handler_t irqf)
-{
-       struct fs_enet_private *fep = netdev_priv(dev);
-
-       (*fep->ops->pre_request_irq)(dev, irq);
-       return request_irq(irq, irqf, IRQF_SHARED, name, dev);
-}
-
-static void fs_free_irq(struct net_device *dev, int irq)
-{
-       struct fs_enet_private *fep = netdev_priv(dev);
-
-       free_irq(irq, dev);
-       (*fep->ops->post_free_irq)(dev, irq);
-}
-
 static void fs_timeout(struct net_device *dev)
 {
        struct fs_enet_private *fep = netdev_priv(dev);
@@ -730,9 +713,6 @@ static void generic_adjust_link(struct  net_device *dev)
                if (!fep->oldlink) {
                        new_state = 1;
                        fep->oldlink = 1;
-                       netif_tx_schedule_all(dev);
-                       netif_carrier_on(dev);
-                       netif_start_queue(dev);
                }
 
                if (new_state)
@@ -742,8 +722,6 @@ static void generic_adjust_link(struct  net_device *dev)
                fep->oldlink = 0;
                fep->oldspeed = 0;
                fep->oldduplex = -1;
-               netif_carrier_off(dev);
-               netif_stop_queue(dev);
        }
 
        if (new_state && netif_msg_link(fep))
@@ -797,11 +775,16 @@ static int fs_enet_open(struct net_device *dev)
        int r;
        int err;
 
+       /* to initialize the fep->cur_rx,... */
+       /* not doing this, will cause a crash in fs_enet_rx_napi */
+       fs_init_bds(fep->ndev);
+
        if (fep->fpi->use_napi)
                napi_enable(&fep->napi);
 
        /* Install our interrupt handler. */
-       r = fs_request_irq(dev, fep->interrupt, "fs_enet-mac", fs_enet_interrupt);
+       r = request_irq(fep->interrupt, fs_enet_interrupt, IRQF_SHARED,
+                       "fs_enet-mac", dev);
        if (r != 0) {
                printk(KERN_ERR DRV_MODULE_NAME
                       ": %s Could not allocate FS_ENET IRQ!", dev->name);
@@ -818,6 +801,8 @@ static int fs_enet_open(struct net_device *dev)
        }
        phy_start(fep->phydev);
 
+       netif_start_queue(dev);
+
        return 0;
 }
 
@@ -841,7 +826,7 @@ static int fs_enet_close(struct net_device *dev)
        /* release any irqs */
        phy_disconnect(fep->phydev);
        fep->phydev = NULL;
-       fs_free_irq(dev, fep->interrupt);
+       free_irq(fep->interrupt, dev);
 
        return 0;
 }
@@ -1170,6 +1155,10 @@ static struct of_device_id fs_enet_match[] = {
                .compatible = "fsl,cpm1-scc-enet",
                .data = (void *)&fs_scc_ops,
        },
+       {
+               .compatible = "fsl,cpm2-scc-enet",
+               .data = (void *)&fs_scc_ops,
+       },
 #endif
 #ifdef CONFIG_FS_ENET_HAS_FCC
        {