]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/net/pcmcia/fmvj18x_cs.c
Merge branch 'master' into tk71
[mv-sheeva.git] / drivers / net / pcmcia / fmvj18x_cs.c
index 98fffb03ecd7f4714c068d7a47c5acf667423cac..530ab5a10bd3a8395e0ff4ef68b9732d21fda100 100644 (file)
@@ -28,6 +28,8 @@
    
 ======================================================================*/
 
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
 #define DRV_NAME       "fmvj18x_cs"
 #define DRV_VERSION    "2.9"
 
@@ -49,7 +51,6 @@
 #include <linux/ioport.h>
 #include <linux/crc32.h>
 
-#include <pcmcia/cs.h>
 #include <pcmcia/cistpl.h>
 #include <pcmcia/ciscode.h>
 #include <pcmcia/ds.h>
@@ -252,8 +253,7 @@ static int fmvj18x_probe(struct pcmcia_device *link)
     link->resource[0]->flags |= IO_DATA_PATH_WIDTH_AUTO;
 
     /* General socket configuration */
-    link->conf.Attributes = CONF_ENABLE_IRQ;
-    link->conf.IntType = INT_MEMORY_AND_IO;
+    link->config_flags |= CONF_ENABLE_IRQ;
 
     dev->netdev_ops = &fjn_netdev_ops;
     dev->watchdog_timeo = TX_TIMEOUT;
@@ -291,7 +291,7 @@ static int mfc_try_io_port(struct pcmcia_device *link)
        link->resource[1]->flags |= IO_DATA_PATH_WIDTH_8;
        if (link->resource[1]->start == 0) {
            link->resource[1]->end = 0;
-           printk(KERN_NOTICE "fmvj18x_cs: out of resource for serial\n");
+           pr_notice("out of resource for serial\n");
        }
        ret = pcmcia_request_io(link);
        if (ret == 0)
@@ -313,7 +313,7 @@ static int ungermann_try_io_port(struct pcmcia_device *link)
        ret = pcmcia_request_io(link);
        if (ret == 0) {
            /* calculate ConfigIndex value */
-           link->conf.ConfigIndex = 
+           link->config_index =
                ((link->resource[0]->start & 0x0f0) >> 3) | 0x22;
            return ret;
        }
@@ -321,11 +321,7 @@ static int ungermann_try_io_port(struct pcmcia_device *link)
     return ret;        /* RequestIO failed */
 }
 
-static int fmvj18x_ioprobe(struct pcmcia_device *p_dev,
-                          cistpl_cftable_entry_t *cfg,
-                          cistpl_cftable_entry_t *dflt,
-                          unsigned int vcc,
-                          void *priv_data)
+static int fmvj18x_ioprobe(struct pcmcia_device *p_dev, void *priv_data)
 {
        return 0; /* strange, but that's what the code did already before... */
 }
@@ -362,28 +358,28 @@ static int fmvj18x_config(struct pcmcia_device *link)
                link->card_id == PRODID_TDK_NP9610 ||
                link->card_id == PRODID_TDK_MN3200) {
                /* MultiFunction Card */
-               link->conf.ConfigBase = 0x800;
-               link->conf.ConfigIndex = 0x47;
+               link->config_base = 0x800;
+               link->config_index = 0x47;
                link->resource[1]->end = 8;
            }
            break;
        case MANFID_NEC:
            cardtype = NEC; /* MultiFunction Card */
-           link->conf.ConfigBase = 0x800;
-           link->conf.ConfigIndex = 0x47;
+           link->config_base = 0x800;
+           link->config_index = 0x47;
            link->resource[1]->end = 8;
            break;
        case MANFID_KME:
            cardtype = KME; /* MultiFunction Card */
-           link->conf.ConfigBase = 0x800;
-           link->conf.ConfigIndex = 0x47;
+           link->config_base = 0x800;
+           link->config_index = 0x47;
            link->resource[1]->end = 8;
            break;
        case MANFID_CONTEC:
            cardtype = CONTEC;
            break;
        case MANFID_FUJITSU:
-           if (link->conf.ConfigBase == 0x0fe0)
+           if (link->config_base == 0x0fe0)
                cardtype = MBH10302;
            else if (link->card_id == PRODID_FUJITSU_MBH10302) 
                 /* RATOC REX-5588/9822/4886's PRODID are 0004(=MBH10302),
@@ -403,10 +399,10 @@ static int fmvj18x_config(struct pcmcia_device *link)
        case MANFID_FUJITSU:
            if (link->card_id == PRODID_FUJITSU_MBH10304) {
                cardtype = XXX10304;    /* MBH10304 with buggy CIS */
-               link->conf.ConfigIndex = 0x20;
+               link->config_index = 0x20;
            } else {
                cardtype = MBH10302;    /* NextCom NC5310, etc. */
-               link->conf.ConfigIndex = 1;
+               link->config_index = 1;
            }
            break;
        case MANFID_UNGERMANN:
@@ -414,7 +410,7 @@ static int fmvj18x_config(struct pcmcia_device *link)
            break;
        default:
            cardtype = MBH10302;
-           link->conf.ConfigIndex = 1;
+           link->config_index = 1;
        }
     }
 
@@ -432,7 +428,7 @@ static int fmvj18x_config(struct pcmcia_device *link)
     ret = pcmcia_request_irq(link, fjn_interrupt);
     if (ret)
            goto failed;
-    ret = pcmcia_request_configuration(link, &link->conf);
+    ret = pcmcia_enable_device(link);
     if (ret)
            goto failed;
 
@@ -503,7 +499,7 @@ static int fmvj18x_config(struct pcmcia_device *link)
     case XXX10304:
        /* Read MACID from Buggy CIS */
        if (fmvj18x_get_hwinfo(link, buggybuf) == -1) {
-           printk(KERN_NOTICE "fmvj18x_cs: unable to read hardware net address.\n");
+           pr_notice("unable to read hardware net address\n");
            goto failed;
        }
        for (i = 0 ; i < 6; i++) {
@@ -524,15 +520,14 @@ static int fmvj18x_config(struct pcmcia_device *link)
     SET_NETDEV_DEV(dev, &link->dev);
 
     if (register_netdev(dev) != 0) {
-       printk(KERN_NOTICE "fmvj18x_cs: register_netdev() failed\n");
+       pr_notice("register_netdev() failed\n");
        goto failed;
     }
 
     /* print current configuration */
-    printk(KERN_INFO "%s: %s, sram %s, port %#3lx, irq %d, "
-          "hw_addr %pM\n",
-          dev->name, card_name, sram_config == 0 ? "4K TX*2" : "8K TX*2", 
-          dev->base_addr, dev->irq, dev->dev_addr);
+    netdev_info(dev, "%s, sram %s, port %#3lx, irq %d, hw_addr %pM\n",
+               card_name, sram_config == 0 ? "4K TX*2" : "8K TX*2",
+               dev->base_addr, dev->irq, dev->dev_addr);
 
     return 0;
     
@@ -544,20 +539,18 @@ failed:
 
 static int fmvj18x_get_hwinfo(struct pcmcia_device *link, u_char *node_id)
 {
-    win_req_t req;
     u_char __iomem *base;
     int i, j;
 
     /* Allocate a small memory window */
-    req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE;
-    req.Base = 0; req.Size = 0;
-    req.AccessSpeed = 0;
-    i = pcmcia_request_window(link, &req, &link->win);
+    link->resource[2]->flags |= WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE;
+    link->resource[2]->start = 0; link->resource[2]->end = 0;
+    i = pcmcia_request_window(link, link->resource[2], 0);
     if (i != 0)
        return -1;
 
-    base = ioremap(req.Base, req.Size);
-    pcmcia_map_mem_page(link, link->win, 0);
+    base = ioremap(link->resource[2]->start, resource_size(link->resource[2]));
+    pcmcia_map_mem_page(link, link->resource[2], 0);
 
     /*
      *  MBH10304 CISTPL_FUNCE_LAN_NODE_ID format
@@ -582,7 +575,7 @@ static int fmvj18x_get_hwinfo(struct pcmcia_device *link, u_char *node_id)
     }
 
     iounmap(base);
-    j = pcmcia_release_window(link, link->win);
+    j = pcmcia_release_window(link, link->resource[2]);
     return (i != 0x200) ? 0 : -1;
 
 } /* fmvj18x_get_hwinfo */
@@ -590,27 +583,26 @@ static int fmvj18x_get_hwinfo(struct pcmcia_device *link, u_char *node_id)
 
 static int fmvj18x_setup_mfc(struct pcmcia_device *link)
 {
-    win_req_t req;
     int i;
     struct net_device *dev = link->priv;
     unsigned int ioaddr;
     local_info_t *lp = netdev_priv(dev);
 
     /* Allocate a small memory window */
-    req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE;
-    req.Base = 0; req.Size = 0;
-    req.AccessSpeed = 0;
-    i = pcmcia_request_window(link, &req, &link->win);
+    link->resource[3]->flags = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE;
+    link->resource[3]->start = link->resource[3]->end = 0;
+    i = pcmcia_request_window(link, link->resource[3], 0);
     if (i != 0)
        return -1;
 
-    lp->base = ioremap(req.Base, req.Size);
+    lp->base = ioremap(link->resource[3]->start,
+                      resource_size(link->resource[3]));
     if (lp->base == NULL) {
-       printk(KERN_NOTICE "fmvj18x_cs: ioremap failed\n");
+       netdev_notice(dev, "ioremap failed\n");
        return -1;
     }
 
-    i = pcmcia_map_mem_page(link, link->win, 0);
+    i = pcmcia_map_mem_page(link, link->resource[3], 0);
     if (i != 0) {
        iounmap(lp->base);
        lp->base = NULL;
@@ -638,7 +630,6 @@ static void fmvj18x_release(struct pcmcia_device *link)
     struct net_device *dev = link->priv;
     local_info_t *lp = netdev_priv(dev);
     u_char __iomem *tmp;
-    int j;
 
     dev_dbg(&link->dev, "fmvj18x_release\n");
 
@@ -646,7 +637,6 @@ static void fmvj18x_release(struct pcmcia_device *link)
        tmp = lp->base;
        lp->base = NULL;    /* set NULL before iounmap */
        iounmap(tmp);
-       j = pcmcia_release_window(link, link->win);
     }
 
     pcmcia_disable_device(link);
@@ -701,6 +691,7 @@ static struct pcmcia_device_id fmvj18x_ids[] = {
        PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0105, 0x0e0a),
        PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0032, 0x0e01),
        PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0032, 0x0a05),
+       PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0032, 0x0b05),
        PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0032, 0x1101),
        PCMCIA_DEVICE_NULL,
 };
@@ -708,9 +699,7 @@ MODULE_DEVICE_TABLE(pcmcia, fmvj18x_ids);
 
 static struct pcmcia_driver fmvj18x_cs_driver = {
        .owner          = THIS_MODULE,
-       .drv            = {
-               .name   = "fmvj18x_cs",
-       },
+       .name           = "fmvj18x_cs",
        .probe          = fmvj18x_probe,
        .remove         = fmvj18x_detach,
        .id_table       = fmvj18x_ids,
@@ -800,17 +789,16 @@ static void fjn_tx_timeout(struct net_device *dev)
     struct local_info_t *lp = netdev_priv(dev);
     unsigned int ioaddr = dev->base_addr;
 
-    printk(KERN_NOTICE "%s: transmit timed out with status %04x, %s?\n",
-          dev->name, htons(inw(ioaddr + TX_STATUS)),
-          inb(ioaddr + TX_STATUS) & F_TMT_RDY
-          ? "IRQ conflict" : "network cable problem");
-    printk(KERN_NOTICE "%s: timeout registers: %04x %04x %04x "
-          "%04x %04x %04x %04x %04x.\n",
-          dev->name, htons(inw(ioaddr + 0)),
-          htons(inw(ioaddr + 2)), htons(inw(ioaddr + 4)),
-          htons(inw(ioaddr + 6)), htons(inw(ioaddr + 8)),
-          htons(inw(ioaddr +10)), htons(inw(ioaddr +12)),
-          htons(inw(ioaddr +14)));
+    netdev_notice(dev, "transmit timed out with status %04x, %s?\n",
+                 htons(inw(ioaddr + TX_STATUS)),
+                 inb(ioaddr + TX_STATUS) & F_TMT_RDY
+                 ? "IRQ conflict" : "network cable problem");
+    netdev_notice(dev, "timeout registers: %04x %04x %04x "
+                 "%04x %04x %04x %04x %04x.\n",
+                 htons(inw(ioaddr + 0)), htons(inw(ioaddr + 2)),
+                 htons(inw(ioaddr + 4)), htons(inw(ioaddr + 6)),
+                 htons(inw(ioaddr + 8)), htons(inw(ioaddr + 10)),
+                 htons(inw(ioaddr + 12)), htons(inw(ioaddr + 14)));
     dev->stats.tx_errors++;
     /* ToDo: We should try to restart the adaptor... */
     local_irq_disable();
@@ -845,13 +833,13 @@ static netdev_tx_t fjn_start_xmit(struct sk_buff *skb,
        unsigned char *buf = skb->data;
 
        if (length > ETH_FRAME_LEN) {
-           printk(KERN_NOTICE "%s: Attempting to send a large packet"
-                  " (%d bytes).\n", dev->name, length);
+           netdev_notice(dev, "Attempting to send a large packet (%d bytes)\n",
+                         length);
            return NETDEV_TX_BUSY;
        }
 
-       pr_debug("%s: Transmitting a packet of length %lu.\n",
-             dev->name, (unsigned long)skb->len);
+       netdev_dbg(dev, "Transmitting a packet of length %lu\n",
+                  (unsigned long)skb->len);
        dev->stats.tx_bytes += skb->len;
 
        /* Disable both interrupts. */
@@ -904,7 +892,7 @@ static void fjn_reset(struct net_device *dev)
     unsigned int ioaddr = dev->base_addr;
     int i;
 
-    pr_debug("fjn_reset(%s) called.\n",dev->name);
+    netdev_dbg(dev, "fjn_reset() called\n");
 
     /* Reset controller */
     if( sram_config == 0 ) 
@@ -988,8 +976,8 @@ static void fjn_rx(struct net_device *dev)
     while ((inb(ioaddr + RX_MODE) & F_BUF_EMP) == 0) {
        u_short status = inw(ioaddr + DATAPORT);
 
-       pr_debug("%s: Rxing packet mode %02x status %04x.\n",
-             dev->name, inb(ioaddr + RX_MODE), status);
+       netdev_dbg(dev, "Rxing packet mode %02x status %04x.\n",
+                  inb(ioaddr + RX_MODE), status);
 #ifndef final_version
        if (status == 0) {
            outb(F_SKP_PKT, ioaddr + RX_SKIP);
@@ -1008,16 +996,16 @@ static void fjn_rx(struct net_device *dev)
            struct sk_buff *skb;
 
            if (pkt_len > 1550) {
-               printk(KERN_NOTICE "%s: The FMV-18x claimed a very "
-                      "large packet, size %d.\n", dev->name, pkt_len);
+               netdev_notice(dev, "The FMV-18x claimed a very large packet, size %d\n",
+                             pkt_len);
                outb(F_SKP_PKT, ioaddr + RX_SKIP);
                dev->stats.rx_errors++;
                break;
            }
            skb = dev_alloc_skb(pkt_len+2);
            if (skb == NULL) {
-               printk(KERN_NOTICE "%s: Memory squeeze, dropping "
-                      "packet (len %d).\n", dev->name, pkt_len);
+               netdev_notice(dev, "Memory squeeze, dropping packet (len %d)\n",
+                             pkt_len);
                outb(F_SKP_PKT, ioaddr + RX_SKIP);
                dev->stats.rx_dropped++;
                break;