]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/net/pcmcia/axnet_cs.c
drivers/net/pcmcia: Remove unnecessary casts of netdev_priv
[net-next-2.6.git] / drivers / net / pcmcia / axnet_cs.c
index d2e166e29dda2ea5e972526a89af60097221fa0a..1a0eb128e60773cb69bd1a5ba7548abd35368323 100644 (file)
@@ -111,13 +111,14 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id);
 
 typedef struct axnet_dev_t {
        struct pcmcia_device    *p_dev;
-    caddr_t            base;
-    struct timer_list  watchdog;
-    int                        stale, fast_poll;
-    u_short            link_status;
-    u_char             duplex_flag;
-    int                        phy_id;
-    int                        flags;
+       caddr_t base;
+       struct timer_list       watchdog;
+       int     stale, fast_poll;
+       u_short link_status;
+       u_char  duplex_flag;
+       int     phy_id;
+       int     flags;
+       int     active_low;
 } axnet_dev_t;
 
 static inline axnet_dev_t *PRIV(struct net_device *dev)
@@ -322,6 +323,8 @@ static int axnet_config(struct pcmcia_device *link)
     if (info->flags & IS_AX88790)
        outb(0x10, dev->base_addr + AXNET_GPIO);  /* select Internal PHY */
 
+    info->active_low = 0;
+
     for (i = 0; i < 32; i++) {
        j = mdio_read(dev->base_addr + AXNET_MII_EEP, i, 1);
        j2 = mdio_read(dev->base_addr + AXNET_MII_EEP, i, 2);
@@ -329,15 +332,18 @@ static int axnet_config(struct pcmcia_device *link)
        if ((j != 0) && (j != 0xffff)) break;
     }
 
-    /* Maybe PHY is in power down mode. (PPD_SET = 1) 
-       Bit 2 of CCSR is active low. */ 
     if (i == 32) {
+       /* Maybe PHY is in power down mode. (PPD_SET = 1)
+          Bit 2 of CCSR is active low. */
        pcmcia_write_config_byte(link, CISREG_CCSR, 0x04);
        for (i = 0; i < 32; i++) {
            j = mdio_read(dev->base_addr + AXNET_MII_EEP, i, 1);
            j2 = mdio_read(dev->base_addr + AXNET_MII_EEP, i, 2);
            if (j == j2) continue;
-           if ((j != 0) && (j != 0xffff)) break;
+           if ((j != 0) && (j != 0xffff)) {
+               info->active_low = 1;
+               break;
+           }
        }
     }
 
@@ -383,8 +389,12 @@ static int axnet_suspend(struct pcmcia_device *link)
 static int axnet_resume(struct pcmcia_device *link)
 {
        struct net_device *dev = link->priv;
+       axnet_dev_t *info = PRIV(dev);
 
        if (link->open) {
+               if (info->active_low == 1)
+                       pcmcia_write_config_byte(link, CISREG_CCSR, 0x04);
+
                axnet_reset_8390(dev);
                AX88190_init(dev, 1);
                netif_device_attach(dev);
@@ -865,7 +875,7 @@ static void do_set_multicast_list(struct net_device *dev);
 static int ax_open(struct net_device *dev)
 {
        unsigned long flags;
-       struct ei_device *ei_local = (struct ei_device *) netdev_priv(dev);
+       struct ei_device *ei_local = netdev_priv(dev);
 
        /*
         *      Grab the page lock so we own the register set, then call
@@ -916,7 +926,7 @@ static int ax_close(struct net_device *dev)
 static void axnet_tx_timeout(struct net_device *dev)
 {
        long e8390_base = dev->base_addr;
-       struct ei_device *ei_local = (struct ei_device *) netdev_priv(dev);
+       struct ei_device *ei_local = netdev_priv(dev);
        int txsr, isr, tickssofar = jiffies - dev_trans_start(dev);
        unsigned long flags;
 
@@ -963,7 +973,7 @@ static netdev_tx_t axnet_start_xmit(struct sk_buff *skb,
                                          struct net_device *dev)
 {
        long e8390_base = dev->base_addr;
-       struct ei_device *ei_local = (struct ei_device *) netdev_priv(dev);
+       struct ei_device *ei_local = netdev_priv(dev);
        int length, send_length, output_page;
        unsigned long flags;
        u8 packet[ETH_ZLEN];
@@ -1260,7 +1270,7 @@ static void ei_tx_err(struct net_device *dev)
 static void ei_tx_intr(struct net_device *dev)
 {
        long e8390_base = dev->base_addr;
-       struct ei_device *ei_local = (struct ei_device *) netdev_priv(dev);
+       struct ei_device *ei_local = netdev_priv(dev);
        int status = inb(e8390_base + EN0_TSR);
     
        /*
@@ -1344,7 +1354,7 @@ static void ei_tx_intr(struct net_device *dev)
 static void ei_receive(struct net_device *dev)
 {
        long e8390_base = dev->base_addr;
-       struct ei_device *ei_local = (struct ei_device *) netdev_priv(dev);
+       struct ei_device *ei_local = netdev_priv(dev);
        unsigned char rxing_page, this_frame, next_frame;
        unsigned short current_offset;
        int rx_pkt_count = 0;
@@ -1529,7 +1539,7 @@ static void ei_rx_overrun(struct net_device *dev)
 static struct net_device_stats *get_stats(struct net_device *dev)
 {
        long ioaddr = dev->base_addr;
-       struct ei_device *ei_local = (struct ei_device *) netdev_priv(dev);
+       struct ei_device *ei_local = netdev_priv(dev);
        unsigned long flags;
     
        /* If the card is stopped, just return the present stats. */
@@ -1578,7 +1588,7 @@ static void do_set_multicast_list(struct net_device *dev)
 {
        long e8390_base = dev->base_addr;
        int i;
-       struct ei_device *ei_local = (struct ei_device*)netdev_priv(dev);
+       struct ei_device *ei_local = netdev_priv(dev);
 
        if (!(dev->flags&(IFF_PROMISC|IFF_ALLMULTI))) {
                memset(ei_local->mcfilter, 0, 8);
@@ -1636,7 +1646,7 @@ static void AX88190_init(struct net_device *dev, int startp)
 {
        axnet_dev_t *info = PRIV(dev);
        long e8390_base = dev->base_addr;
-       struct ei_device *ei_local = (struct ei_device *) netdev_priv(dev);
+       struct ei_device *ei_local = netdev_priv(dev);
        int i;
        int endcfg = ei_local->word16 ? (0x48 | ENDCFG_WTS) : 0x48;
     
@@ -1702,7 +1712,7 @@ static void NS8390_trigger_send(struct net_device *dev, unsigned int length,
                                                                int start_page)
 {
        long e8390_base = dev->base_addr;
-       struct ei_device *ei_local __attribute((unused)) = (struct ei_device *) netdev_priv(dev);
+       struct ei_device *ei_local __attribute((unused)) = netdev_priv(dev);
     
        if (inb_p(e8390_base) & E8390_TRANS) 
        {