diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-05 12:42:59 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-05 12:42:59 -0500 |
commit | d9b2c4d0b03c721808c0d259e43a27f1e80205bc (patch) | |
tree | f17a4166f62ee14faa1401a6cbd353a4ab8c77cb /drivers/net/pcmcia | |
parent | 27d16d08717faeaa8afd1b736a096dbaab90f08e (diff) | |
parent | 5fa9167a1bf5f5a4b7282f5e7ac56a4a5a1fa044 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6: (50 commits)
pcmcia: rework the irq_req_t typedef
pcmcia: remove deprecated handle_to_dev() macro
pcmcia: pcmcia_request_window() doesn't need a pointer to a pointer
pcmcia: remove unused "window_t" typedef
pcmcia: move some window-related code to pcmcia_ioctl.c
pcmcia: Change window_handle_t logic to unsigned long
pcmcia: Pass struct pcmcia_socket to pcmcia_get_mem_page()
pcmcia: Pass struct pcmcia_device to pcmcia_map_mem_page()
pcmcia: Pass struct pcmcia_device to pcmcia_release_window()
drivers/pcmcia: remove unnecessary kzalloc
pcmcia: correct handling for Zoomed Video registers in topic.h
pcmcia: fix printk formats
pcmcia: autoload module pcmcia
pcmcia/staging: update comedi drivers
PCMCIA: stop duplicating pci_irq in soc_pcmcia_socket
PCMCIA: ss: allow PCI IRQs > 255
PCMCIA: soc_common: remove 'dev' member from soc_pcmcia_socket
PCMCIA: soc_common: constify soc_pcmcia_socket ops member
PCMCIA: sa1111: remove duplicated initializers
PCMCIA: sa1111: wrap soc_pcmcia_socket to contain sa1111 specific data
...
Diffstat (limited to 'drivers/net/pcmcia')
-rw-r--r-- | drivers/net/pcmcia/3c574_cs.c | 90 | ||||
-rw-r--r-- | drivers/net/pcmcia/3c589_cs.c | 102 | ||||
-rw-r--r-- | drivers/net/pcmcia/axnet_cs.c | 56 | ||||
-rw-r--r-- | drivers/net/pcmcia/com20020_cs.c | 63 | ||||
-rw-r--r-- | drivers/net/pcmcia/fmvj18x_cs.c | 189 | ||||
-rw-r--r-- | drivers/net/pcmcia/ibmtr_cs.c | 71 | ||||
-rw-r--r-- | drivers/net/pcmcia/nmclan_cs.c | 173 | ||||
-rw-r--r-- | drivers/net/pcmcia/pcnet_cs.c | 80 | ||||
-rw-r--r-- | drivers/net/pcmcia/smc91c92_cs.c | 340 | ||||
-rw-r--r-- | drivers/net/pcmcia/xirc2ps_cs.c | 259 |
10 files changed, 545 insertions, 878 deletions
diff --git a/drivers/net/pcmcia/3c574_cs.c b/drivers/net/pcmcia/3c574_cs.c index b58965a2b3ae..17a27225cc98 100644 --- a/drivers/net/pcmcia/3c574_cs.c +++ b/drivers/net/pcmcia/3c574_cs.c | |||
@@ -118,14 +118,6 @@ INT_MODULE_PARM(full_duplex, 0); | |||
118 | /* Autodetect link polarity reversal? */ | 118 | /* Autodetect link polarity reversal? */ |
119 | INT_MODULE_PARM(auto_polarity, 1); | 119 | INT_MODULE_PARM(auto_polarity, 1); |
120 | 120 | ||
121 | #ifdef PCMCIA_DEBUG | ||
122 | INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG); | ||
123 | #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) | ||
124 | static char *version = | ||
125 | "3c574_cs.c 1.65ac1 2003/04/07 Donald Becker/David Hinds, becker@scyld.com.\n"; | ||
126 | #else | ||
127 | #define DEBUG(n, args...) | ||
128 | #endif | ||
129 | 121 | ||
130 | /*====================================================================*/ | 122 | /*====================================================================*/ |
131 | 123 | ||
@@ -278,7 +270,7 @@ static int tc574_probe(struct pcmcia_device *link) | |||
278 | struct el3_private *lp; | 270 | struct el3_private *lp; |
279 | struct net_device *dev; | 271 | struct net_device *dev; |
280 | 272 | ||
281 | DEBUG(0, "3c574_attach()\n"); | 273 | dev_dbg(&link->dev, "3c574_attach()\n"); |
282 | 274 | ||
283 | /* Create the PC card device object. */ | 275 | /* Create the PC card device object. */ |
284 | dev = alloc_etherdev(sizeof(struct el3_private)); | 276 | dev = alloc_etherdev(sizeof(struct el3_private)); |
@@ -291,10 +283,8 @@ static int tc574_probe(struct pcmcia_device *link) | |||
291 | spin_lock_init(&lp->window_lock); | 283 | spin_lock_init(&lp->window_lock); |
292 | link->io.NumPorts1 = 32; | 284 | link->io.NumPorts1 = 32; |
293 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_16; | 285 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_16; |
294 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_HANDLE_PRESENT; | 286 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; |
295 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; | ||
296 | link->irq.Handler = &el3_interrupt; | 287 | link->irq.Handler = &el3_interrupt; |
297 | link->irq.Instance = dev; | ||
298 | link->conf.Attributes = CONF_ENABLE_IRQ; | 288 | link->conf.Attributes = CONF_ENABLE_IRQ; |
299 | link->conf.IntType = INT_MEMORY_AND_IO; | 289 | link->conf.IntType = INT_MEMORY_AND_IO; |
300 | link->conf.ConfigIndex = 1; | 290 | link->conf.ConfigIndex = 1; |
@@ -319,7 +309,7 @@ static void tc574_detach(struct pcmcia_device *link) | |||
319 | { | 309 | { |
320 | struct net_device *dev = link->priv; | 310 | struct net_device *dev = link->priv; |
321 | 311 | ||
322 | DEBUG(0, "3c574_detach(0x%p)\n", link); | 312 | dev_dbg(&link->dev, "3c574_detach()\n"); |
323 | 313 | ||
324 | if (link->dev_node) | 314 | if (link->dev_node) |
325 | unregister_netdev(dev); | 315 | unregister_netdev(dev); |
@@ -335,26 +325,23 @@ static void tc574_detach(struct pcmcia_device *link) | |||
335 | ethernet device available to the system. | 325 | ethernet device available to the system. |
336 | */ | 326 | */ |
337 | 327 | ||
338 | #define CS_CHECK(fn, ret) \ | ||
339 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | ||
340 | |||
341 | static const char *ram_split[] = {"5:3", "3:1", "1:1", "3:5"}; | 328 | static const char *ram_split[] = {"5:3", "3:1", "1:1", "3:5"}; |
342 | 329 | ||
343 | static int tc574_config(struct pcmcia_device *link) | 330 | static int tc574_config(struct pcmcia_device *link) |
344 | { | 331 | { |
345 | struct net_device *dev = link->priv; | 332 | struct net_device *dev = link->priv; |
346 | struct el3_private *lp = netdev_priv(dev); | 333 | struct el3_private *lp = netdev_priv(dev); |
347 | tuple_t tuple; | 334 | int ret, i, j; |
348 | __le16 buf[32]; | ||
349 | int last_fn, last_ret, i, j; | ||
350 | unsigned int ioaddr; | 335 | unsigned int ioaddr; |
351 | __be16 *phys_addr; | 336 | __be16 *phys_addr; |
352 | char *cardname; | 337 | char *cardname; |
353 | __u32 config; | 338 | __u32 config; |
339 | u8 *buf; | ||
340 | size_t len; | ||
354 | 341 | ||
355 | phys_addr = (__be16 *)dev->dev_addr; | 342 | phys_addr = (__be16 *)dev->dev_addr; |
356 | 343 | ||
357 | DEBUG(0, "3c574_config(0x%p)\n", link); | 344 | dev_dbg(&link->dev, "3c574_config()\n"); |
358 | 345 | ||
359 | link->io.IOAddrLines = 16; | 346 | link->io.IOAddrLines = 16; |
360 | for (i = j = 0; j < 0x400; j += 0x20) { | 347 | for (i = j = 0; j < 0x400; j += 0x20) { |
@@ -363,12 +350,16 @@ static int tc574_config(struct pcmcia_device *link) | |||
363 | if (i == 0) | 350 | if (i == 0) |
364 | break; | 351 | break; |
365 | } | 352 | } |
366 | if (i != 0) { | 353 | if (i != 0) |
367 | cs_error(link, RequestIO, i); | 354 | goto failed; |
355 | |||
356 | ret = pcmcia_request_irq(link, &link->irq); | ||
357 | if (ret) | ||
358 | goto failed; | ||
359 | |||
360 | ret = pcmcia_request_configuration(link, &link->conf); | ||
361 | if (ret) | ||
368 | goto failed; | 362 | goto failed; |
369 | } | ||
370 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); | ||
371 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); | ||
372 | 363 | ||
373 | dev->irq = link->irq.AssignedIRQ; | 364 | dev->irq = link->irq.AssignedIRQ; |
374 | dev->base_addr = link->io.BasePort1; | 365 | dev->base_addr = link->io.BasePort1; |
@@ -378,16 +369,14 @@ static int tc574_config(struct pcmcia_device *link) | |||
378 | /* The 3c574 normally uses an EEPROM for configuration info, including | 369 | /* The 3c574 normally uses an EEPROM for configuration info, including |
379 | the hardware address. The future products may include a modem chip | 370 | the hardware address. The future products may include a modem chip |
380 | and put the address in the CIS. */ | 371 | and put the address in the CIS. */ |
381 | tuple.Attributes = 0; | 372 | |
382 | tuple.TupleData = (cisdata_t *)buf; | 373 | len = pcmcia_get_tuple(link, 0x88, &buf); |
383 | tuple.TupleDataMax = 64; | 374 | if (buf && len >= 6) { |
384 | tuple.TupleOffset = 0; | ||
385 | tuple.DesiredTuple = 0x88; | ||
386 | if (pcmcia_get_first_tuple(link, &tuple) == 0) { | ||
387 | pcmcia_get_tuple_data(link, &tuple); | ||
388 | for (i = 0; i < 3; i++) | 375 | for (i = 0; i < 3; i++) |
389 | phys_addr[i] = htons(le16_to_cpu(buf[i])); | 376 | phys_addr[i] = htons(le16_to_cpu(buf[i * 2])); |
377 | kfree(buf); | ||
390 | } else { | 378 | } else { |
379 | kfree(buf); /* 0 < len < 6 */ | ||
391 | EL3WINDOW(0); | 380 | EL3WINDOW(0); |
392 | for (i = 0; i < 3; i++) | 381 | for (i = 0; i < 3; i++) |
393 | phys_addr[i] = htons(read_eeprom(ioaddr, i + 10)); | 382 | phys_addr[i] = htons(read_eeprom(ioaddr, i + 10)); |
@@ -435,7 +424,8 @@ static int tc574_config(struct pcmcia_device *link) | |||
435 | mii_status = mdio_read(ioaddr, phy & 0x1f, 1); | 424 | mii_status = mdio_read(ioaddr, phy & 0x1f, 1); |
436 | if (mii_status != 0xffff) { | 425 | if (mii_status != 0xffff) { |
437 | lp->phys = phy & 0x1f; | 426 | lp->phys = phy & 0x1f; |
438 | DEBUG(0, " MII transceiver at index %d, status %x.\n", | 427 | dev_dbg(&link->dev, " MII transceiver at " |
428 | "index %d, status %x.\n", | ||
439 | phy, mii_status); | 429 | phy, mii_status); |
440 | if ((mii_status & 0x0040) == 0) | 430 | if ((mii_status & 0x0040) == 0) |
441 | mii_preamble_required = 1; | 431 | mii_preamble_required = 1; |
@@ -457,7 +447,7 @@ static int tc574_config(struct pcmcia_device *link) | |||
457 | } | 447 | } |
458 | 448 | ||
459 | link->dev_node = &lp->node; | 449 | link->dev_node = &lp->node; |
460 | SET_NETDEV_DEV(dev, &handle_to_dev(link)); | 450 | SET_NETDEV_DEV(dev, &link->dev); |
461 | 451 | ||
462 | if (register_netdev(dev) != 0) { | 452 | if (register_netdev(dev) != 0) { |
463 | printk(KERN_NOTICE "3c574_cs: register_netdev() failed\n"); | 453 | printk(KERN_NOTICE "3c574_cs: register_netdev() failed\n"); |
@@ -478,8 +468,6 @@ static int tc574_config(struct pcmcia_device *link) | |||
478 | 468 | ||
479 | return 0; | 469 | return 0; |
480 | 470 | ||
481 | cs_failed: | ||
482 | cs_error(link, last_fn, last_ret); | ||
483 | failed: | 471 | failed: |
484 | tc574_release(link); | 472 | tc574_release(link); |
485 | return -ENODEV; | 473 | return -ENODEV; |
@@ -738,7 +726,7 @@ static int el3_open(struct net_device *dev) | |||
738 | lp->media.expires = jiffies + HZ; | 726 | lp->media.expires = jiffies + HZ; |
739 | add_timer(&lp->media); | 727 | add_timer(&lp->media); |
740 | 728 | ||
741 | DEBUG(2, "%s: opened, status %4.4x.\n", | 729 | dev_dbg(&link->dev, "%s: opened, status %4.4x.\n", |
742 | dev->name, inw(dev->base_addr + EL3_STATUS)); | 730 | dev->name, inw(dev->base_addr + EL3_STATUS)); |
743 | 731 | ||
744 | return 0; | 732 | return 0; |
@@ -772,7 +760,7 @@ static void pop_tx_status(struct net_device *dev) | |||
772 | if (tx_status & 0x30) | 760 | if (tx_status & 0x30) |
773 | tc574_wait_for_completion(dev, TxReset); | 761 | tc574_wait_for_completion(dev, TxReset); |
774 | if (tx_status & 0x38) { | 762 | if (tx_status & 0x38) { |
775 | DEBUG(1, "%s: transmit error: status 0x%02x\n", | 763 | pr_debug("%s: transmit error: status 0x%02x\n", |
776 | dev->name, tx_status); | 764 | dev->name, tx_status); |
777 | outw(TxEnable, ioaddr + EL3_CMD); | 765 | outw(TxEnable, ioaddr + EL3_CMD); |
778 | dev->stats.tx_aborted_errors++; | 766 | dev->stats.tx_aborted_errors++; |
@@ -788,7 +776,7 @@ static netdev_tx_t el3_start_xmit(struct sk_buff *skb, | |||
788 | struct el3_private *lp = netdev_priv(dev); | 776 | struct el3_private *lp = netdev_priv(dev); |
789 | unsigned long flags; | 777 | unsigned long flags; |
790 | 778 | ||
791 | DEBUG(3, "%s: el3_start_xmit(length = %ld) called, " | 779 | pr_debug("%s: el3_start_xmit(length = %ld) called, " |
792 | "status %4.4x.\n", dev->name, (long)skb->len, | 780 | "status %4.4x.\n", dev->name, (long)skb->len, |
793 | inw(ioaddr + EL3_STATUS)); | 781 | inw(ioaddr + EL3_STATUS)); |
794 | 782 | ||
@@ -827,7 +815,7 @@ static irqreturn_t el3_interrupt(int irq, void *dev_id) | |||
827 | return IRQ_NONE; | 815 | return IRQ_NONE; |
828 | ioaddr = dev->base_addr; | 816 | ioaddr = dev->base_addr; |
829 | 817 | ||
830 | DEBUG(3, "%s: interrupt, status %4.4x.\n", | 818 | pr_debug("%s: interrupt, status %4.4x.\n", |
831 | dev->name, inw(ioaddr + EL3_STATUS)); | 819 | dev->name, inw(ioaddr + EL3_STATUS)); |
832 | 820 | ||
833 | spin_lock(&lp->window_lock); | 821 | spin_lock(&lp->window_lock); |
@@ -836,7 +824,7 @@ static irqreturn_t el3_interrupt(int irq, void *dev_id) | |||
836 | (IntLatch | RxComplete | RxEarly | StatsFull)) { | 824 | (IntLatch | RxComplete | RxEarly | StatsFull)) { |
837 | if (!netif_device_present(dev) || | 825 | if (!netif_device_present(dev) || |
838 | ((status & 0xe000) != 0x2000)) { | 826 | ((status & 0xe000) != 0x2000)) { |
839 | DEBUG(1, "%s: Interrupt from dead card\n", dev->name); | 827 | pr_debug("%s: Interrupt from dead card\n", dev->name); |
840 | break; | 828 | break; |
841 | } | 829 | } |
842 | 830 | ||
@@ -846,7 +834,7 @@ static irqreturn_t el3_interrupt(int irq, void *dev_id) | |||
846 | work_budget = el3_rx(dev, work_budget); | 834 | work_budget = el3_rx(dev, work_budget); |
847 | 835 | ||
848 | if (status & TxAvailable) { | 836 | if (status & TxAvailable) { |
849 | DEBUG(3, " TX room bit was handled.\n"); | 837 | pr_debug(" TX room bit was handled.\n"); |
850 | /* There's room in the FIFO for a full-sized packet. */ | 838 | /* There's room in the FIFO for a full-sized packet. */ |
851 | outw(AckIntr | TxAvailable, ioaddr + EL3_CMD); | 839 | outw(AckIntr | TxAvailable, ioaddr + EL3_CMD); |
852 | netif_wake_queue(dev); | 840 | netif_wake_queue(dev); |
@@ -886,7 +874,7 @@ static irqreturn_t el3_interrupt(int irq, void *dev_id) | |||
886 | } | 874 | } |
887 | 875 | ||
888 | if (--work_budget < 0) { | 876 | if (--work_budget < 0) { |
889 | DEBUG(0, "%s: Too much work in interrupt, " | 877 | pr_debug("%s: Too much work in interrupt, " |
890 | "status %4.4x.\n", dev->name, status); | 878 | "status %4.4x.\n", dev->name, status); |
891 | /* Clear all interrupts */ | 879 | /* Clear all interrupts */ |
892 | outw(AckIntr | 0xFF, ioaddr + EL3_CMD); | 880 | outw(AckIntr | 0xFF, ioaddr + EL3_CMD); |
@@ -896,7 +884,7 @@ static irqreturn_t el3_interrupt(int irq, void *dev_id) | |||
896 | outw(AckIntr | IntReq | IntLatch, ioaddr + EL3_CMD); | 884 | outw(AckIntr | IntReq | IntLatch, ioaddr + EL3_CMD); |
897 | } | 885 | } |
898 | 886 | ||
899 | DEBUG(3, "%s: exiting interrupt, status %4.4x.\n", | 887 | pr_debug("%s: exiting interrupt, status %4.4x.\n", |
900 | dev->name, inw(ioaddr + EL3_STATUS)); | 888 | dev->name, inw(ioaddr + EL3_STATUS)); |
901 | 889 | ||
902 | spin_unlock(&lp->window_lock); | 890 | spin_unlock(&lp->window_lock); |
@@ -1003,7 +991,7 @@ static void update_stats(struct net_device *dev) | |||
1003 | unsigned int ioaddr = dev->base_addr; | 991 | unsigned int ioaddr = dev->base_addr; |
1004 | u8 rx, tx, up; | 992 | u8 rx, tx, up; |
1005 | 993 | ||
1006 | DEBUG(2, "%s: updating the statistics.\n", dev->name); | 994 | pr_debug("%s: updating the statistics.\n", dev->name); |
1007 | 995 | ||
1008 | if (inw(ioaddr+EL3_STATUS) == 0xffff) /* No card. */ | 996 | if (inw(ioaddr+EL3_STATUS) == 0xffff) /* No card. */ |
1009 | return; | 997 | return; |
@@ -1039,7 +1027,7 @@ static int el3_rx(struct net_device *dev, int worklimit) | |||
1039 | unsigned int ioaddr = dev->base_addr; | 1027 | unsigned int ioaddr = dev->base_addr; |
1040 | short rx_status; | 1028 | short rx_status; |
1041 | 1029 | ||
1042 | DEBUG(3, "%s: in rx_packet(), status %4.4x, rx_status %4.4x.\n", | 1030 | pr_debug("%s: in rx_packet(), status %4.4x, rx_status %4.4x.\n", |
1043 | dev->name, inw(ioaddr+EL3_STATUS), inw(ioaddr+RxStatus)); | 1031 | dev->name, inw(ioaddr+EL3_STATUS), inw(ioaddr+RxStatus)); |
1044 | while (!((rx_status = inw(ioaddr + RxStatus)) & 0x8000) && | 1032 | while (!((rx_status = inw(ioaddr + RxStatus)) & 0x8000) && |
1045 | worklimit > 0) { | 1033 | worklimit > 0) { |
@@ -1061,7 +1049,7 @@ static int el3_rx(struct net_device *dev, int worklimit) | |||
1061 | 1049 | ||
1062 | skb = dev_alloc_skb(pkt_len+5); | 1050 | skb = dev_alloc_skb(pkt_len+5); |
1063 | 1051 | ||
1064 | DEBUG(3, " Receiving packet size %d status %4.4x.\n", | 1052 | pr_debug(" Receiving packet size %d status %4.4x.\n", |
1065 | pkt_len, rx_status); | 1053 | pkt_len, rx_status); |
1066 | if (skb != NULL) { | 1054 | if (skb != NULL) { |
1067 | skb_reserve(skb, 2); | 1055 | skb_reserve(skb, 2); |
@@ -1072,7 +1060,7 @@ static int el3_rx(struct net_device *dev, int worklimit) | |||
1072 | dev->stats.rx_packets++; | 1060 | dev->stats.rx_packets++; |
1073 | dev->stats.rx_bytes += pkt_len; | 1061 | dev->stats.rx_bytes += pkt_len; |
1074 | } else { | 1062 | } else { |
1075 | DEBUG(1, "%s: couldn't allocate a sk_buff of" | 1063 | pr_debug("%s: couldn't allocate a sk_buff of" |
1076 | " size %d.\n", dev->name, pkt_len); | 1064 | " size %d.\n", dev->name, pkt_len); |
1077 | dev->stats.rx_dropped++; | 1065 | dev->stats.rx_dropped++; |
1078 | } | 1066 | } |
@@ -1101,7 +1089,7 @@ static int el3_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) | |||
1101 | struct mii_ioctl_data *data = if_mii(rq); | 1089 | struct mii_ioctl_data *data = if_mii(rq); |
1102 | int phy = lp->phys & 0x1f; | 1090 | int phy = lp->phys & 0x1f; |
1103 | 1091 | ||
1104 | DEBUG(2, "%s: In ioct(%-.6s, %#4.4x) %4.4x %4.4x %4.4x %4.4x.\n", | 1092 | pr_debug("%s: In ioct(%-.6s, %#4.4x) %4.4x %4.4x %4.4x %4.4x.\n", |
1105 | dev->name, rq->ifr_ifrn.ifrn_name, cmd, | 1093 | dev->name, rq->ifr_ifrn.ifrn_name, cmd, |
1106 | data->phy_id, data->reg_num, data->val_in, data->val_out); | 1094 | data->phy_id, data->reg_num, data->val_in, data->val_out); |
1107 | 1095 | ||
@@ -1178,7 +1166,7 @@ static int el3_close(struct net_device *dev) | |||
1178 | struct el3_private *lp = netdev_priv(dev); | 1166 | struct el3_private *lp = netdev_priv(dev); |
1179 | struct pcmcia_device *link = lp->p_dev; | 1167 | struct pcmcia_device *link = lp->p_dev; |
1180 | 1168 | ||
1181 | DEBUG(2, "%s: shutting down ethercard.\n", dev->name); | 1169 | dev_dbg(&link->dev, "%s: shutting down ethercard.\n", dev->name); |
1182 | 1170 | ||
1183 | if (pcmcia_dev_present(link)) { | 1171 | if (pcmcia_dev_present(link)) { |
1184 | unsigned long flags; | 1172 | unsigned long flags; |
diff --git a/drivers/net/pcmcia/3c589_cs.c b/drivers/net/pcmcia/3c589_cs.c index 569fb06793cf..6f8d7e2e5922 100644 --- a/drivers/net/pcmcia/3c589_cs.c +++ b/drivers/net/pcmcia/3c589_cs.c | |||
@@ -130,14 +130,6 @@ MODULE_LICENSE("GPL"); | |||
130 | /* Special hook for setting if_port when module is loaded */ | 130 | /* Special hook for setting if_port when module is loaded */ |
131 | INT_MODULE_PARM(if_port, 0); | 131 | INT_MODULE_PARM(if_port, 0); |
132 | 132 | ||
133 | #ifdef PCMCIA_DEBUG | ||
134 | INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG); | ||
135 | #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) | ||
136 | static char *version = | ||
137 | DRV_NAME ".c " DRV_VERSION " 2001/10/13 00:08:50 (David Hinds)"; | ||
138 | #else | ||
139 | #define DEBUG(n, args...) | ||
140 | #endif | ||
141 | 133 | ||
142 | /*====================================================================*/ | 134 | /*====================================================================*/ |
143 | 135 | ||
@@ -189,7 +181,7 @@ static int tc589_probe(struct pcmcia_device *link) | |||
189 | struct el3_private *lp; | 181 | struct el3_private *lp; |
190 | struct net_device *dev; | 182 | struct net_device *dev; |
191 | 183 | ||
192 | DEBUG(0, "3c589_attach()\n"); | 184 | dev_dbg(&link->dev, "3c589_attach()\n"); |
193 | 185 | ||
194 | /* Create new ethernet device */ | 186 | /* Create new ethernet device */ |
195 | dev = alloc_etherdev(sizeof(struct el3_private)); | 187 | dev = alloc_etherdev(sizeof(struct el3_private)); |
@@ -202,10 +194,8 @@ static int tc589_probe(struct pcmcia_device *link) | |||
202 | spin_lock_init(&lp->lock); | 194 | spin_lock_init(&lp->lock); |
203 | link->io.NumPorts1 = 16; | 195 | link->io.NumPorts1 = 16; |
204 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_16; | 196 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_16; |
205 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_HANDLE_PRESENT; | 197 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; |
206 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; | ||
207 | link->irq.Handler = &el3_interrupt; | 198 | link->irq.Handler = &el3_interrupt; |
208 | link->irq.Instance = dev; | ||
209 | link->conf.Attributes = CONF_ENABLE_IRQ; | 199 | link->conf.Attributes = CONF_ENABLE_IRQ; |
210 | link->conf.IntType = INT_MEMORY_AND_IO; | 200 | link->conf.IntType = INT_MEMORY_AND_IO; |
211 | link->conf.ConfigIndex = 1; | 201 | link->conf.ConfigIndex = 1; |
@@ -231,7 +221,7 @@ static void tc589_detach(struct pcmcia_device *link) | |||
231 | { | 221 | { |
232 | struct net_device *dev = link->priv; | 222 | struct net_device *dev = link->priv; |
233 | 223 | ||
234 | DEBUG(0, "3c589_detach(0x%p)\n", link); | 224 | dev_dbg(&link->dev, "3c589_detach\n"); |
235 | 225 | ||
236 | if (link->dev_node) | 226 | if (link->dev_node) |
237 | unregister_netdev(dev); | 227 | unregister_netdev(dev); |
@@ -249,29 +239,20 @@ static void tc589_detach(struct pcmcia_device *link) | |||
249 | 239 | ||
250 | ======================================================================*/ | 240 | ======================================================================*/ |
251 | 241 | ||
252 | #define CS_CHECK(fn, ret) \ | ||
253 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | ||
254 | |||
255 | static int tc589_config(struct pcmcia_device *link) | 242 | static int tc589_config(struct pcmcia_device *link) |
256 | { | 243 | { |
257 | struct net_device *dev = link->priv; | 244 | struct net_device *dev = link->priv; |
258 | struct el3_private *lp = netdev_priv(dev); | 245 | struct el3_private *lp = netdev_priv(dev); |
259 | tuple_t tuple; | ||
260 | __le16 buf[32]; | ||
261 | __be16 *phys_addr; | 246 | __be16 *phys_addr; |
262 | int last_fn, last_ret, i, j, multi = 0, fifo; | 247 | int ret, i, j, multi = 0, fifo; |
263 | unsigned int ioaddr; | 248 | unsigned int ioaddr; |
264 | char *ram_split[] = {"5:3", "3:1", "1:1", "3:5"}; | 249 | char *ram_split[] = {"5:3", "3:1", "1:1", "3:5"}; |
250 | u8 *buf; | ||
251 | size_t len; | ||
265 | 252 | ||
266 | DEBUG(0, "3c589_config(0x%p)\n", link); | 253 | dev_dbg(&link->dev, "3c589_config\n"); |
267 | 254 | ||
268 | phys_addr = (__be16 *)dev->dev_addr; | 255 | phys_addr = (__be16 *)dev->dev_addr; |
269 | tuple.Attributes = 0; | ||
270 | tuple.TupleData = (cisdata_t *)buf; | ||
271 | tuple.TupleDataMax = sizeof(buf); | ||
272 | tuple.TupleOffset = 0; | ||
273 | tuple.Attributes = TUPLE_RETURN_COMMON; | ||
274 | |||
275 | /* Is this a 3c562? */ | 256 | /* Is this a 3c562? */ |
276 | if (link->manf_id != MANFID_3COM) | 257 | if (link->manf_id != MANFID_3COM) |
277 | printk(KERN_INFO "3c589_cs: hmmm, is this really a " | 258 | printk(KERN_INFO "3c589_cs: hmmm, is this really a " |
@@ -287,12 +268,16 @@ static int tc589_config(struct pcmcia_device *link) | |||
287 | if (i == 0) | 268 | if (i == 0) |
288 | break; | 269 | break; |
289 | } | 270 | } |
290 | if (i != 0) { | 271 | if (i != 0) |
291 | cs_error(link, RequestIO, i); | ||
292 | goto failed; | 272 | goto failed; |
293 | } | 273 | |
294 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); | 274 | ret = pcmcia_request_irq(link, &link->irq); |
295 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); | 275 | if (ret) |
276 | goto failed; | ||
277 | |||
278 | ret = pcmcia_request_configuration(link, &link->conf); | ||
279 | if (ret) | ||
280 | goto failed; | ||
296 | 281 | ||
297 | dev->irq = link->irq.AssignedIRQ; | 282 | dev->irq = link->irq.AssignedIRQ; |
298 | dev->base_addr = link->io.BasePort1; | 283 | dev->base_addr = link->io.BasePort1; |
@@ -301,12 +286,13 @@ static int tc589_config(struct pcmcia_device *link) | |||
301 | 286 | ||
302 | /* The 3c589 has an extra EEPROM for configuration info, including | 287 | /* The 3c589 has an extra EEPROM for configuration info, including |
303 | the hardware address. The 3c562 puts the address in the CIS. */ | 288 | the hardware address. The 3c562 puts the address in the CIS. */ |
304 | tuple.DesiredTuple = 0x88; | 289 | len = pcmcia_get_tuple(link, 0x88, &buf); |
305 | if (pcmcia_get_first_tuple(link, &tuple) == 0) { | 290 | if (buf && len >= 6) { |
306 | pcmcia_get_tuple_data(link, &tuple); | 291 | for (i = 0; i < 3; i++) |
307 | for (i = 0; i < 3; i++) | 292 | phys_addr[i] = htons(le16_to_cpu(buf[i*2])); |
308 | phys_addr[i] = htons(le16_to_cpu(buf[i])); | 293 | kfree(buf); |
309 | } else { | 294 | } else { |
295 | kfree(buf); /* 0 < len < 6 */ | ||
310 | for (i = 0; i < 3; i++) | 296 | for (i = 0; i < 3; i++) |
311 | phys_addr[i] = htons(read_eeprom(ioaddr, i)); | 297 | phys_addr[i] = htons(read_eeprom(ioaddr, i)); |
312 | if (phys_addr[0] == htons(0x6060)) { | 298 | if (phys_addr[0] == htons(0x6060)) { |
@@ -328,7 +314,7 @@ static int tc589_config(struct pcmcia_device *link) | |||
328 | printk(KERN_ERR "3c589_cs: invalid if_port requested\n"); | 314 | printk(KERN_ERR "3c589_cs: invalid if_port requested\n"); |
329 | 315 | ||
330 | link->dev_node = &lp->node; | 316 | link->dev_node = &lp->node; |
331 | SET_NETDEV_DEV(dev, &handle_to_dev(link)); | 317 | SET_NETDEV_DEV(dev, &link->dev); |
332 | 318 | ||
333 | if (register_netdev(dev) != 0) { | 319 | if (register_netdev(dev) != 0) { |
334 | printk(KERN_ERR "3c589_cs: register_netdev() failed\n"); | 320 | printk(KERN_ERR "3c589_cs: register_netdev() failed\n"); |
@@ -347,8 +333,6 @@ static int tc589_config(struct pcmcia_device *link) | |||
347 | if_names[dev->if_port]); | 333 | if_names[dev->if_port]); |
348 | return 0; | 334 | return 0; |
349 | 335 | ||
350 | cs_failed: | ||
351 | cs_error(link, last_fn, last_ret); | ||
352 | failed: | 336 | failed: |
353 | tc589_release(link); | 337 | tc589_release(link); |
354 | return -ENODEV; | 338 | return -ENODEV; |
@@ -511,24 +495,8 @@ static void netdev_get_drvinfo(struct net_device *dev, | |||
511 | sprintf(info->bus_info, "PCMCIA 0x%lx", dev->base_addr); | 495 | sprintf(info->bus_info, "PCMCIA 0x%lx", dev->base_addr); |
512 | } | 496 | } |
513 | 497 | ||
514 | #ifdef PCMCIA_DEBUG | ||
515 | static u32 netdev_get_msglevel(struct net_device *dev) | ||
516 | { | ||
517 | return pc_debug; | ||
518 | } | ||
519 | |||
520 | static void netdev_set_msglevel(struct net_device *dev, u32 level) | ||
521 | { | ||
522 | pc_debug = level; | ||
523 | } | ||
524 | #endif /* PCMCIA_DEBUG */ | ||
525 | |||
526 | static const struct ethtool_ops netdev_ethtool_ops = { | 498 | static const struct ethtool_ops netdev_ethtool_ops = { |
527 | .get_drvinfo = netdev_get_drvinfo, | 499 | .get_drvinfo = netdev_get_drvinfo, |
528 | #ifdef PCMCIA_DEBUG | ||
529 | .get_msglevel = netdev_get_msglevel, | ||
530 | .set_msglevel = netdev_set_msglevel, | ||
531 | #endif /* PCMCIA_DEBUG */ | ||
532 | }; | 500 | }; |
533 | 501 | ||
534 | static int el3_config(struct net_device *dev, struct ifmap *map) | 502 | static int el3_config(struct net_device *dev, struct ifmap *map) |
@@ -563,7 +531,7 @@ static int el3_open(struct net_device *dev) | |||
563 | lp->media.expires = jiffies + HZ; | 531 | lp->media.expires = jiffies + HZ; |
564 | add_timer(&lp->media); | 532 | add_timer(&lp->media); |
565 | 533 | ||
566 | DEBUG(1, "%s: opened, status %4.4x.\n", | 534 | dev_dbg(&link->dev, "%s: opened, status %4.4x.\n", |
567 | dev->name, inw(dev->base_addr + EL3_STATUS)); | 535 | dev->name, inw(dev->base_addr + EL3_STATUS)); |
568 | 536 | ||
569 | return 0; | 537 | return 0; |
@@ -596,7 +564,7 @@ static void pop_tx_status(struct net_device *dev) | |||
596 | if (tx_status & 0x30) | 564 | if (tx_status & 0x30) |
597 | tc589_wait_for_completion(dev, TxReset); | 565 | tc589_wait_for_completion(dev, TxReset); |
598 | if (tx_status & 0x38) { | 566 | if (tx_status & 0x38) { |
599 | DEBUG(1, "%s: transmit error: status 0x%02x\n", | 567 | pr_debug("%s: transmit error: status 0x%02x\n", |
600 | dev->name, tx_status); | 568 | dev->name, tx_status); |
601 | outw(TxEnable, ioaddr + EL3_CMD); | 569 | outw(TxEnable, ioaddr + EL3_CMD); |
602 | dev->stats.tx_aborted_errors++; | 570 | dev->stats.tx_aborted_errors++; |
@@ -612,7 +580,7 @@ static netdev_tx_t el3_start_xmit(struct sk_buff *skb, | |||
612 | struct el3_private *priv = netdev_priv(dev); | 580 | struct el3_private *priv = netdev_priv(dev); |
613 | unsigned long flags; | 581 | unsigned long flags; |
614 | 582 | ||
615 | DEBUG(3, "%s: el3_start_xmit(length = %ld) called, " | 583 | pr_debug("%s: el3_start_xmit(length = %ld) called, " |
616 | "status %4.4x.\n", dev->name, (long)skb->len, | 584 | "status %4.4x.\n", dev->name, (long)skb->len, |
617 | inw(ioaddr + EL3_STATUS)); | 585 | inw(ioaddr + EL3_STATUS)); |
618 | 586 | ||
@@ -654,14 +622,14 @@ static irqreturn_t el3_interrupt(int irq, void *dev_id) | |||
654 | 622 | ||
655 | ioaddr = dev->base_addr; | 623 | ioaddr = dev->base_addr; |
656 | 624 | ||
657 | DEBUG(3, "%s: interrupt, status %4.4x.\n", | 625 | pr_debug("%s: interrupt, status %4.4x.\n", |
658 | dev->name, inw(ioaddr + EL3_STATUS)); | 626 | dev->name, inw(ioaddr + EL3_STATUS)); |
659 | 627 | ||
660 | spin_lock(&lp->lock); | 628 | spin_lock(&lp->lock); |
661 | while ((status = inw(ioaddr + EL3_STATUS)) & | 629 | while ((status = inw(ioaddr + EL3_STATUS)) & |
662 | (IntLatch | RxComplete | StatsFull)) { | 630 | (IntLatch | RxComplete | StatsFull)) { |
663 | if ((status & 0xe000) != 0x2000) { | 631 | if ((status & 0xe000) != 0x2000) { |
664 | DEBUG(1, "%s: interrupt from dead card\n", dev->name); | 632 | pr_debug("%s: interrupt from dead card\n", dev->name); |
665 | handled = 0; | 633 | handled = 0; |
666 | break; | 634 | break; |
667 | } | 635 | } |
@@ -670,7 +638,7 @@ static irqreturn_t el3_interrupt(int irq, void *dev_id) | |||
670 | el3_rx(dev); | 638 | el3_rx(dev); |
671 | 639 | ||
672 | if (status & TxAvailable) { | 640 | if (status & TxAvailable) { |
673 | DEBUG(3, " TX room bit was handled.\n"); | 641 | pr_debug(" TX room bit was handled.\n"); |
674 | /* There's room in the FIFO for a full-sized packet. */ | 642 | /* There's room in the FIFO for a full-sized packet. */ |
675 | outw(AckIntr | TxAvailable, ioaddr + EL3_CMD); | 643 | outw(AckIntr | TxAvailable, ioaddr + EL3_CMD); |
676 | netif_wake_queue(dev); | 644 | netif_wake_queue(dev); |
@@ -722,7 +690,7 @@ static irqreturn_t el3_interrupt(int irq, void *dev_id) | |||
722 | 690 | ||
723 | lp->last_irq = jiffies; | 691 | lp->last_irq = jiffies; |
724 | spin_unlock(&lp->lock); | 692 | spin_unlock(&lp->lock); |
725 | DEBUG(3, "%s: exiting interrupt, status %4.4x.\n", | 693 | pr_debug("%s: exiting interrupt, status %4.4x.\n", |
726 | dev->name, inw(ioaddr + EL3_STATUS)); | 694 | dev->name, inw(ioaddr + EL3_STATUS)); |
727 | return IRQ_RETVAL(handled); | 695 | return IRQ_RETVAL(handled); |
728 | } | 696 | } |
@@ -833,7 +801,7 @@ static void update_stats(struct net_device *dev) | |||
833 | { | 801 | { |
834 | unsigned int ioaddr = dev->base_addr; | 802 | unsigned int ioaddr = dev->base_addr; |
835 | 803 | ||
836 | DEBUG(2, "%s: updating the statistics.\n", dev->name); | 804 | pr_debug("%s: updating the statistics.\n", dev->name); |
837 | /* Turn off statistics updates while reading. */ | 805 | /* Turn off statistics updates while reading. */ |
838 | outw(StatsDisable, ioaddr + EL3_CMD); | 806 | outw(StatsDisable, ioaddr + EL3_CMD); |
839 | /* Switch to the stats window, and read everything. */ | 807 | /* Switch to the stats window, and read everything. */ |
@@ -861,7 +829,7 @@ static int el3_rx(struct net_device *dev) | |||
861 | int worklimit = 32; | 829 | int worklimit = 32; |
862 | short rx_status; | 830 | short rx_status; |
863 | 831 | ||
864 | DEBUG(3, "%s: in rx_packet(), status %4.4x, rx_status %4.4x.\n", | 832 | pr_debug("%s: in rx_packet(), status %4.4x, rx_status %4.4x.\n", |
865 | dev->name, inw(ioaddr+EL3_STATUS), inw(ioaddr+RX_STATUS)); | 833 | dev->name, inw(ioaddr+EL3_STATUS), inw(ioaddr+RX_STATUS)); |
866 | while (!((rx_status = inw(ioaddr + RX_STATUS)) & 0x8000) && | 834 | while (!((rx_status = inw(ioaddr + RX_STATUS)) & 0x8000) && |
867 | worklimit > 0) { | 835 | worklimit > 0) { |
@@ -883,7 +851,7 @@ static int el3_rx(struct net_device *dev) | |||
883 | 851 | ||
884 | skb = dev_alloc_skb(pkt_len+5); | 852 | skb = dev_alloc_skb(pkt_len+5); |
885 | 853 | ||
886 | DEBUG(3, " Receiving packet size %d status %4.4x.\n", | 854 | pr_debug(" Receiving packet size %d status %4.4x.\n", |
887 | pkt_len, rx_status); | 855 | pkt_len, rx_status); |
888 | if (skb != NULL) { | 856 | if (skb != NULL) { |
889 | skb_reserve(skb, 2); | 857 | skb_reserve(skb, 2); |
@@ -894,7 +862,7 @@ static int el3_rx(struct net_device *dev) | |||
894 | dev->stats.rx_packets++; | 862 | dev->stats.rx_packets++; |
895 | dev->stats.rx_bytes += pkt_len; | 863 | dev->stats.rx_bytes += pkt_len; |
896 | } else { | 864 | } else { |
897 | DEBUG(1, "%s: couldn't allocate a sk_buff of" | 865 | pr_debug("%s: couldn't allocate a sk_buff of" |
898 | " size %d.\n", dev->name, pkt_len); | 866 | " size %d.\n", dev->name, pkt_len); |
899 | dev->stats.rx_dropped++; | 867 | dev->stats.rx_dropped++; |
900 | } | 868 | } |
@@ -935,7 +903,7 @@ static int el3_close(struct net_device *dev) | |||
935 | struct pcmcia_device *link = lp->p_dev; | 903 | struct pcmcia_device *link = lp->p_dev; |
936 | unsigned int ioaddr = dev->base_addr; | 904 | unsigned int ioaddr = dev->base_addr; |
937 | 905 | ||
938 | DEBUG(1, "%s: shutting down ethercard.\n", dev->name); | 906 | dev_dbg(&link->dev, "%s: shutting down ethercard.\n", dev->name); |
939 | 907 | ||
940 | if (pcmcia_dev_present(link)) { | 908 | if (pcmcia_dev_present(link)) { |
941 | /* Turn off statistics ASAP. We update dev->stats below. */ | 909 | /* Turn off statistics ASAP. We update dev->stats below. */ |
diff --git a/drivers/net/pcmcia/axnet_cs.c b/drivers/net/pcmcia/axnet_cs.c index 3131a59a8d32..800597b82d18 100644 --- a/drivers/net/pcmcia/axnet_cs.c +++ b/drivers/net/pcmcia/axnet_cs.c | |||
@@ -75,16 +75,6 @@ MODULE_AUTHOR("David Hinds <dahinds@users.sourceforge.net>"); | |||
75 | MODULE_DESCRIPTION("Asix AX88190 PCMCIA ethernet driver"); | 75 | MODULE_DESCRIPTION("Asix AX88190 PCMCIA ethernet driver"); |
76 | MODULE_LICENSE("GPL"); | 76 | MODULE_LICENSE("GPL"); |
77 | 77 | ||
78 | #ifdef PCMCIA_DEBUG | ||
79 | #define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0) | ||
80 | |||
81 | INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG); | ||
82 | #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) | ||
83 | static char *version = | ||
84 | "axnet_cs.c 1.28 2002/06/29 06:27:37 (David Hinds)"; | ||
85 | #else | ||
86 | #define DEBUG(n, args...) | ||
87 | #endif | ||
88 | 78 | ||
89 | /*====================================================================*/ | 79 | /*====================================================================*/ |
90 | 80 | ||
@@ -167,7 +157,7 @@ static int axnet_probe(struct pcmcia_device *link) | |||
167 | struct net_device *dev; | 157 | struct net_device *dev; |
168 | struct ei_device *ei_local; | 158 | struct ei_device *ei_local; |
169 | 159 | ||
170 | DEBUG(0, "axnet_attach()\n"); | 160 | dev_dbg(&link->dev, "axnet_attach()\n"); |
171 | 161 | ||
172 | dev = alloc_etherdev(sizeof(struct ei_device) + sizeof(axnet_dev_t)); | 162 | dev = alloc_etherdev(sizeof(struct ei_device) + sizeof(axnet_dev_t)); |
173 | if (!dev) | 163 | if (!dev) |
@@ -180,7 +170,6 @@ static int axnet_probe(struct pcmcia_device *link) | |||
180 | info->p_dev = link; | 170 | info->p_dev = link; |
181 | link->priv = dev; | 171 | link->priv = dev; |
182 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; | 172 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; |
183 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; | ||
184 | link->conf.Attributes = CONF_ENABLE_IRQ; | 173 | link->conf.Attributes = CONF_ENABLE_IRQ; |
185 | link->conf.IntType = INT_MEMORY_AND_IO; | 174 | link->conf.IntType = INT_MEMORY_AND_IO; |
186 | 175 | ||
@@ -205,7 +194,7 @@ static void axnet_detach(struct pcmcia_device *link) | |||
205 | { | 194 | { |
206 | struct net_device *dev = link->priv; | 195 | struct net_device *dev = link->priv; |
207 | 196 | ||
208 | DEBUG(0, "axnet_detach(0x%p)\n", link); | 197 | dev_dbg(&link->dev, "axnet_detach(0x%p)\n", link); |
209 | 198 | ||
210 | if (link->dev_node) | 199 | if (link->dev_node) |
211 | unregister_netdev(dev); | 200 | unregister_netdev(dev); |
@@ -272,9 +261,6 @@ static int get_prom(struct pcmcia_device *link) | |||
272 | 261 | ||
273 | ======================================================================*/ | 262 | ======================================================================*/ |
274 | 263 | ||
275 | #define CS_CHECK(fn, ret) \ | ||
276 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | ||
277 | |||
278 | static int try_io_port(struct pcmcia_device *link) | 264 | static int try_io_port(struct pcmcia_device *link) |
279 | { | 265 | { |
280 | int j, ret; | 266 | int j, ret; |
@@ -341,26 +327,29 @@ static int axnet_config(struct pcmcia_device *link) | |||
341 | { | 327 | { |
342 | struct net_device *dev = link->priv; | 328 | struct net_device *dev = link->priv; |
343 | axnet_dev_t *info = PRIV(dev); | 329 | axnet_dev_t *info = PRIV(dev); |
344 | int i, j, j2, last_ret, last_fn; | 330 | int i, j, j2, ret; |
345 | 331 | ||
346 | DEBUG(0, "axnet_config(0x%p)\n", link); | 332 | dev_dbg(&link->dev, "axnet_config(0x%p)\n", link); |
347 | 333 | ||
348 | /* don't trust the CIS on this; Linksys got it wrong */ | 334 | /* don't trust the CIS on this; Linksys got it wrong */ |
349 | link->conf.Present = 0x63; | 335 | link->conf.Present = 0x63; |
350 | last_ret = pcmcia_loop_config(link, axnet_configcheck, NULL); | 336 | ret = pcmcia_loop_config(link, axnet_configcheck, NULL); |
351 | if (last_ret != 0) { | 337 | if (ret != 0) |
352 | cs_error(link, RequestIO, last_ret); | ||
353 | goto failed; | 338 | goto failed; |
354 | } | ||
355 | 339 | ||
356 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); | 340 | ret = pcmcia_request_irq(link, &link->irq); |
341 | if (ret) | ||
342 | goto failed; | ||
357 | 343 | ||
358 | if (link->io.NumPorts2 == 8) { | 344 | if (link->io.NumPorts2 == 8) { |
359 | link->conf.Attributes |= CONF_ENABLE_SPKR; | 345 | link->conf.Attributes |= CONF_ENABLE_SPKR; |
360 | link->conf.Status = CCSR_AUDIO_ENA; | 346 | link->conf.Status = CCSR_AUDIO_ENA; |
361 | } | 347 | } |
362 | 348 | ||
363 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); | 349 | ret = pcmcia_request_configuration(link, &link->conf); |
350 | if (ret) | ||
351 | goto failed; | ||
352 | |||
364 | dev->irq = link->irq.AssignedIRQ; | 353 | dev->irq = link->irq.AssignedIRQ; |
365 | dev->base_addr = link->io.BasePort1; | 354 | dev->base_addr = link->io.BasePort1; |
366 | 355 | ||
@@ -410,7 +399,7 @@ static int axnet_config(struct pcmcia_device *link) | |||
410 | 399 | ||
411 | info->phy_id = (i < 32) ? i : -1; | 400 | info->phy_id = (i < 32) ? i : -1; |
412 | link->dev_node = &info->node; | 401 | link->dev_node = &info->node; |
413 | SET_NETDEV_DEV(dev, &handle_to_dev(link)); | 402 | SET_NETDEV_DEV(dev, &link->dev); |
414 | 403 | ||
415 | if (register_netdev(dev) != 0) { | 404 | if (register_netdev(dev) != 0) { |
416 | printk(KERN_NOTICE "axnet_cs: register_netdev() failed\n"); | 405 | printk(KERN_NOTICE "axnet_cs: register_netdev() failed\n"); |
@@ -426,14 +415,12 @@ static int axnet_config(struct pcmcia_device *link) | |||
426 | dev->base_addr, dev->irq, | 415 | dev->base_addr, dev->irq, |
427 | dev->dev_addr); | 416 | dev->dev_addr); |
428 | if (info->phy_id != -1) { | 417 | if (info->phy_id != -1) { |
429 | DEBUG(0, " MII transceiver at index %d, status %x.\n", info->phy_id, j); | 418 | dev_dbg(&link->dev, " MII transceiver at index %d, status %x.\n", info->phy_id, j); |
430 | } else { | 419 | } else { |
431 | printk(KERN_NOTICE " No MII transceivers found!\n"); | 420 | printk(KERN_NOTICE " No MII transceivers found!\n"); |
432 | } | 421 | } |
433 | return 0; | 422 | return 0; |
434 | 423 | ||
435 | cs_failed: | ||
436 | cs_error(link, last_fn, last_ret); | ||
437 | failed: | 424 | failed: |
438 | axnet_release(link); | 425 | axnet_release(link); |
439 | return -ENODEV; | 426 | return -ENODEV; |
@@ -543,7 +530,7 @@ static int axnet_open(struct net_device *dev) | |||
543 | struct pcmcia_device *link = info->p_dev; | 530 | struct pcmcia_device *link = info->p_dev; |
544 | unsigned int nic_base = dev->base_addr; | 531 | unsigned int nic_base = dev->base_addr; |
545 | 532 | ||
546 | DEBUG(2, "axnet_open('%s')\n", dev->name); | 533 | dev_dbg(&link->dev, "axnet_open('%s')\n", dev->name); |
547 | 534 | ||
548 | if (!pcmcia_dev_present(link)) | 535 | if (!pcmcia_dev_present(link)) |
549 | return -ENODEV; | 536 | return -ENODEV; |
@@ -572,7 +559,7 @@ static int axnet_close(struct net_device *dev) | |||
572 | axnet_dev_t *info = PRIV(dev); | 559 | axnet_dev_t *info = PRIV(dev); |
573 | struct pcmcia_device *link = info->p_dev; | 560 | struct pcmcia_device *link = info->p_dev; |
574 | 561 | ||
575 | DEBUG(2, "axnet_close('%s')\n", dev->name); | 562 | dev_dbg(&link->dev, "axnet_close('%s')\n", dev->name); |
576 | 563 | ||
577 | ax_close(dev); | 564 | ax_close(dev); |
578 | free_irq(dev->irq, dev); | 565 | free_irq(dev->irq, dev); |
@@ -741,10 +728,8 @@ static void block_input(struct net_device *dev, int count, | |||
741 | int xfer_count = count; | 728 | int xfer_count = count; |
742 | char *buf = skb->data; | 729 | char *buf = skb->data; |
743 | 730 | ||
744 | #ifdef PCMCIA_DEBUG | ||
745 | if ((ei_debug > 4) && (count != 4)) | 731 | if ((ei_debug > 4) && (count != 4)) |
746 | printk(KERN_DEBUG "%s: [bi=%d]\n", dev->name, count+4); | 732 | pr_debug("%s: [bi=%d]\n", dev->name, count+4); |
747 | #endif | ||
748 | outb_p(ring_offset & 0xff, nic_base + EN0_RSARLO); | 733 | outb_p(ring_offset & 0xff, nic_base + EN0_RSARLO); |
749 | outb_p(ring_offset >> 8, nic_base + EN0_RSARHI); | 734 | outb_p(ring_offset >> 8, nic_base + EN0_RSARHI); |
750 | outb_p(E8390_RREAD+E8390_START, nic_base + AXNET_CMD); | 735 | outb_p(E8390_RREAD+E8390_START, nic_base + AXNET_CMD); |
@@ -762,10 +747,7 @@ static void block_output(struct net_device *dev, int count, | |||
762 | { | 747 | { |
763 | unsigned int nic_base = dev->base_addr; | 748 | unsigned int nic_base = dev->base_addr; |
764 | 749 | ||
765 | #ifdef PCMCIA_DEBUG | 750 | pr_debug("%s: [bo=%d]\n", dev->name, count); |
766 | if (ei_debug > 4) | ||
767 | printk(KERN_DEBUG "%s: [bo=%d]\n", dev->name, count); | ||
768 | #endif | ||
769 | 751 | ||
770 | /* Round the count up for word writes. Do we need to do this? | 752 | /* Round the count up for word writes. Do we need to do this? |
771 | What effect will an odd byte count have on the 8390? | 753 | What effect will an odd byte count have on the 8390? |
diff --git a/drivers/net/pcmcia/com20020_cs.c b/drivers/net/pcmcia/com20020_cs.c index 7b5c77b7bd27..21d9c9d815d1 100644 --- a/drivers/net/pcmcia/com20020_cs.c +++ b/drivers/net/pcmcia/com20020_cs.c | |||
@@ -53,11 +53,7 @@ | |||
53 | 53 | ||
54 | #define VERSION "arcnet: COM20020 PCMCIA support loaded.\n" | 54 | #define VERSION "arcnet: COM20020 PCMCIA support loaded.\n" |
55 | 55 | ||
56 | #ifdef PCMCIA_DEBUG | 56 | #ifdef DEBUG |
57 | |||
58 | static int pc_debug = PCMCIA_DEBUG; | ||
59 | module_param(pc_debug, int, 0); | ||
60 | #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) | ||
61 | 57 | ||
62 | static void regdump(struct net_device *dev) | 58 | static void regdump(struct net_device *dev) |
63 | { | 59 | { |
@@ -92,7 +88,6 @@ static void regdump(struct net_device *dev) | |||
92 | 88 | ||
93 | #else | 89 | #else |
94 | 90 | ||
95 | #define DEBUG(n, args...) do { } while (0) | ||
96 | static inline void regdump(struct net_device *dev) { } | 91 | static inline void regdump(struct net_device *dev) { } |
97 | 92 | ||
98 | #endif | 93 | #endif |
@@ -144,7 +139,7 @@ static int com20020_probe(struct pcmcia_device *p_dev) | |||
144 | struct net_device *dev; | 139 | struct net_device *dev; |
145 | struct arcnet_local *lp; | 140 | struct arcnet_local *lp; |
146 | 141 | ||
147 | DEBUG(0, "com20020_attach()\n"); | 142 | dev_dbg(&p_dev->dev, "com20020_attach()\n"); |
148 | 143 | ||
149 | /* Create new network device */ | 144 | /* Create new network device */ |
150 | info = kzalloc(sizeof(struct com20020_dev_t), GFP_KERNEL); | 145 | info = kzalloc(sizeof(struct com20020_dev_t), GFP_KERNEL); |
@@ -169,11 +164,10 @@ static int com20020_probe(struct pcmcia_device *p_dev) | |||
169 | p_dev->io.NumPorts1 = 16; | 164 | p_dev->io.NumPorts1 = 16; |
170 | p_dev->io.IOAddrLines = 16; | 165 | p_dev->io.IOAddrLines = 16; |
171 | p_dev->irq.Attributes = IRQ_TYPE_EXCLUSIVE; | 166 | p_dev->irq.Attributes = IRQ_TYPE_EXCLUSIVE; |
172 | p_dev->irq.IRQInfo1 = IRQ_LEVEL_ID; | ||
173 | p_dev->conf.Attributes = CONF_ENABLE_IRQ; | 167 | p_dev->conf.Attributes = CONF_ENABLE_IRQ; |
174 | p_dev->conf.IntType = INT_MEMORY_AND_IO; | 168 | p_dev->conf.IntType = INT_MEMORY_AND_IO; |
175 | 169 | ||
176 | p_dev->irq.Instance = info->dev = dev; | 170 | info->dev = dev; |
177 | p_dev->priv = info; | 171 | p_dev->priv = info; |
178 | 172 | ||
179 | return com20020_config(p_dev); | 173 | return com20020_config(p_dev); |
@@ -198,12 +192,12 @@ static void com20020_detach(struct pcmcia_device *link) | |||
198 | struct com20020_dev_t *info = link->priv; | 192 | struct com20020_dev_t *info = link->priv; |
199 | struct net_device *dev = info->dev; | 193 | struct net_device *dev = info->dev; |
200 | 194 | ||
201 | DEBUG(1,"detach...\n"); | 195 | dev_dbg(&link->dev, "detach...\n"); |
202 | 196 | ||
203 | DEBUG(0, "com20020_detach(0x%p)\n", link); | 197 | dev_dbg(&link->dev, "com20020_detach\n"); |
204 | 198 | ||
205 | if (link->dev_node) { | 199 | if (link->dev_node) { |
206 | DEBUG(1,"unregister...\n"); | 200 | dev_dbg(&link->dev, "unregister...\n"); |
207 | 201 | ||
208 | unregister_netdev(dev); | 202 | unregister_netdev(dev); |
209 | 203 | ||
@@ -218,16 +212,16 @@ static void com20020_detach(struct pcmcia_device *link) | |||
218 | com20020_release(link); | 212 | com20020_release(link); |
219 | 213 | ||
220 | /* Unlink device structure, free bits */ | 214 | /* Unlink device structure, free bits */ |
221 | DEBUG(1,"unlinking...\n"); | 215 | dev_dbg(&link->dev, "unlinking...\n"); |
222 | if (link->priv) | 216 | if (link->priv) |
223 | { | 217 | { |
224 | dev = info->dev; | 218 | dev = info->dev; |
225 | if (dev) | 219 | if (dev) |
226 | { | 220 | { |
227 | DEBUG(1,"kfree...\n"); | 221 | dev_dbg(&link->dev, "kfree...\n"); |
228 | free_netdev(dev); | 222 | free_netdev(dev); |
229 | } | 223 | } |
230 | DEBUG(1,"kfree2...\n"); | 224 | dev_dbg(&link->dev, "kfree2...\n"); |
231 | kfree(info); | 225 | kfree(info); |
232 | } | 226 | } |
233 | 227 | ||
@@ -241,25 +235,22 @@ static void com20020_detach(struct pcmcia_device *link) | |||
241 | 235 | ||
242 | ======================================================================*/ | 236 | ======================================================================*/ |
243 | 237 | ||
244 | #define CS_CHECK(fn, ret) \ | ||
245 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | ||
246 | |||
247 | static int com20020_config(struct pcmcia_device *link) | 238 | static int com20020_config(struct pcmcia_device *link) |
248 | { | 239 | { |
249 | struct arcnet_local *lp; | 240 | struct arcnet_local *lp; |
250 | com20020_dev_t *info; | 241 | com20020_dev_t *info; |
251 | struct net_device *dev; | 242 | struct net_device *dev; |
252 | int i, last_ret, last_fn; | 243 | int i, ret; |
253 | int ioaddr; | 244 | int ioaddr; |
254 | 245 | ||
255 | info = link->priv; | 246 | info = link->priv; |
256 | dev = info->dev; | 247 | dev = info->dev; |
257 | 248 | ||
258 | DEBUG(1,"config...\n"); | 249 | dev_dbg(&link->dev, "config...\n"); |
259 | 250 | ||
260 | DEBUG(0, "com20020_config(0x%p)\n", link); | 251 | dev_dbg(&link->dev, "com20020_config\n"); |
261 | 252 | ||
262 | DEBUG(1,"arcnet: baseport1 is %Xh\n", link->io.BasePort1); | 253 | dev_dbg(&link->dev, "baseport1 is %Xh\n", link->io.BasePort1); |
263 | i = -ENODEV; | 254 | i = -ENODEV; |
264 | if (!link->io.BasePort1) | 255 | if (!link->io.BasePort1) |
265 | { | 256 | { |
@@ -276,26 +267,27 @@ static int com20020_config(struct pcmcia_device *link) | |||
276 | 267 | ||
277 | if (i != 0) | 268 | if (i != 0) |
278 | { | 269 | { |
279 | DEBUG(1,"arcnet: requestIO failed totally!\n"); | 270 | dev_dbg(&link->dev, "requestIO failed totally!\n"); |
280 | goto failed; | 271 | goto failed; |
281 | } | 272 | } |
282 | 273 | ||
283 | ioaddr = dev->base_addr = link->io.BasePort1; | 274 | ioaddr = dev->base_addr = link->io.BasePort1; |
284 | DEBUG(1,"arcnet: got ioaddr %Xh\n", ioaddr); | 275 | dev_dbg(&link->dev, "got ioaddr %Xh\n", ioaddr); |
285 | 276 | ||
286 | DEBUG(1,"arcnet: request IRQ %d (%Xh/%Xh)\n", | 277 | dev_dbg(&link->dev, "request IRQ %d\n", |
287 | link->irq.AssignedIRQ, | 278 | link->irq.AssignedIRQ); |
288 | link->irq.IRQInfo1, link->irq.IRQInfo2); | ||
289 | i = pcmcia_request_irq(link, &link->irq); | 279 | i = pcmcia_request_irq(link, &link->irq); |
290 | if (i != 0) | 280 | if (i != 0) |
291 | { | 281 | { |
292 | DEBUG(1,"arcnet: requestIRQ failed totally!\n"); | 282 | dev_dbg(&link->dev, "requestIRQ failed totally!\n"); |
293 | goto failed; | 283 | goto failed; |
294 | } | 284 | } |
295 | 285 | ||
296 | dev->irq = link->irq.AssignedIRQ; | 286 | dev->irq = link->irq.AssignedIRQ; |
297 | 287 | ||
298 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); | 288 | ret = pcmcia_request_configuration(link, &link->conf); |
289 | if (ret) | ||
290 | goto failed; | ||
299 | 291 | ||
300 | if (com20020_check(dev)) | 292 | if (com20020_check(dev)) |
301 | { | 293 | { |
@@ -308,26 +300,25 @@ static int com20020_config(struct pcmcia_device *link) | |||
308 | lp->card_flags = ARC_CAN_10MBIT; /* pretend all of them can 10Mbit */ | 300 | lp->card_flags = ARC_CAN_10MBIT; /* pretend all of them can 10Mbit */ |
309 | 301 | ||
310 | link->dev_node = &info->node; | 302 | link->dev_node = &info->node; |
311 | SET_NETDEV_DEV(dev, &handle_to_dev(link)); | 303 | SET_NETDEV_DEV(dev, &link->dev); |
312 | 304 | ||
313 | i = com20020_found(dev, 0); /* calls register_netdev */ | 305 | i = com20020_found(dev, 0); /* calls register_netdev */ |
314 | 306 | ||
315 | if (i != 0) { | 307 | if (i != 0) { |
316 | DEBUG(1,KERN_NOTICE "com20020_cs: com20020_found() failed\n"); | 308 | dev_printk(KERN_NOTICE, &link->dev, |
309 | "com20020_cs: com20020_found() failed\n"); | ||
317 | link->dev_node = NULL; | 310 | link->dev_node = NULL; |
318 | goto failed; | 311 | goto failed; |
319 | } | 312 | } |
320 | 313 | ||
321 | strcpy(info->node.dev_name, dev->name); | 314 | strcpy(info->node.dev_name, dev->name); |
322 | 315 | ||
323 | DEBUG(1,KERN_INFO "%s: port %#3lx, irq %d\n", | 316 | dev_dbg(&link->dev,KERN_INFO "%s: port %#3lx, irq %d\n", |
324 | dev->name, dev->base_addr, dev->irq); | 317 | dev->name, dev->base_addr, dev->irq); |
325 | return 0; | 318 | return 0; |
326 | 319 | ||
327 | cs_failed: | ||
328 | cs_error(link, last_fn, last_ret); | ||
329 | failed: | 320 | failed: |
330 | DEBUG(1,"com20020_config failed...\n"); | 321 | dev_dbg(&link->dev, "com20020_config failed...\n"); |
331 | com20020_release(link); | 322 | com20020_release(link); |
332 | return -ENODEV; | 323 | return -ENODEV; |
333 | } /* com20020_config */ | 324 | } /* com20020_config */ |
@@ -342,7 +333,7 @@ failed: | |||
342 | 333 | ||
343 | static void com20020_release(struct pcmcia_device *link) | 334 | static void com20020_release(struct pcmcia_device *link) |
344 | { | 335 | { |
345 | DEBUG(0, "com20020_release(0x%p)\n", link); | 336 | dev_dbg(&link->dev, "com20020_release\n"); |
346 | pcmcia_disable_device(link); | 337 | pcmcia_disable_device(link); |
347 | } | 338 | } |
348 | 339 | ||
diff --git a/drivers/net/pcmcia/fmvj18x_cs.c b/drivers/net/pcmcia/fmvj18x_cs.c index 7e01fbdb87e0..6e3e1ced6db4 100644 --- a/drivers/net/pcmcia/fmvj18x_cs.c +++ b/drivers/net/pcmcia/fmvj18x_cs.c | |||
@@ -72,13 +72,6 @@ MODULE_LICENSE("GPL"); | |||
72 | /* 0:4KB*2 TX buffer else:8KB*2 TX buffer */ | 72 | /* 0:4KB*2 TX buffer else:8KB*2 TX buffer */ |
73 | INT_MODULE_PARM(sram_config, 0); | 73 | INT_MODULE_PARM(sram_config, 0); |
74 | 74 | ||
75 | #ifdef PCMCIA_DEBUG | ||
76 | INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG); | ||
77 | #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) | ||
78 | static char *version = DRV_NAME ".c " DRV_VERSION " 2002/03/23"; | ||
79 | #else | ||
80 | #define DEBUG(n, args...) | ||
81 | #endif | ||
82 | 75 | ||
83 | /*====================================================================*/ | 76 | /*====================================================================*/ |
84 | /* | 77 | /* |
@@ -245,7 +238,7 @@ static int fmvj18x_probe(struct pcmcia_device *link) | |||
245 | local_info_t *lp; | 238 | local_info_t *lp; |
246 | struct net_device *dev; | 239 | struct net_device *dev; |
247 | 240 | ||
248 | DEBUG(0, "fmvj18x_attach()\n"); | 241 | dev_dbg(&link->dev, "fmvj18x_attach()\n"); |
249 | 242 | ||
250 | /* Make up a FMVJ18x specific data structure */ | 243 | /* Make up a FMVJ18x specific data structure */ |
251 | dev = alloc_etherdev(sizeof(local_info_t)); | 244 | dev = alloc_etherdev(sizeof(local_info_t)); |
@@ -262,10 +255,8 @@ static int fmvj18x_probe(struct pcmcia_device *link) | |||
262 | link->io.IOAddrLines = 5; | 255 | link->io.IOAddrLines = 5; |
263 | 256 | ||
264 | /* Interrupt setup */ | 257 | /* Interrupt setup */ |
265 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_HANDLE_PRESENT; | 258 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; |
266 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; | ||
267 | link->irq.Handler = &fjn_interrupt; | 259 | link->irq.Handler = &fjn_interrupt; |
268 | link->irq.Instance = dev; | ||
269 | 260 | ||
270 | /* General socket configuration */ | 261 | /* General socket configuration */ |
271 | link->conf.Attributes = CONF_ENABLE_IRQ; | 262 | link->conf.Attributes = CONF_ENABLE_IRQ; |
@@ -285,7 +276,7 @@ static void fmvj18x_detach(struct pcmcia_device *link) | |||
285 | { | 276 | { |
286 | struct net_device *dev = link->priv; | 277 | struct net_device *dev = link->priv; |
287 | 278 | ||
288 | DEBUG(0, "fmvj18x_detach(0x%p)\n", link); | 279 | dev_dbg(&link->dev, "fmvj18x_detach\n"); |
289 | 280 | ||
290 | if (link->dev_node) | 281 | if (link->dev_node) |
291 | unregister_netdev(dev); | 282 | unregister_netdev(dev); |
@@ -297,9 +288,6 @@ static void fmvj18x_detach(struct pcmcia_device *link) | |||
297 | 288 | ||
298 | /*====================================================================*/ | 289 | /*====================================================================*/ |
299 | 290 | ||
300 | #define CS_CHECK(fn, ret) \ | ||
301 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | ||
302 | |||
303 | static int mfc_try_io_port(struct pcmcia_device *link) | 291 | static int mfc_try_io_port(struct pcmcia_device *link) |
304 | { | 292 | { |
305 | int i, ret; | 293 | int i, ret; |
@@ -341,33 +329,38 @@ static int ungermann_try_io_port(struct pcmcia_device *link) | |||
341 | return ret; /* RequestIO failed */ | 329 | return ret; /* RequestIO failed */ |
342 | } | 330 | } |
343 | 331 | ||
332 | static int fmvj18x_ioprobe(struct pcmcia_device *p_dev, | ||
333 | cistpl_cftable_entry_t *cfg, | ||
334 | cistpl_cftable_entry_t *dflt, | ||
335 | unsigned int vcc, | ||
336 | void *priv_data) | ||
337 | { | ||
338 | return 0; /* strange, but that's what the code did already before... */ | ||
339 | } | ||
340 | |||
344 | static int fmvj18x_config(struct pcmcia_device *link) | 341 | static int fmvj18x_config(struct pcmcia_device *link) |
345 | { | 342 | { |
346 | struct net_device *dev = link->priv; | 343 | struct net_device *dev = link->priv; |
347 | local_info_t *lp = netdev_priv(dev); | 344 | local_info_t *lp = netdev_priv(dev); |
348 | tuple_t tuple; | 345 | int i, ret; |
349 | cisparse_t parse; | ||
350 | u_short buf[32]; | ||
351 | int i, last_fn = 0, last_ret = 0, ret; | ||
352 | unsigned int ioaddr; | 346 | unsigned int ioaddr; |
353 | cardtype_t cardtype; | 347 | cardtype_t cardtype; |
354 | char *card_name = "unknown"; | 348 | char *card_name = "unknown"; |
355 | u_char *node_id; | 349 | u8 *buf; |
350 | size_t len; | ||
351 | u_char buggybuf[32]; | ||
352 | |||
353 | dev_dbg(&link->dev, "fmvj18x_config\n"); | ||
356 | 354 | ||
357 | DEBUG(0, "fmvj18x_config(0x%p)\n", link); | 355 | len = pcmcia_get_tuple(link, CISTPL_FUNCE, &buf); |
356 | kfree(buf); | ||
358 | 357 | ||
359 | tuple.TupleData = (u_char *)buf; | 358 | if (len) { |
360 | tuple.TupleDataMax = 64; | ||
361 | tuple.TupleOffset = 0; | ||
362 | tuple.DesiredTuple = CISTPL_FUNCE; | ||
363 | tuple.TupleOffset = 0; | ||
364 | if (pcmcia_get_first_tuple(link, &tuple) == 0) { | ||
365 | /* Yes, I have CISTPL_FUNCE. Let's check CISTPL_MANFID */ | 359 | /* Yes, I have CISTPL_FUNCE. Let's check CISTPL_MANFID */ |
366 | tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; | 360 | ret = pcmcia_loop_config(link, fmvj18x_ioprobe, NULL); |
367 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple)); | 361 | if (ret != 0) |
368 | CS_CHECK(GetTupleData, pcmcia_get_tuple_data(link, &tuple)); | 362 | goto failed; |
369 | CS_CHECK(ParseTuple, pcmcia_parse_tuple(&tuple, &parse)); | 363 | |
370 | link->conf.ConfigIndex = parse.cftable_entry.index; | ||
371 | switch (link->manf_id) { | 364 | switch (link->manf_id) { |
372 | case MANFID_TDK: | 365 | case MANFID_TDK: |
373 | cardtype = TDK; | 366 | cardtype = TDK; |
@@ -433,17 +426,24 @@ static int fmvj18x_config(struct pcmcia_device *link) | |||
433 | 426 | ||
434 | if (link->io.NumPorts2 != 0) { | 427 | if (link->io.NumPorts2 != 0) { |
435 | link->irq.Attributes = | 428 | link->irq.Attributes = |
436 | IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED|IRQ_HANDLE_PRESENT; | 429 | IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED; |
437 | ret = mfc_try_io_port(link); | 430 | ret = mfc_try_io_port(link); |
438 | if (ret != 0) goto cs_failed; | 431 | if (ret != 0) goto failed; |
439 | } else if (cardtype == UNGERMANN) { | 432 | } else if (cardtype == UNGERMANN) { |
440 | ret = ungermann_try_io_port(link); | 433 | ret = ungermann_try_io_port(link); |
441 | if (ret != 0) goto cs_failed; | 434 | if (ret != 0) goto failed; |
442 | } else { | 435 | } else { |
443 | CS_CHECK(RequestIO, pcmcia_request_io(link, &link->io)); | 436 | ret = pcmcia_request_io(link, &link->io); |
437 | if (ret) | ||
438 | goto failed; | ||
444 | } | 439 | } |
445 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); | 440 | ret = pcmcia_request_irq(link, &link->irq); |
446 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); | 441 | if (ret) |
442 | goto failed; | ||
443 | ret = pcmcia_request_configuration(link, &link->conf); | ||
444 | if (ret) | ||
445 | goto failed; | ||
446 | |||
447 | dev->irq = link->irq.AssignedIRQ; | 447 | dev->irq = link->irq.AssignedIRQ; |
448 | dev->base_addr = link->io.BasePort1; | 448 | dev->base_addr = link->io.BasePort1; |
449 | 449 | ||
@@ -474,21 +474,21 @@ static int fmvj18x_config(struct pcmcia_device *link) | |||
474 | case CONTEC: | 474 | case CONTEC: |
475 | case NEC: | 475 | case NEC: |
476 | case KME: | 476 | case KME: |
477 | tuple.DesiredTuple = CISTPL_FUNCE; | ||
478 | tuple.TupleOffset = 0; | ||
479 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple)); | ||
480 | tuple.TupleOffset = 0; | ||
481 | CS_CHECK(GetTupleData, pcmcia_get_tuple_data(link, &tuple)); | ||
482 | if (cardtype == MBH10304) { | 477 | if (cardtype == MBH10304) { |
483 | /* MBH10304's CIS_FUNCE is corrupted */ | ||
484 | node_id = &(tuple.TupleData[5]); | ||
485 | card_name = "FMV-J182"; | 478 | card_name = "FMV-J182"; |
486 | } else { | 479 | |
487 | while (tuple.TupleData[0] != CISTPL_FUNCE_LAN_NODE_ID ) { | 480 | len = pcmcia_get_tuple(link, CISTPL_FUNCE, &buf); |
488 | CS_CHECK(GetNextTuple, pcmcia_get_next_tuple(link, &tuple)); | 481 | if (len < 11) { |
489 | CS_CHECK(GetTupleData, pcmcia_get_tuple_data(link, &tuple)); | 482 | kfree(buf); |
483 | goto failed; | ||
490 | } | 484 | } |
491 | node_id = &(tuple.TupleData[2]); | 485 | /* Read MACID from CIS */ |
486 | for (i = 5; i < 11; i++) | ||
487 | dev->dev_addr[i] = buf[i]; | ||
488 | kfree(buf); | ||
489 | } else { | ||
490 | if (pcmcia_get_mac_from_cis(link, dev)) | ||
491 | goto failed; | ||
492 | if( cardtype == TDK ) { | 492 | if( cardtype == TDK ) { |
493 | card_name = "TDK LAK-CD021"; | 493 | card_name = "TDK LAK-CD021"; |
494 | } else if( cardtype == LA501 ) { | 494 | } else if( cardtype == LA501 ) { |
@@ -501,9 +501,6 @@ static int fmvj18x_config(struct pcmcia_device *link) | |||
501 | card_name = "C-NET(PC)C"; | 501 | card_name = "C-NET(PC)C"; |
502 | } | 502 | } |
503 | } | 503 | } |
504 | /* Read MACID from CIS */ | ||
505 | for (i = 0; i < 6; i++) | ||
506 | dev->dev_addr[i] = node_id[i]; | ||
507 | break; | 504 | break; |
508 | case UNGERMANN: | 505 | case UNGERMANN: |
509 | /* Read MACID from register */ | 506 | /* Read MACID from register */ |
@@ -513,12 +510,12 @@ static int fmvj18x_config(struct pcmcia_device *link) | |||
513 | break; | 510 | break; |
514 | case XXX10304: | 511 | case XXX10304: |
515 | /* Read MACID from Buggy CIS */ | 512 | /* Read MACID from Buggy CIS */ |
516 | if (fmvj18x_get_hwinfo(link, tuple.TupleData) == -1) { | 513 | if (fmvj18x_get_hwinfo(link, buggybuf) == -1) { |
517 | printk(KERN_NOTICE "fmvj18x_cs: unable to read hardware net address.\n"); | 514 | printk(KERN_NOTICE "fmvj18x_cs: unable to read hardware net address.\n"); |
518 | goto failed; | 515 | goto failed; |
519 | } | 516 | } |
520 | for (i = 0 ; i < 6; i++) { | 517 | for (i = 0 ; i < 6; i++) { |
521 | dev->dev_addr[i] = tuple.TupleData[i]; | 518 | dev->dev_addr[i] = buggybuf[i]; |
522 | } | 519 | } |
523 | card_name = "FMV-J182"; | 520 | card_name = "FMV-J182"; |
524 | break; | 521 | break; |
@@ -533,7 +530,7 @@ static int fmvj18x_config(struct pcmcia_device *link) | |||
533 | 530 | ||
534 | lp->cardtype = cardtype; | 531 | lp->cardtype = cardtype; |
535 | link->dev_node = &lp->node; | 532 | link->dev_node = &lp->node; |
536 | SET_NETDEV_DEV(dev, &handle_to_dev(link)); | 533 | SET_NETDEV_DEV(dev, &link->dev); |
537 | 534 | ||
538 | if (register_netdev(dev) != 0) { | 535 | if (register_netdev(dev) != 0) { |
539 | printk(KERN_NOTICE "fmvj18x_cs: register_netdev() failed\n"); | 536 | printk(KERN_NOTICE "fmvj18x_cs: register_netdev() failed\n"); |
@@ -551,9 +548,6 @@ static int fmvj18x_config(struct pcmcia_device *link) | |||
551 | 548 | ||
552 | return 0; | 549 | return 0; |
553 | 550 | ||
554 | cs_failed: | ||
555 | /* All Card Services errors end up here */ | ||
556 | cs_error(link, last_fn, last_ret); | ||
557 | failed: | 551 | failed: |
558 | fmvj18x_release(link); | 552 | fmvj18x_release(link); |
559 | return -ENODEV; | 553 | return -ENODEV; |
@@ -571,16 +565,14 @@ static int fmvj18x_get_hwinfo(struct pcmcia_device *link, u_char *node_id) | |||
571 | req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; | 565 | req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; |
572 | req.Base = 0; req.Size = 0; | 566 | req.Base = 0; req.Size = 0; |
573 | req.AccessSpeed = 0; | 567 | req.AccessSpeed = 0; |
574 | i = pcmcia_request_window(&link, &req, &link->win); | 568 | i = pcmcia_request_window(link, &req, &link->win); |
575 | if (i != 0) { | 569 | if (i != 0) |
576 | cs_error(link, RequestWindow, i); | ||
577 | return -1; | 570 | return -1; |
578 | } | ||
579 | 571 | ||
580 | base = ioremap(req.Base, req.Size); | 572 | base = ioremap(req.Base, req.Size); |
581 | mem.Page = 0; | 573 | mem.Page = 0; |
582 | mem.CardOffset = 0; | 574 | mem.CardOffset = 0; |
583 | pcmcia_map_mem_page(link->win, &mem); | 575 | pcmcia_map_mem_page(link, link->win, &mem); |
584 | 576 | ||
585 | /* | 577 | /* |
586 | * MBH10304 CISTPL_FUNCE_LAN_NODE_ID format | 578 | * MBH10304 CISTPL_FUNCE_LAN_NODE_ID format |
@@ -605,9 +597,7 @@ static int fmvj18x_get_hwinfo(struct pcmcia_device *link, u_char *node_id) | |||
605 | } | 597 | } |
606 | 598 | ||
607 | iounmap(base); | 599 | iounmap(base); |
608 | j = pcmcia_release_window(link->win); | 600 | j = pcmcia_release_window(link, link->win); |
609 | if (j != 0) | ||
610 | cs_error(link, ReleaseWindow, j); | ||
611 | return (i != 0x200) ? 0 : -1; | 601 | return (i != 0x200) ? 0 : -1; |
612 | 602 | ||
613 | } /* fmvj18x_get_hwinfo */ | 603 | } /* fmvj18x_get_hwinfo */ |
@@ -626,11 +616,9 @@ static int fmvj18x_setup_mfc(struct pcmcia_device *link) | |||
626 | req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; | 616 | req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; |
627 | req.Base = 0; req.Size = 0; | 617 | req.Base = 0; req.Size = 0; |
628 | req.AccessSpeed = 0; | 618 | req.AccessSpeed = 0; |
629 | i = pcmcia_request_window(&link, &req, &link->win); | 619 | i = pcmcia_request_window(link, &req, &link->win); |
630 | if (i != 0) { | 620 | if (i != 0) |
631 | cs_error(link, RequestWindow, i); | ||
632 | return -1; | 621 | return -1; |
633 | } | ||
634 | 622 | ||
635 | lp->base = ioremap(req.Base, req.Size); | 623 | lp->base = ioremap(req.Base, req.Size); |
636 | if (lp->base == NULL) { | 624 | if (lp->base == NULL) { |
@@ -640,11 +628,10 @@ static int fmvj18x_setup_mfc(struct pcmcia_device *link) | |||
640 | 628 | ||
641 | mem.Page = 0; | 629 | mem.Page = 0; |
642 | mem.CardOffset = 0; | 630 | mem.CardOffset = 0; |
643 | i = pcmcia_map_mem_page(link->win, &mem); | 631 | i = pcmcia_map_mem_page(link, link->win, &mem); |
644 | if (i != 0) { | 632 | if (i != 0) { |
645 | iounmap(lp->base); | 633 | iounmap(lp->base); |
646 | lp->base = NULL; | 634 | lp->base = NULL; |
647 | cs_error(link, MapMemPage, i); | ||
648 | return -1; | 635 | return -1; |
649 | } | 636 | } |
650 | 637 | ||
@@ -671,15 +658,13 @@ static void fmvj18x_release(struct pcmcia_device *link) | |||
671 | u_char __iomem *tmp; | 658 | u_char __iomem *tmp; |
672 | int j; | 659 | int j; |
673 | 660 | ||
674 | DEBUG(0, "fmvj18x_release(0x%p)\n", link); | 661 | dev_dbg(&link->dev, "fmvj18x_release\n"); |
675 | 662 | ||
676 | if (lp->base != NULL) { | 663 | if (lp->base != NULL) { |
677 | tmp = lp->base; | 664 | tmp = lp->base; |
678 | lp->base = NULL; /* set NULL before iounmap */ | 665 | lp->base = NULL; /* set NULL before iounmap */ |
679 | iounmap(tmp); | 666 | iounmap(tmp); |
680 | j = pcmcia_release_window(link->win); | 667 | j = pcmcia_release_window(link, link->win); |
681 | if (j != 0) | ||
682 | cs_error(link, ReleaseWindow, j); | ||
683 | } | 668 | } |
684 | 669 | ||
685 | pcmcia_disable_device(link); | 670 | pcmcia_disable_device(link); |
@@ -788,8 +773,8 @@ static irqreturn_t fjn_interrupt(int dummy, void *dev_id) | |||
788 | outb(tx_stat, ioaddr + TX_STATUS); | 773 | outb(tx_stat, ioaddr + TX_STATUS); |
789 | outb(rx_stat, ioaddr + RX_STATUS); | 774 | outb(rx_stat, ioaddr + RX_STATUS); |
790 | 775 | ||
791 | DEBUG(4, "%s: interrupt, rx_status %02x.\n", dev->name, rx_stat); | 776 | pr_debug("%s: interrupt, rx_status %02x.\n", dev->name, rx_stat); |
792 | DEBUG(4, " tx_status %02x.\n", tx_stat); | 777 | pr_debug(" tx_status %02x.\n", tx_stat); |
793 | 778 | ||
794 | if (rx_stat || (inb(ioaddr + RX_MODE) & F_BUF_EMP) == 0) { | 779 | if (rx_stat || (inb(ioaddr + RX_MODE) & F_BUF_EMP) == 0) { |
795 | /* there is packet(s) in rx buffer */ | 780 | /* there is packet(s) in rx buffer */ |
@@ -809,8 +794,8 @@ static irqreturn_t fjn_interrupt(int dummy, void *dev_id) | |||
809 | } | 794 | } |
810 | netif_wake_queue(dev); | 795 | netif_wake_queue(dev); |
811 | } | 796 | } |
812 | DEBUG(4, "%s: exiting interrupt,\n", dev->name); | 797 | pr_debug("%s: exiting interrupt,\n", dev->name); |
813 | DEBUG(4, " tx_status %02x, rx_status %02x.\n", tx_stat, rx_stat); | 798 | pr_debug(" tx_status %02x, rx_status %02x.\n", tx_stat, rx_stat); |
814 | 799 | ||
815 | outb(D_TX_INTR, ioaddr + TX_INTR); | 800 | outb(D_TX_INTR, ioaddr + TX_INTR); |
816 | outb(D_RX_INTR, ioaddr + RX_INTR); | 801 | outb(D_RX_INTR, ioaddr + RX_INTR); |
@@ -882,7 +867,7 @@ static netdev_tx_t fjn_start_xmit(struct sk_buff *skb, | |||
882 | return NETDEV_TX_BUSY; | 867 | return NETDEV_TX_BUSY; |
883 | } | 868 | } |
884 | 869 | ||
885 | DEBUG(4, "%s: Transmitting a packet of length %lu.\n", | 870 | pr_debug("%s: Transmitting a packet of length %lu.\n", |
886 | dev->name, (unsigned long)skb->len); | 871 | dev->name, (unsigned long)skb->len); |
887 | dev->stats.tx_bytes += skb->len; | 872 | dev->stats.tx_bytes += skb->len; |
888 | 873 | ||
@@ -937,7 +922,7 @@ static void fjn_reset(struct net_device *dev) | |||
937 | unsigned int ioaddr = dev->base_addr; | 922 | unsigned int ioaddr = dev->base_addr; |
938 | int i; | 923 | int i; |
939 | 924 | ||
940 | DEBUG(4, "fjn_reset(%s) called.\n",dev->name); | 925 | pr_debug("fjn_reset(%s) called.\n",dev->name); |
941 | 926 | ||
942 | /* Reset controller */ | 927 | /* Reset controller */ |
943 | if( sram_config == 0 ) | 928 | if( sram_config == 0 ) |
@@ -1015,13 +1000,13 @@ static void fjn_rx(struct net_device *dev) | |||
1015 | unsigned int ioaddr = dev->base_addr; | 1000 | unsigned int ioaddr = dev->base_addr; |
1016 | int boguscount = 10; /* 5 -> 10: by agy 19940922 */ | 1001 | int boguscount = 10; /* 5 -> 10: by agy 19940922 */ |
1017 | 1002 | ||
1018 | DEBUG(4, "%s: in rx_packet(), rx_status %02x.\n", | 1003 | pr_debug("%s: in rx_packet(), rx_status %02x.\n", |
1019 | dev->name, inb(ioaddr + RX_STATUS)); | 1004 | dev->name, inb(ioaddr + RX_STATUS)); |
1020 | 1005 | ||
1021 | while ((inb(ioaddr + RX_MODE) & F_BUF_EMP) == 0) { | 1006 | while ((inb(ioaddr + RX_MODE) & F_BUF_EMP) == 0) { |
1022 | u_short status = inw(ioaddr + DATAPORT); | 1007 | u_short status = inw(ioaddr + DATAPORT); |
1023 | 1008 | ||
1024 | DEBUG(4, "%s: Rxing packet mode %02x status %04x.\n", | 1009 | pr_debug("%s: Rxing packet mode %02x status %04x.\n", |
1025 | dev->name, inb(ioaddr + RX_MODE), status); | 1010 | dev->name, inb(ioaddr + RX_MODE), status); |
1026 | #ifndef final_version | 1011 | #ifndef final_version |
1027 | if (status == 0) { | 1012 | if (status == 0) { |
@@ -1061,16 +1046,14 @@ static void fjn_rx(struct net_device *dev) | |||
1061 | (pkt_len + 1) >> 1); | 1046 | (pkt_len + 1) >> 1); |
1062 | skb->protocol = eth_type_trans(skb, dev); | 1047 | skb->protocol = eth_type_trans(skb, dev); |
1063 | 1048 | ||
1064 | #ifdef PCMCIA_DEBUG | 1049 | { |
1065 | if (pc_debug > 5) { | ||
1066 | int i; | 1050 | int i; |
1067 | printk(KERN_DEBUG "%s: Rxed packet of length %d: ", | 1051 | pr_debug("%s: Rxed packet of length %d: ", |
1068 | dev->name, pkt_len); | 1052 | dev->name, pkt_len); |
1069 | for (i = 0; i < 14; i++) | 1053 | for (i = 0; i < 14; i++) |
1070 | printk(" %02x", skb->data[i]); | 1054 | pr_debug(" %02x", skb->data[i]); |
1071 | printk(".\n"); | 1055 | pr_debug(".\n"); |
1072 | } | 1056 | } |
1073 | #endif | ||
1074 | 1057 | ||
1075 | netif_rx(skb); | 1058 | netif_rx(skb); |
1076 | dev->stats.rx_packets++; | 1059 | dev->stats.rx_packets++; |
@@ -1094,7 +1077,7 @@ static void fjn_rx(struct net_device *dev) | |||
1094 | } | 1077 | } |
1095 | 1078 | ||
1096 | if (i > 0) | 1079 | if (i > 0) |
1097 | DEBUG(5, "%s: Exint Rx packet with mode %02x after " | 1080 | pr_debug("%s: Exint Rx packet with mode %02x after " |
1098 | "%d ticks.\n", dev->name, inb(ioaddr + RX_MODE), i); | 1081 | "%d ticks.\n", dev->name, inb(ioaddr + RX_MODE), i); |
1099 | } | 1082 | } |
1100 | */ | 1083 | */ |
@@ -1112,24 +1095,8 @@ static void netdev_get_drvinfo(struct net_device *dev, | |||
1112 | sprintf(info->bus_info, "PCMCIA 0x%lx", dev->base_addr); | 1095 | sprintf(info->bus_info, "PCMCIA 0x%lx", dev->base_addr); |
1113 | } | 1096 | } |
1114 | 1097 | ||
1115 | #ifdef PCMCIA_DEBUG | ||
1116 | static u32 netdev_get_msglevel(struct net_device *dev) | ||
1117 | { | ||
1118 | return pc_debug; | ||
1119 | } | ||
1120 | |||
1121 | static void netdev_set_msglevel(struct net_device *dev, u32 level) | ||
1122 | { | ||
1123 | pc_debug = level; | ||
1124 | } | ||
1125 | #endif /* PCMCIA_DEBUG */ | ||
1126 | |||
1127 | static const struct ethtool_ops netdev_ethtool_ops = { | 1098 | static const struct ethtool_ops netdev_ethtool_ops = { |
1128 | .get_drvinfo = netdev_get_drvinfo, | 1099 | .get_drvinfo = netdev_get_drvinfo, |
1129 | #ifdef PCMCIA_DEBUG | ||
1130 | .get_msglevel = netdev_get_msglevel, | ||
1131 | .set_msglevel = netdev_set_msglevel, | ||
1132 | #endif /* PCMCIA_DEBUG */ | ||
1133 | }; | 1100 | }; |
1134 | 1101 | ||
1135 | static int fjn_config(struct net_device *dev, struct ifmap *map){ | 1102 | static int fjn_config(struct net_device *dev, struct ifmap *map){ |
@@ -1141,7 +1108,7 @@ static int fjn_open(struct net_device *dev) | |||
1141 | struct local_info_t *lp = netdev_priv(dev); | 1108 | struct local_info_t *lp = netdev_priv(dev); |
1142 | struct pcmcia_device *link = lp->p_dev; | 1109 | struct pcmcia_device *link = lp->p_dev; |
1143 | 1110 | ||
1144 | DEBUG(4, "fjn_open('%s').\n", dev->name); | 1111 | pr_debug("fjn_open('%s').\n", dev->name); |
1145 | 1112 | ||
1146 | if (!pcmcia_dev_present(link)) | 1113 | if (!pcmcia_dev_present(link)) |
1147 | return -ENODEV; | 1114 | return -ENODEV; |
@@ -1167,7 +1134,7 @@ static int fjn_close(struct net_device *dev) | |||
1167 | struct pcmcia_device *link = lp->p_dev; | 1134 | struct pcmcia_device *link = lp->p_dev; |
1168 | unsigned int ioaddr = dev->base_addr; | 1135 | unsigned int ioaddr = dev->base_addr; |
1169 | 1136 | ||
1170 | DEBUG(4, "fjn_close('%s').\n", dev->name); | 1137 | pr_debug("fjn_close('%s').\n", dev->name); |
1171 | 1138 | ||
1172 | lp->open_time = 0; | 1139 | lp->open_time = 0; |
1173 | netif_stop_queue(dev); | 1140 | netif_stop_queue(dev); |
diff --git a/drivers/net/pcmcia/ibmtr_cs.c b/drivers/net/pcmcia/ibmtr_cs.c index 06618af1a468..37f4a6fdc3ef 100644 --- a/drivers/net/pcmcia/ibmtr_cs.c +++ b/drivers/net/pcmcia/ibmtr_cs.c | |||
@@ -69,17 +69,6 @@ | |||
69 | #define PCMCIA | 69 | #define PCMCIA |
70 | #include "../tokenring/ibmtr.c" | 70 | #include "../tokenring/ibmtr.c" |
71 | 71 | ||
72 | #ifdef PCMCIA_DEBUG | ||
73 | static int pc_debug = PCMCIA_DEBUG; | ||
74 | module_param(pc_debug, int, 0); | ||
75 | #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) | ||
76 | static char *version = | ||
77 | "ibmtr_cs.c 1.10 1996/01/06 05:19:00 (Steve Kipisz)\n" | ||
78 | " 2.2.7 1999/05/03 12:00:00 (Mike Phillips)\n" | ||
79 | " 2.4.2 2001/30/28 Midnight (Burt Silverman)\n"; | ||
80 | #else | ||
81 | #define DEBUG(n, args...) | ||
82 | #endif | ||
83 | 72 | ||
84 | /*====================================================================*/ | 73 | /*====================================================================*/ |
85 | 74 | ||
@@ -130,6 +119,12 @@ static const struct ethtool_ops netdev_ethtool_ops = { | |||
130 | .get_drvinfo = netdev_get_drvinfo, | 119 | .get_drvinfo = netdev_get_drvinfo, |
131 | }; | 120 | }; |
132 | 121 | ||
122 | static irqreturn_t ibmtr_interrupt(int irq, void *dev_id) { | ||
123 | ibmtr_dev_t *info = dev_id; | ||
124 | struct net_device *dev = info->dev; | ||
125 | return tok_interrupt(irq, dev); | ||
126 | }; | ||
127 | |||
133 | /*====================================================================== | 128 | /*====================================================================== |
134 | 129 | ||
135 | ibmtr_attach() creates an "instance" of the driver, allocating | 130 | ibmtr_attach() creates an "instance" of the driver, allocating |
@@ -143,7 +138,7 @@ static int __devinit ibmtr_attach(struct pcmcia_device *link) | |||
143 | ibmtr_dev_t *info; | 138 | ibmtr_dev_t *info; |
144 | struct net_device *dev; | 139 | struct net_device *dev; |
145 | 140 | ||
146 | DEBUG(0, "ibmtr_attach()\n"); | 141 | dev_dbg(&link->dev, "ibmtr_attach()\n"); |
147 | 142 | ||
148 | /* Create new token-ring device */ | 143 | /* Create new token-ring device */ |
149 | info = kzalloc(sizeof(*info), GFP_KERNEL); | 144 | info = kzalloc(sizeof(*info), GFP_KERNEL); |
@@ -161,14 +156,13 @@ static int __devinit ibmtr_attach(struct pcmcia_device *link) | |||
161 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; | 156 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; |
162 | link->io.NumPorts1 = 4; | 157 | link->io.NumPorts1 = 4; |
163 | link->io.IOAddrLines = 16; | 158 | link->io.IOAddrLines = 16; |
164 | link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; | 159 | link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; |
165 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; | 160 | link->irq.Handler = ibmtr_interrupt; |
166 | link->irq.Handler = &tok_interrupt; | ||
167 | link->conf.Attributes = CONF_ENABLE_IRQ; | 161 | link->conf.Attributes = CONF_ENABLE_IRQ; |
168 | link->conf.IntType = INT_MEMORY_AND_IO; | 162 | link->conf.IntType = INT_MEMORY_AND_IO; |
169 | link->conf.Present = PRESENT_OPTION; | 163 | link->conf.Present = PRESENT_OPTION; |
170 | 164 | ||
171 | link->irq.Instance = info->dev = dev; | 165 | info->dev = dev; |
172 | 166 | ||
173 | SET_ETHTOOL_OPS(dev, &netdev_ethtool_ops); | 167 | SET_ETHTOOL_OPS(dev, &netdev_ethtool_ops); |
174 | 168 | ||
@@ -190,7 +184,7 @@ static void ibmtr_detach(struct pcmcia_device *link) | |||
190 | struct net_device *dev = info->dev; | 184 | struct net_device *dev = info->dev; |
191 | struct tok_info *ti = netdev_priv(dev); | 185 | struct tok_info *ti = netdev_priv(dev); |
192 | 186 | ||
193 | DEBUG(0, "ibmtr_detach(0x%p)\n", link); | 187 | dev_dbg(&link->dev, "ibmtr_detach\n"); |
194 | 188 | ||
195 | /* | 189 | /* |
196 | * When the card removal interrupt hits tok_interrupt(), | 190 | * When the card removal interrupt hits tok_interrupt(), |
@@ -217,9 +211,6 @@ static void ibmtr_detach(struct pcmcia_device *link) | |||
217 | 211 | ||
218 | ======================================================================*/ | 212 | ======================================================================*/ |
219 | 213 | ||
220 | #define CS_CHECK(fn, ret) \ | ||
221 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | ||
222 | |||
223 | static int __devinit ibmtr_config(struct pcmcia_device *link) | 214 | static int __devinit ibmtr_config(struct pcmcia_device *link) |
224 | { | 215 | { |
225 | ibmtr_dev_t *info = link->priv; | 216 | ibmtr_dev_t *info = link->priv; |
@@ -227,9 +218,9 @@ static int __devinit ibmtr_config(struct pcmcia_device *link) | |||
227 | struct tok_info *ti = netdev_priv(dev); | 218 | struct tok_info *ti = netdev_priv(dev); |
228 | win_req_t req; | 219 | win_req_t req; |
229 | memreq_t mem; | 220 | memreq_t mem; |
230 | int i, last_ret, last_fn; | 221 | int i, ret; |
231 | 222 | ||
232 | DEBUG(0, "ibmtr_config(0x%p)\n", link); | 223 | dev_dbg(&link->dev, "ibmtr_config\n"); |
233 | 224 | ||
234 | link->conf.ConfigIndex = 0x61; | 225 | link->conf.ConfigIndex = 0x61; |
235 | 226 | ||
@@ -241,11 +232,15 @@ static int __devinit ibmtr_config(struct pcmcia_device *link) | |||
241 | if (i != 0) { | 232 | if (i != 0) { |
242 | /* Couldn't get 0xA20-0xA23. Try ALTERNATE at 0xA24-0xA27. */ | 233 | /* Couldn't get 0xA20-0xA23. Try ALTERNATE at 0xA24-0xA27. */ |
243 | link->io.BasePort1 = 0xA24; | 234 | link->io.BasePort1 = 0xA24; |
244 | CS_CHECK(RequestIO, pcmcia_request_io(link, &link->io)); | 235 | ret = pcmcia_request_io(link, &link->io); |
236 | if (ret) | ||
237 | goto failed; | ||
245 | } | 238 | } |
246 | dev->base_addr = link->io.BasePort1; | 239 | dev->base_addr = link->io.BasePort1; |
247 | 240 | ||
248 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); | 241 | ret = pcmcia_request_irq(link, &link->irq); |
242 | if (ret) | ||
243 | goto failed; | ||
249 | dev->irq = link->irq.AssignedIRQ; | 244 | dev->irq = link->irq.AssignedIRQ; |
250 | ti->irq = link->irq.AssignedIRQ; | 245 | ti->irq = link->irq.AssignedIRQ; |
251 | ti->global_int_enable=GLOBAL_INT_ENABLE+((dev->irq==9) ? 2 : dev->irq); | 246 | ti->global_int_enable=GLOBAL_INT_ENABLE+((dev->irq==9) ? 2 : dev->irq); |
@@ -256,11 +251,15 @@ static int __devinit ibmtr_config(struct pcmcia_device *link) | |||
256 | req.Base = 0; | 251 | req.Base = 0; |
257 | req.Size = 0x2000; | 252 | req.Size = 0x2000; |
258 | req.AccessSpeed = 250; | 253 | req.AccessSpeed = 250; |
259 | CS_CHECK(RequestWindow, pcmcia_request_window(&link, &req, &link->win)); | 254 | ret = pcmcia_request_window(link, &req, &link->win); |
255 | if (ret) | ||
256 | goto failed; | ||
260 | 257 | ||
261 | mem.CardOffset = mmiobase; | 258 | mem.CardOffset = mmiobase; |
262 | mem.Page = 0; | 259 | mem.Page = 0; |
263 | CS_CHECK(MapMemPage, pcmcia_map_mem_page(link->win, &mem)); | 260 | ret = pcmcia_map_mem_page(link, link->win, &mem); |
261 | if (ret) | ||
262 | goto failed; | ||
264 | ti->mmio = ioremap(req.Base, req.Size); | 263 | ti->mmio = ioremap(req.Base, req.Size); |
265 | 264 | ||
266 | /* Allocate the SRAM memory window */ | 265 | /* Allocate the SRAM memory window */ |
@@ -269,17 +268,23 @@ static int __devinit ibmtr_config(struct pcmcia_device *link) | |||
269 | req.Base = 0; | 268 | req.Base = 0; |
270 | req.Size = sramsize * 1024; | 269 | req.Size = sramsize * 1024; |
271 | req.AccessSpeed = 250; | 270 | req.AccessSpeed = 250; |
272 | CS_CHECK(RequestWindow, pcmcia_request_window(&link, &req, &info->sram_win_handle)); | 271 | ret = pcmcia_request_window(link, &req, &info->sram_win_handle); |
272 | if (ret) | ||
273 | goto failed; | ||
273 | 274 | ||
274 | mem.CardOffset = srambase; | 275 | mem.CardOffset = srambase; |
275 | mem.Page = 0; | 276 | mem.Page = 0; |
276 | CS_CHECK(MapMemPage, pcmcia_map_mem_page(info->sram_win_handle, &mem)); | 277 | ret = pcmcia_map_mem_page(link, info->sram_win_handle, &mem); |
278 | if (ret) | ||
279 | goto failed; | ||
277 | 280 | ||
278 | ti->sram_base = mem.CardOffset >> 12; | 281 | ti->sram_base = mem.CardOffset >> 12; |
279 | ti->sram_virt = ioremap(req.Base, req.Size); | 282 | ti->sram_virt = ioremap(req.Base, req.Size); |
280 | ti->sram_phys = req.Base; | 283 | ti->sram_phys = req.Base; |
281 | 284 | ||
282 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); | 285 | ret = pcmcia_request_configuration(link, &link->conf); |
286 | if (ret) | ||
287 | goto failed; | ||
283 | 288 | ||
284 | /* Set up the Token-Ring Controller Configuration Register and | 289 | /* Set up the Token-Ring Controller Configuration Register and |
285 | turn on the card. Check the "Local Area Network Credit Card | 290 | turn on the card. Check the "Local Area Network Credit Card |
@@ -287,7 +292,7 @@ static int __devinit ibmtr_config(struct pcmcia_device *link) | |||
287 | ibmtr_hw_setup(dev, mmiobase); | 292 | ibmtr_hw_setup(dev, mmiobase); |
288 | 293 | ||
289 | link->dev_node = &info->node; | 294 | link->dev_node = &info->node; |
290 | SET_NETDEV_DEV(dev, &handle_to_dev(link)); | 295 | SET_NETDEV_DEV(dev, &link->dev); |
291 | 296 | ||
292 | i = ibmtr_probe_card(dev); | 297 | i = ibmtr_probe_card(dev); |
293 | if (i != 0) { | 298 | if (i != 0) { |
@@ -305,8 +310,6 @@ static int __devinit ibmtr_config(struct pcmcia_device *link) | |||
305 | dev->dev_addr); | 310 | dev->dev_addr); |
306 | return 0; | 311 | return 0; |
307 | 312 | ||
308 | cs_failed: | ||
309 | cs_error(link, last_fn, last_ret); | ||
310 | failed: | 313 | failed: |
311 | ibmtr_release(link); | 314 | ibmtr_release(link); |
312 | return -ENODEV; | 315 | return -ENODEV; |
@@ -325,12 +328,12 @@ static void ibmtr_release(struct pcmcia_device *link) | |||
325 | ibmtr_dev_t *info = link->priv; | 328 | ibmtr_dev_t *info = link->priv; |
326 | struct net_device *dev = info->dev; | 329 | struct net_device *dev = info->dev; |
327 | 330 | ||
328 | DEBUG(0, "ibmtr_release(0x%p)\n", link); | 331 | dev_dbg(&link->dev, "ibmtr_release\n"); |
329 | 332 | ||
330 | if (link->win) { | 333 | if (link->win) { |
331 | struct tok_info *ti = netdev_priv(dev); | 334 | struct tok_info *ti = netdev_priv(dev); |
332 | iounmap(ti->mmio); | 335 | iounmap(ti->mmio); |
333 | pcmcia_release_window(info->sram_win_handle); | 336 | pcmcia_release_window(link, info->sram_win_handle); |
334 | } | 337 | } |
335 | pcmcia_disable_device(link); | 338 | pcmcia_disable_device(link); |
336 | } | 339 | } |
diff --git a/drivers/net/pcmcia/nmclan_cs.c b/drivers/net/pcmcia/nmclan_cs.c index 5ed6339c52bc..dae5ef6b2609 100644 --- a/drivers/net/pcmcia/nmclan_cs.c +++ b/drivers/net/pcmcia/nmclan_cs.c | |||
@@ -381,13 +381,6 @@ typedef struct _mace_private { | |||
381 | Private Global Variables | 381 | Private Global Variables |
382 | ---------------------------------------------------------------------------- */ | 382 | ---------------------------------------------------------------------------- */ |
383 | 383 | ||
384 | #ifdef PCMCIA_DEBUG | ||
385 | static char rcsid[] = | ||
386 | "nmclan_cs.c,v 0.16 1995/07/01 06:42:17 rpao Exp rpao"; | ||
387 | static char *version = | ||
388 | DRV_NAME " " DRV_VERSION " (Roger C. Pao)"; | ||
389 | #endif | ||
390 | |||
391 | static const char *if_names[]={ | 384 | static const char *if_names[]={ |
392 | "Auto", "10baseT", "BNC", | 385 | "Auto", "10baseT", "BNC", |
393 | }; | 386 | }; |
@@ -406,12 +399,6 @@ MODULE_LICENSE("GPL"); | |||
406 | /* 0=auto, 1=10baseT, 2 = 10base2, default=auto */ | 399 | /* 0=auto, 1=10baseT, 2 = 10base2, default=auto */ |
407 | INT_MODULE_PARM(if_port, 0); | 400 | INT_MODULE_PARM(if_port, 0); |
408 | 401 | ||
409 | #ifdef PCMCIA_DEBUG | ||
410 | INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG); | ||
411 | #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) | ||
412 | #else | ||
413 | #define DEBUG(n, args...) | ||
414 | #endif | ||
415 | 402 | ||
416 | /* ---------------------------------------------------------------------------- | 403 | /* ---------------------------------------------------------------------------- |
417 | Function Prototypes | 404 | Function Prototypes |
@@ -462,8 +449,7 @@ static int nmclan_probe(struct pcmcia_device *link) | |||
462 | mace_private *lp; | 449 | mace_private *lp; |
463 | struct net_device *dev; | 450 | struct net_device *dev; |
464 | 451 | ||
465 | DEBUG(0, "nmclan_attach()\n"); | 452 | dev_dbg(&link->dev, "nmclan_attach()\n"); |
466 | DEBUG(1, "%s\n", rcsid); | ||
467 | 453 | ||
468 | /* Create new ethernet device */ | 454 | /* Create new ethernet device */ |
469 | dev = alloc_etherdev(sizeof(mace_private)); | 455 | dev = alloc_etherdev(sizeof(mace_private)); |
@@ -477,10 +463,8 @@ static int nmclan_probe(struct pcmcia_device *link) | |||
477 | link->io.NumPorts1 = 32; | 463 | link->io.NumPorts1 = 32; |
478 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; | 464 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; |
479 | link->io.IOAddrLines = 5; | 465 | link->io.IOAddrLines = 5; |
480 | link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; | 466 | link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; |
481 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; | ||
482 | link->irq.Handler = &mace_interrupt; | 467 | link->irq.Handler = &mace_interrupt; |
483 | link->irq.Instance = dev; | ||
484 | link->conf.Attributes = CONF_ENABLE_IRQ; | 468 | link->conf.Attributes = CONF_ENABLE_IRQ; |
485 | link->conf.IntType = INT_MEMORY_AND_IO; | 469 | link->conf.IntType = INT_MEMORY_AND_IO; |
486 | link->conf.ConfigIndex = 1; | 470 | link->conf.ConfigIndex = 1; |
@@ -507,7 +491,7 @@ static void nmclan_detach(struct pcmcia_device *link) | |||
507 | { | 491 | { |
508 | struct net_device *dev = link->priv; | 492 | struct net_device *dev = link->priv; |
509 | 493 | ||
510 | DEBUG(0, "nmclan_detach(0x%p)\n", link); | 494 | dev_dbg(&link->dev, "nmclan_detach\n"); |
511 | 495 | ||
512 | if (link->dev_node) | 496 | if (link->dev_node) |
513 | unregister_netdev(dev); | 497 | unregister_netdev(dev); |
@@ -654,37 +638,40 @@ nmclan_config | |||
654 | ethernet device available to the system. | 638 | ethernet device available to the system. |
655 | ---------------------------------------------------------------------------- */ | 639 | ---------------------------------------------------------------------------- */ |
656 | 640 | ||
657 | #define CS_CHECK(fn, ret) \ | ||
658 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | ||
659 | |||
660 | static int nmclan_config(struct pcmcia_device *link) | 641 | static int nmclan_config(struct pcmcia_device *link) |
661 | { | 642 | { |
662 | struct net_device *dev = link->priv; | 643 | struct net_device *dev = link->priv; |
663 | mace_private *lp = netdev_priv(dev); | 644 | mace_private *lp = netdev_priv(dev); |
664 | tuple_t tuple; | 645 | u8 *buf; |
665 | u_char buf[64]; | 646 | size_t len; |
666 | int i, last_ret, last_fn; | 647 | int i, ret; |
667 | unsigned int ioaddr; | 648 | unsigned int ioaddr; |
668 | 649 | ||
669 | DEBUG(0, "nmclan_config(0x%p)\n", link); | 650 | dev_dbg(&link->dev, "nmclan_config\n"); |
651 | |||
652 | ret = pcmcia_request_io(link, &link->io); | ||
653 | if (ret) | ||
654 | goto failed; | ||
655 | ret = pcmcia_request_irq(link, &link->irq); | ||
656 | if (ret) | ||
657 | goto failed; | ||
658 | ret = pcmcia_request_configuration(link, &link->conf); | ||
659 | if (ret) | ||
660 | goto failed; | ||
670 | 661 | ||
671 | CS_CHECK(RequestIO, pcmcia_request_io(link, &link->io)); | ||
672 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); | ||
673 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); | ||
674 | dev->irq = link->irq.AssignedIRQ; | 662 | dev->irq = link->irq.AssignedIRQ; |
675 | dev->base_addr = link->io.BasePort1; | 663 | dev->base_addr = link->io.BasePort1; |
676 | 664 | ||
677 | ioaddr = dev->base_addr; | 665 | ioaddr = dev->base_addr; |
678 | 666 | ||
679 | /* Read the ethernet address from the CIS. */ | 667 | /* Read the ethernet address from the CIS. */ |
680 | tuple.DesiredTuple = 0x80 /* CISTPL_CFTABLE_ENTRY_MISC */; | 668 | len = pcmcia_get_tuple(link, 0x80, &buf); |
681 | tuple.TupleData = buf; | 669 | if (!buf || len < ETHER_ADDR_LEN) { |
682 | tuple.TupleDataMax = 64; | 670 | kfree(buf); |
683 | tuple.TupleOffset = 0; | 671 | goto failed; |
684 | tuple.Attributes = 0; | 672 | } |
685 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple)); | 673 | memcpy(dev->dev_addr, buf, ETHER_ADDR_LEN); |
686 | CS_CHECK(GetTupleData, pcmcia_get_tuple_data(link, &tuple)); | 674 | kfree(buf); |
687 | memcpy(dev->dev_addr, tuple.TupleData, ETHER_ADDR_LEN); | ||
688 | 675 | ||
689 | /* Verify configuration by reading the MACE ID. */ | 676 | /* Verify configuration by reading the MACE ID. */ |
690 | { | 677 | { |
@@ -693,7 +680,7 @@ static int nmclan_config(struct pcmcia_device *link) | |||
693 | sig[0] = mace_read(lp, ioaddr, MACE_CHIPIDL); | 680 | sig[0] = mace_read(lp, ioaddr, MACE_CHIPIDL); |
694 | sig[1] = mace_read(lp, ioaddr, MACE_CHIPIDH); | 681 | sig[1] = mace_read(lp, ioaddr, MACE_CHIPIDH); |
695 | if ((sig[0] == 0x40) && ((sig[1] & 0x0F) == 0x09)) { | 682 | if ((sig[0] == 0x40) && ((sig[1] & 0x0F) == 0x09)) { |
696 | DEBUG(0, "nmclan_cs configured: mace id=%x %x\n", | 683 | dev_dbg(&link->dev, "nmclan_cs configured: mace id=%x %x\n", |
697 | sig[0], sig[1]); | 684 | sig[0], sig[1]); |
698 | } else { | 685 | } else { |
699 | printk(KERN_NOTICE "nmclan_cs: mace id not found: %x %x should" | 686 | printk(KERN_NOTICE "nmclan_cs: mace id not found: %x %x should" |
@@ -712,7 +699,7 @@ static int nmclan_config(struct pcmcia_device *link) | |||
712 | printk(KERN_NOTICE "nmclan_cs: invalid if_port requested\n"); | 699 | printk(KERN_NOTICE "nmclan_cs: invalid if_port requested\n"); |
713 | 700 | ||
714 | link->dev_node = &lp->node; | 701 | link->dev_node = &lp->node; |
715 | SET_NETDEV_DEV(dev, &handle_to_dev(link)); | 702 | SET_NETDEV_DEV(dev, &link->dev); |
716 | 703 | ||
717 | i = register_netdev(dev); | 704 | i = register_netdev(dev); |
718 | if (i != 0) { | 705 | if (i != 0) { |
@@ -729,8 +716,6 @@ static int nmclan_config(struct pcmcia_device *link) | |||
729 | dev->dev_addr); | 716 | dev->dev_addr); |
730 | return 0; | 717 | return 0; |
731 | 718 | ||
732 | cs_failed: | ||
733 | cs_error(link, last_fn, last_ret); | ||
734 | failed: | 719 | failed: |
735 | nmclan_release(link); | 720 | nmclan_release(link); |
736 | return -ENODEV; | 721 | return -ENODEV; |
@@ -744,7 +729,7 @@ nmclan_release | |||
744 | ---------------------------------------------------------------------------- */ | 729 | ---------------------------------------------------------------------------- */ |
745 | static void nmclan_release(struct pcmcia_device *link) | 730 | static void nmclan_release(struct pcmcia_device *link) |
746 | { | 731 | { |
747 | DEBUG(0, "nmclan_release(0x%p)\n", link); | 732 | dev_dbg(&link->dev, "nmclan_release\n"); |
748 | pcmcia_disable_device(link); | 733 | pcmcia_disable_device(link); |
749 | } | 734 | } |
750 | 735 | ||
@@ -795,7 +780,7 @@ static void nmclan_reset(struct net_device *dev) | |||
795 | /* Reset Xilinx */ | 780 | /* Reset Xilinx */ |
796 | reg.Action = CS_WRITE; | 781 | reg.Action = CS_WRITE; |
797 | reg.Offset = CISREG_COR; | 782 | reg.Offset = CISREG_COR; |
798 | DEBUG(1, "nmclan_reset: OrigCorValue=0x%lX, resetting...\n", | 783 | dev_dbg(&link->dev, "nmclan_reset: OrigCorValue=0x%lX, resetting...\n", |
799 | OrigCorValue); | 784 | OrigCorValue); |
800 | reg.Value = COR_SOFT_RESET; | 785 | reg.Value = COR_SOFT_RESET; |
801 | pcmcia_access_configuration_register(link, ®); | 786 | pcmcia_access_configuration_register(link, ®); |
@@ -872,7 +857,7 @@ static int mace_close(struct net_device *dev) | |||
872 | mace_private *lp = netdev_priv(dev); | 857 | mace_private *lp = netdev_priv(dev); |
873 | struct pcmcia_device *link = lp->p_dev; | 858 | struct pcmcia_device *link = lp->p_dev; |
874 | 859 | ||
875 | DEBUG(2, "%s: shutting down ethercard.\n", dev->name); | 860 | dev_dbg(&link->dev, "%s: shutting down ethercard.\n", dev->name); |
876 | 861 | ||
877 | /* Mask off all interrupts from the MACE chip. */ | 862 | /* Mask off all interrupts from the MACE chip. */ |
878 | outb(0xFF, ioaddr + AM2150_MACE_BASE + MACE_IMR); | 863 | outb(0xFF, ioaddr + AM2150_MACE_BASE + MACE_IMR); |
@@ -891,24 +876,8 @@ static void netdev_get_drvinfo(struct net_device *dev, | |||
891 | sprintf(info->bus_info, "PCMCIA 0x%lx", dev->base_addr); | 876 | sprintf(info->bus_info, "PCMCIA 0x%lx", dev->base_addr); |
892 | } | 877 | } |
893 | 878 | ||
894 | #ifdef PCMCIA_DEBUG | ||
895 | static u32 netdev_get_msglevel(struct net_device *dev) | ||
896 | { | ||
897 | return pc_debug; | ||
898 | } | ||
899 | |||
900 | static void netdev_set_msglevel(struct net_device *dev, u32 level) | ||
901 | { | ||
902 | pc_debug = level; | ||
903 | } | ||
904 | #endif /* PCMCIA_DEBUG */ | ||
905 | |||
906 | static const struct ethtool_ops netdev_ethtool_ops = { | 879 | static const struct ethtool_ops netdev_ethtool_ops = { |
907 | .get_drvinfo = netdev_get_drvinfo, | 880 | .get_drvinfo = netdev_get_drvinfo, |
908 | #ifdef PCMCIA_DEBUG | ||
909 | .get_msglevel = netdev_get_msglevel, | ||
910 | .set_msglevel = netdev_set_msglevel, | ||
911 | #endif /* PCMCIA_DEBUG */ | ||
912 | }; | 881 | }; |
913 | 882 | ||
914 | /* ---------------------------------------------------------------------------- | 883 | /* ---------------------------------------------------------------------------- |
@@ -946,7 +915,7 @@ static netdev_tx_t mace_start_xmit(struct sk_buff *skb, | |||
946 | 915 | ||
947 | netif_stop_queue(dev); | 916 | netif_stop_queue(dev); |
948 | 917 | ||
949 | DEBUG(3, "%s: mace_start_xmit(length = %ld) called.\n", | 918 | pr_debug("%s: mace_start_xmit(length = %ld) called.\n", |
950 | dev->name, (long)skb->len); | 919 | dev->name, (long)skb->len); |
951 | 920 | ||
952 | #if (!TX_INTERRUPTABLE) | 921 | #if (!TX_INTERRUPTABLE) |
@@ -1008,7 +977,7 @@ static irqreturn_t mace_interrupt(int irq, void *dev_id) | |||
1008 | int IntrCnt = MACE_MAX_IR_ITERATIONS; | 977 | int IntrCnt = MACE_MAX_IR_ITERATIONS; |
1009 | 978 | ||
1010 | if (dev == NULL) { | 979 | if (dev == NULL) { |
1011 | DEBUG(2, "mace_interrupt(): irq 0x%X for unknown device.\n", | 980 | pr_debug("mace_interrupt(): irq 0x%X for unknown device.\n", |
1012 | irq); | 981 | irq); |
1013 | return IRQ_NONE; | 982 | return IRQ_NONE; |
1014 | } | 983 | } |
@@ -1031,7 +1000,7 @@ static irqreturn_t mace_interrupt(int irq, void *dev_id) | |||
1031 | } | 1000 | } |
1032 | 1001 | ||
1033 | if (!netif_device_present(dev)) { | 1002 | if (!netif_device_present(dev)) { |
1034 | DEBUG(2, "%s: interrupt from dead card\n", dev->name); | 1003 | pr_debug("%s: interrupt from dead card\n", dev->name); |
1035 | return IRQ_NONE; | 1004 | return IRQ_NONE; |
1036 | } | 1005 | } |
1037 | 1006 | ||
@@ -1039,7 +1008,7 @@ static irqreturn_t mace_interrupt(int irq, void *dev_id) | |||
1039 | /* WARNING: MACE_IR is a READ/CLEAR port! */ | 1008 | /* WARNING: MACE_IR is a READ/CLEAR port! */ |
1040 | status = inb(ioaddr + AM2150_MACE_BASE + MACE_IR); | 1009 | status = inb(ioaddr + AM2150_MACE_BASE + MACE_IR); |
1041 | 1010 | ||
1042 | DEBUG(3, "mace_interrupt: irq 0x%X status 0x%X.\n", irq, status); | 1011 | pr_debug("mace_interrupt: irq 0x%X status 0x%X.\n", irq, status); |
1043 | 1012 | ||
1044 | if (status & MACE_IR_RCVINT) { | 1013 | if (status & MACE_IR_RCVINT) { |
1045 | mace_rx(dev, MACE_MAX_RX_ITERATIONS); | 1014 | mace_rx(dev, MACE_MAX_RX_ITERATIONS); |
@@ -1158,7 +1127,7 @@ static int mace_rx(struct net_device *dev, unsigned char RxCnt) | |||
1158 | ) { | 1127 | ) { |
1159 | rx_status = inw(ioaddr + AM2150_RCV); | 1128 | rx_status = inw(ioaddr + AM2150_RCV); |
1160 | 1129 | ||
1161 | DEBUG(3, "%s: in mace_rx(), framecnt 0x%X, rx_status" | 1130 | pr_debug("%s: in mace_rx(), framecnt 0x%X, rx_status" |
1162 | " 0x%X.\n", dev->name, rx_framecnt, rx_status); | 1131 | " 0x%X.\n", dev->name, rx_framecnt, rx_status); |
1163 | 1132 | ||
1164 | if (rx_status & MACE_RCVFS_RCVSTS) { /* Error, update stats. */ | 1133 | if (rx_status & MACE_RCVFS_RCVSTS) { /* Error, update stats. */ |
@@ -1185,7 +1154,7 @@ static int mace_rx(struct net_device *dev, unsigned char RxCnt) | |||
1185 | lp->mace_stats.rfs_rcvcc += inb(ioaddr + AM2150_RCV); | 1154 | lp->mace_stats.rfs_rcvcc += inb(ioaddr + AM2150_RCV); |
1186 | /* rcv collision count */ | 1155 | /* rcv collision count */ |
1187 | 1156 | ||
1188 | DEBUG(3, " receiving packet size 0x%X rx_status" | 1157 | pr_debug(" receiving packet size 0x%X rx_status" |
1189 | " 0x%X.\n", pkt_len, rx_status); | 1158 | " 0x%X.\n", pkt_len, rx_status); |
1190 | 1159 | ||
1191 | skb = dev_alloc_skb(pkt_len+2); | 1160 | skb = dev_alloc_skb(pkt_len+2); |
@@ -1204,7 +1173,7 @@ static int mace_rx(struct net_device *dev, unsigned char RxCnt) | |||
1204 | outb(0xFF, ioaddr + AM2150_RCV_NEXT); /* skip to next frame */ | 1173 | outb(0xFF, ioaddr + AM2150_RCV_NEXT); /* skip to next frame */ |
1205 | continue; | 1174 | continue; |
1206 | } else { | 1175 | } else { |
1207 | DEBUG(1, "%s: couldn't allocate a sk_buff of size" | 1176 | pr_debug("%s: couldn't allocate a sk_buff of size" |
1208 | " %d.\n", dev->name, pkt_len); | 1177 | " %d.\n", dev->name, pkt_len); |
1209 | lp->linux_stats.rx_dropped++; | 1178 | lp->linux_stats.rx_dropped++; |
1210 | } | 1179 | } |
@@ -1220,28 +1189,28 @@ pr_linux_stats | |||
1220 | ---------------------------------------------------------------------------- */ | 1189 | ---------------------------------------------------------------------------- */ |
1221 | static void pr_linux_stats(struct net_device_stats *pstats) | 1190 | static void pr_linux_stats(struct net_device_stats *pstats) |
1222 | { | 1191 | { |
1223 | DEBUG(2, "pr_linux_stats\n"); | 1192 | pr_debug("pr_linux_stats\n"); |
1224 | DEBUG(2, " rx_packets=%-7ld tx_packets=%ld\n", | 1193 | pr_debug(" rx_packets=%-7ld tx_packets=%ld\n", |
1225 | (long)pstats->rx_packets, (long)pstats->tx_packets); | 1194 | (long)pstats->rx_packets, (long)pstats->tx_packets); |
1226 | DEBUG(2, " rx_errors=%-7ld tx_errors=%ld\n", | 1195 | pr_debug(" rx_errors=%-7ld tx_errors=%ld\n", |
1227 | (long)pstats->rx_errors, (long)pstats->tx_errors); | 1196 | (long)pstats->rx_errors, (long)pstats->tx_errors); |
1228 | DEBUG(2, " rx_dropped=%-7ld tx_dropped=%ld\n", | 1197 | pr_debug(" rx_dropped=%-7ld tx_dropped=%ld\n", |
1229 | (long)pstats->rx_dropped, (long)pstats->tx_dropped); | 1198 | (long)pstats->rx_dropped, (long)pstats->tx_dropped); |
1230 | DEBUG(2, " multicast=%-7ld collisions=%ld\n", | 1199 | pr_debug(" multicast=%-7ld collisions=%ld\n", |
1231 | (long)pstats->multicast, (long)pstats->collisions); | 1200 | (long)pstats->multicast, (long)pstats->collisions); |
1232 | 1201 | ||
1233 | DEBUG(2, " rx_length_errors=%-7ld rx_over_errors=%ld\n", | 1202 | pr_debug(" rx_length_errors=%-7ld rx_over_errors=%ld\n", |
1234 | (long)pstats->rx_length_errors, (long)pstats->rx_over_errors); | 1203 | (long)pstats->rx_length_errors, (long)pstats->rx_over_errors); |
1235 | DEBUG(2, " rx_crc_errors=%-7ld rx_frame_errors=%ld\n", | 1204 | pr_debug(" rx_crc_errors=%-7ld rx_frame_errors=%ld\n", |
1236 | (long)pstats->rx_crc_errors, (long)pstats->rx_frame_errors); | 1205 | (long)pstats->rx_crc_errors, (long)pstats->rx_frame_errors); |
1237 | DEBUG(2, " rx_fifo_errors=%-7ld rx_missed_errors=%ld\n", | 1206 | pr_debug(" rx_fifo_errors=%-7ld rx_missed_errors=%ld\n", |
1238 | (long)pstats->rx_fifo_errors, (long)pstats->rx_missed_errors); | 1207 | (long)pstats->rx_fifo_errors, (long)pstats->rx_missed_errors); |
1239 | 1208 | ||
1240 | DEBUG(2, " tx_aborted_errors=%-7ld tx_carrier_errors=%ld\n", | 1209 | pr_debug(" tx_aborted_errors=%-7ld tx_carrier_errors=%ld\n", |
1241 | (long)pstats->tx_aborted_errors, (long)pstats->tx_carrier_errors); | 1210 | (long)pstats->tx_aborted_errors, (long)pstats->tx_carrier_errors); |
1242 | DEBUG(2, " tx_fifo_errors=%-7ld tx_heartbeat_errors=%ld\n", | 1211 | pr_debug(" tx_fifo_errors=%-7ld tx_heartbeat_errors=%ld\n", |
1243 | (long)pstats->tx_fifo_errors, (long)pstats->tx_heartbeat_errors); | 1212 | (long)pstats->tx_fifo_errors, (long)pstats->tx_heartbeat_errors); |
1244 | DEBUG(2, " tx_window_errors=%ld\n", | 1213 | pr_debug(" tx_window_errors=%ld\n", |
1245 | (long)pstats->tx_window_errors); | 1214 | (long)pstats->tx_window_errors); |
1246 | } /* pr_linux_stats */ | 1215 | } /* pr_linux_stats */ |
1247 | 1216 | ||
@@ -1250,48 +1219,48 @@ pr_mace_stats | |||
1250 | ---------------------------------------------------------------------------- */ | 1219 | ---------------------------------------------------------------------------- */ |
1251 | static void pr_mace_stats(mace_statistics *pstats) | 1220 | static void pr_mace_stats(mace_statistics *pstats) |
1252 | { | 1221 | { |
1253 | DEBUG(2, "pr_mace_stats\n"); | 1222 | pr_debug("pr_mace_stats\n"); |
1254 | 1223 | ||
1255 | DEBUG(2, " xmtsv=%-7d uflo=%d\n", | 1224 | pr_debug(" xmtsv=%-7d uflo=%d\n", |
1256 | pstats->xmtsv, pstats->uflo); | 1225 | pstats->xmtsv, pstats->uflo); |
1257 | DEBUG(2, " lcol=%-7d more=%d\n", | 1226 | pr_debug(" lcol=%-7d more=%d\n", |
1258 | pstats->lcol, pstats->more); | 1227 | pstats->lcol, pstats->more); |
1259 | DEBUG(2, " one=%-7d defer=%d\n", | 1228 | pr_debug(" one=%-7d defer=%d\n", |
1260 | pstats->one, pstats->defer); | 1229 | pstats->one, pstats->defer); |
1261 | DEBUG(2, " lcar=%-7d rtry=%d\n", | 1230 | pr_debug(" lcar=%-7d rtry=%d\n", |
1262 | pstats->lcar, pstats->rtry); | 1231 | pstats->lcar, pstats->rtry); |
1263 | 1232 | ||
1264 | /* MACE_XMTRC */ | 1233 | /* MACE_XMTRC */ |
1265 | DEBUG(2, " exdef=%-7d xmtrc=%d\n", | 1234 | pr_debug(" exdef=%-7d xmtrc=%d\n", |
1266 | pstats->exdef, pstats->xmtrc); | 1235 | pstats->exdef, pstats->xmtrc); |
1267 | 1236 | ||
1268 | /* RFS1--Receive Status (RCVSTS) */ | 1237 | /* RFS1--Receive Status (RCVSTS) */ |
1269 | DEBUG(2, " oflo=%-7d clsn=%d\n", | 1238 | pr_debug(" oflo=%-7d clsn=%d\n", |
1270 | pstats->oflo, pstats->clsn); | 1239 | pstats->oflo, pstats->clsn); |
1271 | DEBUG(2, " fram=%-7d fcs=%d\n", | 1240 | pr_debug(" fram=%-7d fcs=%d\n", |
1272 | pstats->fram, pstats->fcs); | 1241 | pstats->fram, pstats->fcs); |
1273 | 1242 | ||
1274 | /* RFS2--Runt Packet Count (RNTPC) */ | 1243 | /* RFS2--Runt Packet Count (RNTPC) */ |
1275 | /* RFS3--Receive Collision Count (RCVCC) */ | 1244 | /* RFS3--Receive Collision Count (RCVCC) */ |
1276 | DEBUG(2, " rfs_rntpc=%-7d rfs_rcvcc=%d\n", | 1245 | pr_debug(" rfs_rntpc=%-7d rfs_rcvcc=%d\n", |
1277 | pstats->rfs_rntpc, pstats->rfs_rcvcc); | 1246 | pstats->rfs_rntpc, pstats->rfs_rcvcc); |
1278 | 1247 | ||
1279 | /* MACE_IR */ | 1248 | /* MACE_IR */ |
1280 | DEBUG(2, " jab=%-7d babl=%d\n", | 1249 | pr_debug(" jab=%-7d babl=%d\n", |
1281 | pstats->jab, pstats->babl); | 1250 | pstats->jab, pstats->babl); |
1282 | DEBUG(2, " cerr=%-7d rcvcco=%d\n", | 1251 | pr_debug(" cerr=%-7d rcvcco=%d\n", |
1283 | pstats->cerr, pstats->rcvcco); | 1252 | pstats->cerr, pstats->rcvcco); |
1284 | DEBUG(2, " rntpco=%-7d mpco=%d\n", | 1253 | pr_debug(" rntpco=%-7d mpco=%d\n", |
1285 | pstats->rntpco, pstats->mpco); | 1254 | pstats->rntpco, pstats->mpco); |
1286 | 1255 | ||
1287 | /* MACE_MPC */ | 1256 | /* MACE_MPC */ |
1288 | DEBUG(2, " mpc=%d\n", pstats->mpc); | 1257 | pr_debug(" mpc=%d\n", pstats->mpc); |
1289 | 1258 | ||
1290 | /* MACE_RNTPC */ | 1259 | /* MACE_RNTPC */ |
1291 | DEBUG(2, " rntpc=%d\n", pstats->rntpc); | 1260 | pr_debug(" rntpc=%d\n", pstats->rntpc); |
1292 | 1261 | ||
1293 | /* MACE_RCVCC */ | 1262 | /* MACE_RCVCC */ |
1294 | DEBUG(2, " rcvcc=%d\n", pstats->rcvcc); | 1263 | pr_debug(" rcvcc=%d\n", pstats->rcvcc); |
1295 | 1264 | ||
1296 | } /* pr_mace_stats */ | 1265 | } /* pr_mace_stats */ |
1297 | 1266 | ||
@@ -1360,7 +1329,7 @@ static struct net_device_stats *mace_get_stats(struct net_device *dev) | |||
1360 | 1329 | ||
1361 | update_stats(dev->base_addr, dev); | 1330 | update_stats(dev->base_addr, dev); |
1362 | 1331 | ||
1363 | DEBUG(1, "%s: updating the statistics.\n", dev->name); | 1332 | pr_debug("%s: updating the statistics.\n", dev->name); |
1364 | pr_linux_stats(&lp->linux_stats); | 1333 | pr_linux_stats(&lp->linux_stats); |
1365 | pr_mace_stats(&lp->mace_stats); | 1334 | pr_mace_stats(&lp->mace_stats); |
1366 | 1335 | ||
@@ -1427,7 +1396,7 @@ static void BuildLAF(int *ladrf, int *adr) | |||
1427 | ladrf[byte] |= (1 << (hashcode & 7)); | 1396 | ladrf[byte] |= (1 << (hashcode & 7)); |
1428 | 1397 | ||
1429 | #ifdef PCMCIA_DEBUG | 1398 | #ifdef PCMCIA_DEBUG |
1430 | if (pc_debug > 2) | 1399 | if (0) |
1431 | printk(KERN_DEBUG " adr =%pM\n", adr); | 1400 | printk(KERN_DEBUG " adr =%pM\n", adr); |
1432 | printk(KERN_DEBUG " hashcode = %d(decimal), ladrf[0:63] =", hashcode); | 1401 | printk(KERN_DEBUG " hashcode = %d(decimal), ladrf[0:63] =", hashcode); |
1433 | for (i = 0; i < 8; i++) | 1402 | for (i = 0; i < 8; i++) |
@@ -1454,12 +1423,12 @@ static void restore_multicast_list(struct net_device *dev) | |||
1454 | unsigned int ioaddr = dev->base_addr; | 1423 | unsigned int ioaddr = dev->base_addr; |
1455 | int i; | 1424 | int i; |
1456 | 1425 | ||
1457 | DEBUG(2, "%s: restoring Rx mode to %d addresses.\n", | 1426 | pr_debug("%s: restoring Rx mode to %d addresses.\n", |
1458 | dev->name, num_addrs); | 1427 | dev->name, num_addrs); |
1459 | 1428 | ||
1460 | if (num_addrs > 0) { | 1429 | if (num_addrs > 0) { |
1461 | 1430 | ||
1462 | DEBUG(1, "Attempt to restore multicast list detected.\n"); | 1431 | pr_debug("Attempt to restore multicast list detected.\n"); |
1463 | 1432 | ||
1464 | mace_write(lp, ioaddr, MACE_IAC, MACE_IAC_ADDRCHG | MACE_IAC_LOGADDR); | 1433 | mace_write(lp, ioaddr, MACE_IAC, MACE_IAC_ADDRCHG | MACE_IAC_LOGADDR); |
1465 | /* Poll ADDRCHG bit */ | 1434 | /* Poll ADDRCHG bit */ |
@@ -1511,11 +1480,11 @@ static void set_multicast_list(struct net_device *dev) | |||
1511 | struct dev_mc_list *dmi = dev->mc_list; | 1480 | struct dev_mc_list *dmi = dev->mc_list; |
1512 | 1481 | ||
1513 | #ifdef PCMCIA_DEBUG | 1482 | #ifdef PCMCIA_DEBUG |
1514 | if (pc_debug > 1) { | 1483 | { |
1515 | static int old; | 1484 | static int old; |
1516 | if (dev->mc_count != old) { | 1485 | if (dev->mc_count != old) { |
1517 | old = dev->mc_count; | 1486 | old = dev->mc_count; |
1518 | DEBUG(0, "%s: setting Rx mode to %d addresses.\n", | 1487 | pr_debug("%s: setting Rx mode to %d addresses.\n", |
1519 | dev->name, old); | 1488 | dev->name, old); |
1520 | } | 1489 | } |
1521 | } | 1490 | } |
@@ -1546,7 +1515,7 @@ static void restore_multicast_list(struct net_device *dev) | |||
1546 | unsigned int ioaddr = dev->base_addr; | 1515 | unsigned int ioaddr = dev->base_addr; |
1547 | mace_private *lp = netdev_priv(dev); | 1516 | mace_private *lp = netdev_priv(dev); |
1548 | 1517 | ||
1549 | DEBUG(2, "%s: restoring Rx mode to %d addresses.\n", dev->name, | 1518 | pr_debug("%s: restoring Rx mode to %d addresses.\n", dev->name, |
1550 | lp->multicast_num_addrs); | 1519 | lp->multicast_num_addrs); |
1551 | 1520 | ||
1552 | if (dev->flags & IFF_PROMISC) { | 1521 | if (dev->flags & IFF_PROMISC) { |
@@ -1567,11 +1536,11 @@ static void set_multicast_list(struct net_device *dev) | |||
1567 | mace_private *lp = netdev_priv(dev); | 1536 | mace_private *lp = netdev_priv(dev); |
1568 | 1537 | ||
1569 | #ifdef PCMCIA_DEBUG | 1538 | #ifdef PCMCIA_DEBUG |
1570 | if (pc_debug > 1) { | 1539 | { |
1571 | static int old; | 1540 | static int old; |
1572 | if (dev->mc_count != old) { | 1541 | if (dev->mc_count != old) { |
1573 | old = dev->mc_count; | 1542 | old = dev->mc_count; |
1574 | DEBUG(0, "%s: setting Rx mode to %d addresses.\n", | 1543 | pr_debug("%s: setting Rx mode to %d addresses.\n", |
1575 | dev->name, old); | 1544 | dev->name, old); |
1576 | } | 1545 | } |
1577 | } | 1546 | } |
diff --git a/drivers/net/pcmcia/pcnet_cs.c b/drivers/net/pcmcia/pcnet_cs.c index 94c9ad2746bc..cbe462ed221f 100644 --- a/drivers/net/pcmcia/pcnet_cs.c +++ b/drivers/net/pcmcia/pcnet_cs.c | |||
@@ -71,15 +71,6 @@ | |||
71 | 71 | ||
72 | static const char *if_names[] = { "auto", "10baseT", "10base2"}; | 72 | static const char *if_names[] = { "auto", "10baseT", "10base2"}; |
73 | 73 | ||
74 | #ifdef PCMCIA_DEBUG | ||
75 | static int pc_debug = PCMCIA_DEBUG; | ||
76 | module_param(pc_debug, int, 0); | ||
77 | #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) | ||
78 | static char *version = | ||
79 | "pcnet_cs.c 1.153 2003/11/09 18:53:09 (David Hinds)"; | ||
80 | #else | ||
81 | #define DEBUG(n, args...) | ||
82 | #endif | ||
83 | 74 | ||
84 | /*====================================================================*/ | 75 | /*====================================================================*/ |
85 | 76 | ||
@@ -265,7 +256,7 @@ static int pcnet_probe(struct pcmcia_device *link) | |||
265 | pcnet_dev_t *info; | 256 | pcnet_dev_t *info; |
266 | struct net_device *dev; | 257 | struct net_device *dev; |
267 | 258 | ||
268 | DEBUG(0, "pcnet_attach()\n"); | 259 | dev_dbg(&link->dev, "pcnet_attach()\n"); |
269 | 260 | ||
270 | /* Create new ethernet device */ | 261 | /* Create new ethernet device */ |
271 | dev = __alloc_ei_netdev(sizeof(pcnet_dev_t)); | 262 | dev = __alloc_ei_netdev(sizeof(pcnet_dev_t)); |
@@ -275,7 +266,6 @@ static int pcnet_probe(struct pcmcia_device *link) | |||
275 | link->priv = dev; | 266 | link->priv = dev; |
276 | 267 | ||
277 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; | 268 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; |
278 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; | ||
279 | link->conf.Attributes = CONF_ENABLE_IRQ; | 269 | link->conf.Attributes = CONF_ENABLE_IRQ; |
280 | link->conf.IntType = INT_MEMORY_AND_IO; | 270 | link->conf.IntType = INT_MEMORY_AND_IO; |
281 | 271 | ||
@@ -297,7 +287,7 @@ static void pcnet_detach(struct pcmcia_device *link) | |||
297 | { | 287 | { |
298 | struct net_device *dev = link->priv; | 288 | struct net_device *dev = link->priv; |
299 | 289 | ||
300 | DEBUG(0, "pcnet_detach(0x%p)\n", link); | 290 | dev_dbg(&link->dev, "pcnet_detach\n"); |
301 | 291 | ||
302 | if (link->dev_node) | 292 | if (link->dev_node) |
303 | unregister_netdev(dev); | 293 | unregister_netdev(dev); |
@@ -326,17 +316,15 @@ static hw_info_t *get_hwinfo(struct pcmcia_device *link) | |||
326 | req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; | 316 | req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; |
327 | req.Base = 0; req.Size = 0; | 317 | req.Base = 0; req.Size = 0; |
328 | req.AccessSpeed = 0; | 318 | req.AccessSpeed = 0; |
329 | i = pcmcia_request_window(&link, &req, &link->win); | 319 | i = pcmcia_request_window(link, &req, &link->win); |
330 | if (i != 0) { | 320 | if (i != 0) |
331 | cs_error(link, RequestWindow, i); | ||
332 | return NULL; | 321 | return NULL; |
333 | } | ||
334 | 322 | ||
335 | virt = ioremap(req.Base, req.Size); | 323 | virt = ioremap(req.Base, req.Size); |
336 | mem.Page = 0; | 324 | mem.Page = 0; |
337 | for (i = 0; i < NR_INFO; i++) { | 325 | for (i = 0; i < NR_INFO; i++) { |
338 | mem.CardOffset = hw_info[i].offset & ~(req.Size-1); | 326 | mem.CardOffset = hw_info[i].offset & ~(req.Size-1); |
339 | pcmcia_map_mem_page(link->win, &mem); | 327 | pcmcia_map_mem_page(link, link->win, &mem); |
340 | base = &virt[hw_info[i].offset & (req.Size-1)]; | 328 | base = &virt[hw_info[i].offset & (req.Size-1)]; |
341 | if ((readb(base+0) == hw_info[i].a0) && | 329 | if ((readb(base+0) == hw_info[i].a0) && |
342 | (readb(base+2) == hw_info[i].a1) && | 330 | (readb(base+2) == hw_info[i].a1) && |
@@ -348,9 +336,7 @@ static hw_info_t *get_hwinfo(struct pcmcia_device *link) | |||
348 | } | 336 | } |
349 | 337 | ||
350 | iounmap(virt); | 338 | iounmap(virt); |
351 | j = pcmcia_release_window(link->win); | 339 | j = pcmcia_release_window(link, link->win); |
352 | if (j != 0) | ||
353 | cs_error(link, ReleaseWindow, j); | ||
354 | return (i < NR_INFO) ? hw_info+i : NULL; | 340 | return (i < NR_INFO) ? hw_info+i : NULL; |
355 | } /* get_hwinfo */ | 341 | } /* get_hwinfo */ |
356 | 342 | ||
@@ -495,9 +481,6 @@ static hw_info_t *get_hwired(struct pcmcia_device *link) | |||
495 | 481 | ||
496 | ======================================================================*/ | 482 | ======================================================================*/ |
497 | 483 | ||
498 | #define CS_CHECK(fn, ret) \ | ||
499 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | ||
500 | |||
501 | static int try_io_port(struct pcmcia_device *link) | 484 | static int try_io_port(struct pcmcia_device *link) |
502 | { | 485 | { |
503 | int j, ret; | 486 | int j, ret; |
@@ -567,19 +550,19 @@ static int pcnet_config(struct pcmcia_device *link) | |||
567 | { | 550 | { |
568 | struct net_device *dev = link->priv; | 551 | struct net_device *dev = link->priv; |
569 | pcnet_dev_t *info = PRIV(dev); | 552 | pcnet_dev_t *info = PRIV(dev); |
570 | int last_ret, last_fn, start_pg, stop_pg, cm_offset; | 553 | int ret, start_pg, stop_pg, cm_offset; |
571 | int has_shmem = 0; | 554 | int has_shmem = 0; |
572 | hw_info_t *local_hw_info; | 555 | hw_info_t *local_hw_info; |
573 | 556 | ||
574 | DEBUG(0, "pcnet_config(0x%p)\n", link); | 557 | dev_dbg(&link->dev, "pcnet_config\n"); |
575 | 558 | ||
576 | last_ret = pcmcia_loop_config(link, pcnet_confcheck, &has_shmem); | 559 | ret = pcmcia_loop_config(link, pcnet_confcheck, &has_shmem); |
577 | if (last_ret) { | 560 | if (ret) |
578 | cs_error(link, RequestIO, last_ret); | ||
579 | goto failed; | 561 | goto failed; |
580 | } | ||
581 | 562 | ||
582 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); | 563 | ret = pcmcia_request_irq(link, &link->irq); |
564 | if (ret) | ||
565 | goto failed; | ||
583 | 566 | ||
584 | if (link->io.NumPorts2 == 8) { | 567 | if (link->io.NumPorts2 == 8) { |
585 | link->conf.Attributes |= CONF_ENABLE_SPKR; | 568 | link->conf.Attributes |= CONF_ENABLE_SPKR; |
@@ -589,7 +572,9 @@ static int pcnet_config(struct pcmcia_device *link) | |||
589 | (link->card_id == PRODID_IBM_HOME_AND_AWAY)) | 572 | (link->card_id == PRODID_IBM_HOME_AND_AWAY)) |
590 | link->conf.ConfigIndex |= 0x10; | 573 | link->conf.ConfigIndex |= 0x10; |
591 | 574 | ||
592 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); | 575 | ret = pcmcia_request_configuration(link, &link->conf); |
576 | if (ret) | ||
577 | goto failed; | ||
593 | dev->irq = link->irq.AssignedIRQ; | 578 | dev->irq = link->irq.AssignedIRQ; |
594 | dev->base_addr = link->io.BasePort1; | 579 | dev->base_addr = link->io.BasePort1; |
595 | if (info->flags & HAS_MISC_REG) { | 580 | if (info->flags & HAS_MISC_REG) { |
@@ -660,7 +645,7 @@ static int pcnet_config(struct pcmcia_device *link) | |||
660 | mii_phy_probe(dev); | 645 | mii_phy_probe(dev); |
661 | 646 | ||
662 | link->dev_node = &info->node; | 647 | link->dev_node = &info->node; |
663 | SET_NETDEV_DEV(dev, &handle_to_dev(link)); | 648 | SET_NETDEV_DEV(dev, &link->dev); |
664 | 649 | ||
665 | if (register_netdev(dev) != 0) { | 650 | if (register_netdev(dev) != 0) { |
666 | printk(KERN_NOTICE "pcnet_cs: register_netdev() failed\n"); | 651 | printk(KERN_NOTICE "pcnet_cs: register_netdev() failed\n"); |
@@ -687,8 +672,6 @@ static int pcnet_config(struct pcmcia_device *link) | |||
687 | printk(" hw_addr %pM\n", dev->dev_addr); | 672 | printk(" hw_addr %pM\n", dev->dev_addr); |
688 | return 0; | 673 | return 0; |
689 | 674 | ||
690 | cs_failed: | ||
691 | cs_error(link, last_fn, last_ret); | ||
692 | failed: | 675 | failed: |
693 | pcnet_release(link); | 676 | pcnet_release(link); |
694 | return -ENODEV; | 677 | return -ENODEV; |
@@ -706,7 +689,7 @@ static void pcnet_release(struct pcmcia_device *link) | |||
706 | { | 689 | { |
707 | pcnet_dev_t *info = PRIV(link->priv); | 690 | pcnet_dev_t *info = PRIV(link->priv); |
708 | 691 | ||
709 | DEBUG(0, "pcnet_release(0x%p)\n", link); | 692 | dev_dbg(&link->dev, "pcnet_release\n"); |
710 | 693 | ||
711 | if (info->flags & USE_SHMEM) | 694 | if (info->flags & USE_SHMEM) |
712 | iounmap(info->base); | 695 | iounmap(info->base); |
@@ -960,7 +943,7 @@ static void mii_phy_probe(struct net_device *dev) | |||
960 | phyid = tmp << 16; | 943 | phyid = tmp << 16; |
961 | phyid |= mdio_read(mii_addr, i, MII_PHYID_REG2); | 944 | phyid |= mdio_read(mii_addr, i, MII_PHYID_REG2); |
962 | phyid &= MII_PHYID_REV_MASK; | 945 | phyid &= MII_PHYID_REV_MASK; |
963 | DEBUG(0, "%s: MII at %d is 0x%08x\n", dev->name, i, phyid); | 946 | pr_debug("%s: MII at %d is 0x%08x\n", dev->name, i, phyid); |
964 | if (phyid == AM79C9XX_HOME_PHY) { | 947 | if (phyid == AM79C9XX_HOME_PHY) { |
965 | info->pna_phy = i; | 948 | info->pna_phy = i; |
966 | } else if (phyid != AM79C9XX_ETH_PHY) { | 949 | } else if (phyid != AM79C9XX_ETH_PHY) { |
@@ -976,7 +959,7 @@ static int pcnet_open(struct net_device *dev) | |||
976 | struct pcmcia_device *link = info->p_dev; | 959 | struct pcmcia_device *link = info->p_dev; |
977 | unsigned int nic_base = dev->base_addr; | 960 | unsigned int nic_base = dev->base_addr; |
978 | 961 | ||
979 | DEBUG(2, "pcnet_open('%s')\n", dev->name); | 962 | dev_dbg(&link->dev, "pcnet_open('%s')\n", dev->name); |
980 | 963 | ||
981 | if (!pcmcia_dev_present(link)) | 964 | if (!pcmcia_dev_present(link)) |
982 | return -ENODEV; | 965 | return -ENODEV; |
@@ -1008,7 +991,7 @@ static int pcnet_close(struct net_device *dev) | |||
1008 | pcnet_dev_t *info = PRIV(dev); | 991 | pcnet_dev_t *info = PRIV(dev); |
1009 | struct pcmcia_device *link = info->p_dev; | 992 | struct pcmcia_device *link = info->p_dev; |
1010 | 993 | ||
1011 | DEBUG(2, "pcnet_close('%s')\n", dev->name); | 994 | dev_dbg(&link->dev, "pcnet_close('%s')\n", dev->name); |
1012 | 995 | ||
1013 | ei_close(dev); | 996 | ei_close(dev); |
1014 | free_irq(dev->irq, dev); | 997 | free_irq(dev->irq, dev); |
@@ -1251,10 +1234,8 @@ static void dma_block_input(struct net_device *dev, int count, | |||
1251 | int xfer_count = count; | 1234 | int xfer_count = count; |
1252 | char *buf = skb->data; | 1235 | char *buf = skb->data; |
1253 | 1236 | ||
1254 | #ifdef PCMCIA_DEBUG | ||
1255 | if ((ei_debug > 4) && (count != 4)) | 1237 | if ((ei_debug > 4) && (count != 4)) |
1256 | printk(KERN_DEBUG "%s: [bi=%d]\n", dev->name, count+4); | 1238 | pr_debug("%s: [bi=%d]\n", dev->name, count+4); |
1257 | #endif | ||
1258 | if (ei_status.dmaing) { | 1239 | if (ei_status.dmaing) { |
1259 | printk(KERN_NOTICE "%s: DMAing conflict in dma_block_input." | 1240 | printk(KERN_NOTICE "%s: DMAing conflict in dma_block_input." |
1260 | "[DMAstat:%1x][irqlock:%1x]\n", | 1241 | "[DMAstat:%1x][irqlock:%1x]\n", |
@@ -1495,7 +1476,7 @@ static int setup_shmem_window(struct pcmcia_device *link, int start_pg, | |||
1495 | pcnet_dev_t *info = PRIV(dev); | 1476 | pcnet_dev_t *info = PRIV(dev); |
1496 | win_req_t req; | 1477 | win_req_t req; |
1497 | memreq_t mem; | 1478 | memreq_t mem; |
1498 | int i, window_size, offset, last_ret, last_fn; | 1479 | int i, window_size, offset, ret; |
1499 | 1480 | ||
1500 | window_size = (stop_pg - start_pg) << 8; | 1481 | window_size = (stop_pg - start_pg) << 8; |
1501 | if (window_size > 32 * 1024) | 1482 | if (window_size > 32 * 1024) |
@@ -1509,13 +1490,17 @@ static int setup_shmem_window(struct pcmcia_device *link, int start_pg, | |||
1509 | req.Attributes |= WIN_USE_WAIT; | 1490 | req.Attributes |= WIN_USE_WAIT; |
1510 | req.Base = 0; req.Size = window_size; | 1491 | req.Base = 0; req.Size = window_size; |
1511 | req.AccessSpeed = mem_speed; | 1492 | req.AccessSpeed = mem_speed; |
1512 | CS_CHECK(RequestWindow, pcmcia_request_window(&link, &req, &link->win)); | 1493 | ret = pcmcia_request_window(link, &req, &link->win); |
1494 | if (ret) | ||
1495 | goto failed; | ||
1513 | 1496 | ||
1514 | mem.CardOffset = (start_pg << 8) + cm_offset; | 1497 | mem.CardOffset = (start_pg << 8) + cm_offset; |
1515 | offset = mem.CardOffset % window_size; | 1498 | offset = mem.CardOffset % window_size; |
1516 | mem.CardOffset -= offset; | 1499 | mem.CardOffset -= offset; |
1517 | mem.Page = 0; | 1500 | mem.Page = 0; |
1518 | CS_CHECK(MapMemPage, pcmcia_map_mem_page(link->win, &mem)); | 1501 | ret = pcmcia_map_mem_page(link, link->win, &mem); |
1502 | if (ret) | ||
1503 | goto failed; | ||
1519 | 1504 | ||
1520 | /* Try scribbling on the buffer */ | 1505 | /* Try scribbling on the buffer */ |
1521 | info->base = ioremap(req.Base, window_size); | 1506 | info->base = ioremap(req.Base, window_size); |
@@ -1527,8 +1512,8 @@ static int setup_shmem_window(struct pcmcia_device *link, int start_pg, | |||
1527 | pcnet_reset_8390(dev); | 1512 | pcnet_reset_8390(dev); |
1528 | if (i != (TX_PAGES<<8)) { | 1513 | if (i != (TX_PAGES<<8)) { |
1529 | iounmap(info->base); | 1514 | iounmap(info->base); |
1530 | pcmcia_release_window(link->win); | 1515 | pcmcia_release_window(link, link->win); |
1531 | info->base = NULL; link->win = NULL; | 1516 | info->base = NULL; link->win = 0; |
1532 | goto failed; | 1517 | goto failed; |
1533 | } | 1518 | } |
1534 | 1519 | ||
@@ -1549,8 +1534,6 @@ static int setup_shmem_window(struct pcmcia_device *link, int start_pg, | |||
1549 | info->flags |= USE_SHMEM; | 1534 | info->flags |= USE_SHMEM; |
1550 | return 0; | 1535 | return 0; |
1551 | 1536 | ||
1552 | cs_failed: | ||
1553 | cs_error(link, last_fn, last_ret); | ||
1554 | failed: | 1537 | failed: |
1555 | return 1; | 1538 | return 1; |
1556 | } | 1539 | } |
@@ -1788,7 +1771,6 @@ static int __init init_pcnet_cs(void) | |||
1788 | 1771 | ||
1789 | static void __exit exit_pcnet_cs(void) | 1772 | static void __exit exit_pcnet_cs(void) |
1790 | { | 1773 | { |
1791 | DEBUG(0, "pcnet_cs: unloading\n"); | ||
1792 | pcmcia_unregister_driver(&pcnet_driver); | 1774 | pcmcia_unregister_driver(&pcnet_driver); |
1793 | } | 1775 | } |
1794 | 1776 | ||
diff --git a/drivers/net/pcmcia/smc91c92_cs.c b/drivers/net/pcmcia/smc91c92_cs.c index 7bde2cd34c7e..9e0da370912e 100644 --- a/drivers/net/pcmcia/smc91c92_cs.c +++ b/drivers/net/pcmcia/smc91c92_cs.c | |||
@@ -79,14 +79,6 @@ MODULE_FIRMWARE(FIRMWARE_NAME); | |||
79 | */ | 79 | */ |
80 | INT_MODULE_PARM(if_port, 0); | 80 | INT_MODULE_PARM(if_port, 0); |
81 | 81 | ||
82 | #ifdef PCMCIA_DEBUG | ||
83 | INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG); | ||
84 | static const char *version = | ||
85 | "smc91c92_cs.c 1.123 2006/11/09 Donald Becker, becker@scyld.com.\n"; | ||
86 | #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) | ||
87 | #else | ||
88 | #define DEBUG(n, args...) | ||
89 | #endif | ||
90 | 82 | ||
91 | #define DRV_NAME "smc91c92_cs" | 83 | #define DRV_NAME "smc91c92_cs" |
92 | #define DRV_VERSION "1.123" | 84 | #define DRV_VERSION "1.123" |
@@ -126,12 +118,6 @@ struct smc_private { | |||
126 | int rx_ovrn; | 118 | int rx_ovrn; |
127 | }; | 119 | }; |
128 | 120 | ||
129 | struct smc_cfg_mem { | ||
130 | tuple_t tuple; | ||
131 | cisparse_t parse; | ||
132 | u_char buf[255]; | ||
133 | }; | ||
134 | |||
135 | /* Special definitions for Megahertz multifunction cards */ | 121 | /* Special definitions for Megahertz multifunction cards */ |
136 | #define MEGAHERTZ_ISR 0x0380 | 122 | #define MEGAHERTZ_ISR 0x0380 |
137 | 123 | ||
@@ -329,7 +315,7 @@ static int smc91c92_probe(struct pcmcia_device *link) | |||
329 | struct smc_private *smc; | 315 | struct smc_private *smc; |
330 | struct net_device *dev; | 316 | struct net_device *dev; |
331 | 317 | ||
332 | DEBUG(0, "smc91c92_attach()\n"); | 318 | dev_dbg(&link->dev, "smc91c92_attach()\n"); |
333 | 319 | ||
334 | /* Create new ethernet device */ | 320 | /* Create new ethernet device */ |
335 | dev = alloc_etherdev(sizeof(struct smc_private)); | 321 | dev = alloc_etherdev(sizeof(struct smc_private)); |
@@ -343,10 +329,8 @@ static int smc91c92_probe(struct pcmcia_device *link) | |||
343 | link->io.NumPorts1 = 16; | 329 | link->io.NumPorts1 = 16; |
344 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; | 330 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; |
345 | link->io.IOAddrLines = 4; | 331 | link->io.IOAddrLines = 4; |
346 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_HANDLE_PRESENT; | 332 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; |
347 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; | ||
348 | link->irq.Handler = &smc_interrupt; | 333 | link->irq.Handler = &smc_interrupt; |
349 | link->irq.Instance = dev; | ||
350 | link->conf.Attributes = CONF_ENABLE_IRQ; | 334 | link->conf.Attributes = CONF_ENABLE_IRQ; |
351 | link->conf.IntType = INT_MEMORY_AND_IO; | 335 | link->conf.IntType = INT_MEMORY_AND_IO; |
352 | 336 | ||
@@ -377,7 +361,7 @@ static void smc91c92_detach(struct pcmcia_device *link) | |||
377 | { | 361 | { |
378 | struct net_device *dev = link->priv; | 362 | struct net_device *dev = link->priv; |
379 | 363 | ||
380 | DEBUG(0, "smc91c92_detach(0x%p)\n", link); | 364 | dev_dbg(&link->dev, "smc91c92_detach\n"); |
381 | 365 | ||
382 | if (link->dev_node) | 366 | if (link->dev_node) |
383 | unregister_netdev(dev); | 367 | unregister_netdev(dev); |
@@ -408,34 +392,7 @@ static int cvt_ascii_address(struct net_device *dev, char *s) | |||
408 | return 0; | 392 | return 0; |
409 | } | 393 | } |
410 | 394 | ||
411 | /*====================================================================*/ | 395 | /*==================================================================== |
412 | |||
413 | static int first_tuple(struct pcmcia_device *handle, tuple_t *tuple, | ||
414 | cisparse_t *parse) | ||
415 | { | ||
416 | int i; | ||
417 | |||
418 | i = pcmcia_get_first_tuple(handle, tuple); | ||
419 | if (i != 0) | ||
420 | return i; | ||
421 | i = pcmcia_get_tuple_data(handle, tuple); | ||
422 | if (i != 0) | ||
423 | return i; | ||
424 | return pcmcia_parse_tuple(tuple, parse); | ||
425 | } | ||
426 | |||
427 | static int next_tuple(struct pcmcia_device *handle, tuple_t *tuple, | ||
428 | cisparse_t *parse) | ||
429 | { | ||
430 | int i; | ||
431 | |||
432 | if ((i = pcmcia_get_next_tuple(handle, tuple)) != 0 || | ||
433 | (i = pcmcia_get_tuple_data(handle, tuple)) != 0) | ||
434 | return i; | ||
435 | return pcmcia_parse_tuple(tuple, parse); | ||
436 | } | ||
437 | |||
438 | /*====================================================================== | ||
439 | 396 | ||
440 | Configuration stuff for Megahertz cards | 397 | Configuration stuff for Megahertz cards |
441 | 398 | ||
@@ -490,19 +447,14 @@ static int mhz_mfc_config(struct pcmcia_device *link) | |||
490 | { | 447 | { |
491 | struct net_device *dev = link->priv; | 448 | struct net_device *dev = link->priv; |
492 | struct smc_private *smc = netdev_priv(dev); | 449 | struct smc_private *smc = netdev_priv(dev); |
493 | struct smc_cfg_mem *cfg_mem; | ||
494 | win_req_t req; | 450 | win_req_t req; |
495 | memreq_t mem; | 451 | memreq_t mem; |
496 | int i; | 452 | int i; |
497 | 453 | ||
498 | cfg_mem = kmalloc(sizeof(struct smc_cfg_mem), GFP_KERNEL); | ||
499 | if (!cfg_mem) | ||
500 | return -ENOMEM; | ||
501 | |||
502 | link->conf.Attributes |= CONF_ENABLE_SPKR; | 454 | link->conf.Attributes |= CONF_ENABLE_SPKR; |
503 | link->conf.Status = CCSR_AUDIO_ENA; | 455 | link->conf.Status = CCSR_AUDIO_ENA; |
504 | link->irq.Attributes = | 456 | link->irq.Attributes = |
505 | IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED|IRQ_HANDLE_PRESENT; | 457 | IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED; |
506 | link->io.IOAddrLines = 16; | 458 | link->io.IOAddrLines = 16; |
507 | link->io.Attributes2 = IO_DATA_PATH_WIDTH_8; | 459 | link->io.Attributes2 = IO_DATA_PATH_WIDTH_8; |
508 | link->io.NumPorts2 = 8; | 460 | link->io.NumPorts2 = 8; |
@@ -510,91 +462,80 @@ static int mhz_mfc_config(struct pcmcia_device *link) | |||
510 | /* The Megahertz combo cards have modem-like CIS entries, so | 462 | /* The Megahertz combo cards have modem-like CIS entries, so |
511 | we have to explicitly try a bunch of port combinations. */ | 463 | we have to explicitly try a bunch of port combinations. */ |
512 | if (pcmcia_loop_config(link, mhz_mfc_config_check, NULL)) | 464 | if (pcmcia_loop_config(link, mhz_mfc_config_check, NULL)) |
513 | goto free_cfg_mem; | 465 | return -ENODEV; |
466 | |||
514 | dev->base_addr = link->io.BasePort1; | 467 | dev->base_addr = link->io.BasePort1; |
515 | 468 | ||
516 | /* Allocate a memory window, for accessing the ISR */ | 469 | /* Allocate a memory window, for accessing the ISR */ |
517 | req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; | 470 | req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; |
518 | req.Base = req.Size = 0; | 471 | req.Base = req.Size = 0; |
519 | req.AccessSpeed = 0; | 472 | req.AccessSpeed = 0; |
520 | i = pcmcia_request_window(&link, &req, &link->win); | 473 | i = pcmcia_request_window(link, &req, &link->win); |
521 | if (i != 0) | 474 | if (i != 0) |
522 | goto free_cfg_mem; | 475 | return -ENODEV; |
476 | |||
523 | smc->base = ioremap(req.Base, req.Size); | 477 | smc->base = ioremap(req.Base, req.Size); |
524 | mem.CardOffset = mem.Page = 0; | 478 | mem.CardOffset = mem.Page = 0; |
525 | if (smc->manfid == MANFID_MOTOROLA) | 479 | if (smc->manfid == MANFID_MOTOROLA) |
526 | mem.CardOffset = link->conf.ConfigBase; | 480 | mem.CardOffset = link->conf.ConfigBase; |
527 | i = pcmcia_map_mem_page(link->win, &mem); | 481 | i = pcmcia_map_mem_page(link, link->win, &mem); |
528 | 482 | ||
529 | if ((i == 0) | 483 | if ((i == 0) |
530 | && (smc->manfid == MANFID_MEGAHERTZ) | 484 | && (smc->manfid == MANFID_MEGAHERTZ) |
531 | && (smc->cardid == PRODID_MEGAHERTZ_EM3288)) | 485 | && (smc->cardid == PRODID_MEGAHERTZ_EM3288)) |
532 | mhz_3288_power(link); | 486 | mhz_3288_power(link); |
533 | 487 | ||
534 | free_cfg_mem: | 488 | return 0; |
535 | kfree(cfg_mem); | ||
536 | return -ENODEV; | ||
537 | } | 489 | } |
538 | 490 | ||
539 | static int mhz_setup(struct pcmcia_device *link) | 491 | static int pcmcia_get_versmac(struct pcmcia_device *p_dev, |
492 | tuple_t *tuple, | ||
493 | void *priv) | ||
540 | { | 494 | { |
541 | struct net_device *dev = link->priv; | 495 | struct net_device *dev = priv; |
542 | struct smc_cfg_mem *cfg_mem; | 496 | cisparse_t parse; |
543 | tuple_t *tuple; | ||
544 | cisparse_t *parse; | ||
545 | u_char *buf, *station_addr; | ||
546 | int rc; | ||
547 | 497 | ||
548 | cfg_mem = kmalloc(sizeof(struct smc_cfg_mem), GFP_KERNEL); | 498 | if (pcmcia_parse_tuple(tuple, &parse)) |
549 | if (!cfg_mem) | 499 | return -EINVAL; |
550 | return -1; | ||
551 | 500 | ||
552 | tuple = &cfg_mem->tuple; | 501 | if ((parse.version_1.ns > 3) && |
553 | parse = &cfg_mem->parse; | 502 | (cvt_ascii_address(dev, |
554 | buf = cfg_mem->buf; | 503 | (parse.version_1.str + parse.version_1.ofs[3])))) |
504 | return 0; | ||
555 | 505 | ||
556 | tuple->Attributes = tuple->TupleOffset = 0; | 506 | return -EINVAL; |
557 | tuple->TupleData = (cisdata_t *)buf; | 507 | }; |
558 | tuple->TupleDataMax = 255; | 508 | |
509 | static int mhz_setup(struct pcmcia_device *link) | ||
510 | { | ||
511 | struct net_device *dev = link->priv; | ||
512 | size_t len; | ||
513 | u8 *buf; | ||
514 | int rc; | ||
559 | 515 | ||
560 | /* Read the station address from the CIS. It is stored as the last | 516 | /* Read the station address from the CIS. It is stored as the last |
561 | (fourth) string in the Version 1 Version/ID tuple. */ | 517 | (fourth) string in the Version 1 Version/ID tuple. */ |
562 | tuple->DesiredTuple = CISTPL_VERS_1; | 518 | if ((link->prod_id[3]) && |
563 | if (first_tuple(link, tuple, parse) != 0) { | 519 | (cvt_ascii_address(dev, link->prod_id[3]) == 0)) |
564 | rc = -1; | 520 | return 0; |
565 | goto free_cfg_mem; | 521 | |
566 | } | 522 | /* Workarounds for broken cards start here. */ |
567 | /* Ugh -- the EM1144 card has two VERS_1 tuples!?! */ | 523 | /* Ugh -- the EM1144 card has two VERS_1 tuples!?! */ |
568 | if (next_tuple(link, tuple, parse) != 0) | 524 | if (!pcmcia_loop_tuple(link, CISTPL_VERS_1, pcmcia_get_versmac, dev)) |
569 | first_tuple(link, tuple, parse); | 525 | return 0; |
570 | if (parse->version_1.ns > 3) { | ||
571 | station_addr = parse->version_1.str + parse->version_1.ofs[3]; | ||
572 | if (cvt_ascii_address(dev, station_addr) == 0) { | ||
573 | rc = 0; | ||
574 | goto free_cfg_mem; | ||
575 | } | ||
576 | } | ||
577 | 526 | ||
578 | /* Another possibility: for the EM3288, in a special tuple */ | 527 | /* Another possibility: for the EM3288, in a special tuple */ |
579 | tuple->DesiredTuple = 0x81; | ||
580 | if (pcmcia_get_first_tuple(link, tuple) != 0) { | ||
581 | rc = -1; | ||
582 | goto free_cfg_mem; | ||
583 | } | ||
584 | if (pcmcia_get_tuple_data(link, tuple) != 0) { | ||
585 | rc = -1; | ||
586 | goto free_cfg_mem; | ||
587 | } | ||
588 | buf[12] = '\0'; | ||
589 | if (cvt_ascii_address(dev, buf) == 0) { | ||
590 | rc = 0; | ||
591 | goto free_cfg_mem; | ||
592 | } | ||
593 | rc = -1; | 528 | rc = -1; |
594 | free_cfg_mem: | 529 | len = pcmcia_get_tuple(link, 0x81, &buf); |
595 | kfree(cfg_mem); | 530 | if (buf && len >= 13) { |
596 | return rc; | 531 | buf[12] = '\0'; |
597 | } | 532 | if (cvt_ascii_address(dev, buf)) |
533 | rc = 0; | ||
534 | } | ||
535 | kfree(buf); | ||
536 | |||
537 | return rc; | ||
538 | }; | ||
598 | 539 | ||
599 | /*====================================================================== | 540 | /*====================================================================== |
600 | 541 | ||
@@ -684,58 +625,21 @@ static int smc_config(struct pcmcia_device *link) | |||
684 | return i; | 625 | return i; |
685 | } | 626 | } |
686 | 627 | ||
628 | |||
687 | static int smc_setup(struct pcmcia_device *link) | 629 | static int smc_setup(struct pcmcia_device *link) |
688 | { | 630 | { |
689 | struct net_device *dev = link->priv; | 631 | struct net_device *dev = link->priv; |
690 | struct smc_cfg_mem *cfg_mem; | ||
691 | tuple_t *tuple; | ||
692 | cisparse_t *parse; | ||
693 | cistpl_lan_node_id_t *node_id; | ||
694 | u_char *buf, *station_addr; | ||
695 | int i, rc; | ||
696 | |||
697 | cfg_mem = kmalloc(sizeof(struct smc_cfg_mem), GFP_KERNEL); | ||
698 | if (!cfg_mem) | ||
699 | return -ENOMEM; | ||
700 | |||
701 | tuple = &cfg_mem->tuple; | ||
702 | parse = &cfg_mem->parse; | ||
703 | buf = cfg_mem->buf; | ||
704 | |||
705 | tuple->Attributes = tuple->TupleOffset = 0; | ||
706 | tuple->TupleData = (cisdata_t *)buf; | ||
707 | tuple->TupleDataMax = 255; | ||
708 | 632 | ||
709 | /* Check for a LAN function extension tuple */ | 633 | /* Check for a LAN function extension tuple */ |
710 | tuple->DesiredTuple = CISTPL_FUNCE; | 634 | if (!pcmcia_get_mac_from_cis(link, dev)) |
711 | i = first_tuple(link, tuple, parse); | 635 | return 0; |
712 | while (i == 0) { | 636 | |
713 | if (parse->funce.type == CISTPL_FUNCE_LAN_NODE_ID) | ||
714 | break; | ||
715 | i = next_tuple(link, tuple, parse); | ||
716 | } | ||
717 | if (i == 0) { | ||
718 | node_id = (cistpl_lan_node_id_t *)parse->funce.data; | ||
719 | if (node_id->nb == 6) { | ||
720 | for (i = 0; i < 6; i++) | ||
721 | dev->dev_addr[i] = node_id->id[i]; | ||
722 | rc = 0; | ||
723 | goto free_cfg_mem; | ||
724 | } | ||
725 | } | ||
726 | /* Try the third string in the Version 1 Version/ID tuple. */ | 637 | /* Try the third string in the Version 1 Version/ID tuple. */ |
727 | if (link->prod_id[2]) { | 638 | if (link->prod_id[2]) { |
728 | station_addr = link->prod_id[2]; | 639 | if (cvt_ascii_address(dev, link->prod_id[2]) == 0) |
729 | if (cvt_ascii_address(dev, station_addr) == 0) { | 640 | return 0; |
730 | rc = 0; | ||
731 | goto free_cfg_mem; | ||
732 | } | ||
733 | } | 641 | } |
734 | 642 | return -1; | |
735 | rc = -1; | ||
736 | free_cfg_mem: | ||
737 | kfree(cfg_mem); | ||
738 | return rc; | ||
739 | } | 643 | } |
740 | 644 | ||
741 | /*====================================================================*/ | 645 | /*====================================================================*/ |
@@ -749,7 +653,7 @@ static int osi_config(struct pcmcia_device *link) | |||
749 | link->conf.Attributes |= CONF_ENABLE_SPKR; | 653 | link->conf.Attributes |= CONF_ENABLE_SPKR; |
750 | link->conf.Status = CCSR_AUDIO_ENA; | 654 | link->conf.Status = CCSR_AUDIO_ENA; |
751 | link->irq.Attributes = | 655 | link->irq.Attributes = |
752 | IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED|IRQ_HANDLE_PRESENT; | 656 | IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED; |
753 | link->io.NumPorts1 = 64; | 657 | link->io.NumPorts1 = 64; |
754 | link->io.Attributes2 = IO_DATA_PATH_WIDTH_8; | 658 | link->io.Attributes2 = IO_DATA_PATH_WIDTH_8; |
755 | link->io.NumPorts2 = 8; | 659 | link->io.NumPorts2 = 8; |
@@ -794,41 +698,31 @@ static int osi_load_firmware(struct pcmcia_device *link) | |||
794 | return err; | 698 | return err; |
795 | } | 699 | } |
796 | 700 | ||
797 | static int osi_setup(struct pcmcia_device *link, u_short manfid, u_short cardid) | 701 | static int pcmcia_osi_mac(struct pcmcia_device *p_dev, |
702 | tuple_t *tuple, | ||
703 | void *priv) | ||
798 | { | 704 | { |
799 | struct net_device *dev = link->priv; | 705 | struct net_device *dev = priv; |
800 | struct smc_cfg_mem *cfg_mem; | 706 | int i; |
801 | tuple_t *tuple; | ||
802 | u_char *buf; | ||
803 | int i, rc; | ||
804 | 707 | ||
805 | cfg_mem = kmalloc(sizeof(struct smc_cfg_mem), GFP_KERNEL); | 708 | if (tuple->TupleDataLen < 8) |
806 | if (!cfg_mem) | 709 | return -EINVAL; |
807 | return -1; | 710 | if (tuple->TupleData[0] != 0x04) |
711 | return -EINVAL; | ||
712 | for (i = 0; i < 6; i++) | ||
713 | dev->dev_addr[i] = tuple->TupleData[i+2]; | ||
714 | return 0; | ||
715 | }; | ||
808 | 716 | ||
809 | tuple = &cfg_mem->tuple; | ||
810 | buf = cfg_mem->buf; | ||
811 | 717 | ||
812 | tuple->Attributes = TUPLE_RETURN_COMMON; | 718 | static int osi_setup(struct pcmcia_device *link, u_short manfid, u_short cardid) |
813 | tuple->TupleData = (cisdata_t *)buf; | 719 | { |
814 | tuple->TupleDataMax = 255; | 720 | struct net_device *dev = link->priv; |
815 | tuple->TupleOffset = 0; | 721 | int rc; |
816 | 722 | ||
817 | /* Read the station address from tuple 0x90, subtuple 0x04 */ | 723 | /* Read the station address from tuple 0x90, subtuple 0x04 */ |
818 | tuple->DesiredTuple = 0x90; | 724 | if (pcmcia_loop_tuple(link, 0x90, pcmcia_osi_mac, dev)) |
819 | i = pcmcia_get_first_tuple(link, tuple); | 725 | return -1; |
820 | while (i == 0) { | ||
821 | i = pcmcia_get_tuple_data(link, tuple); | ||
822 | if ((i != 0) || (buf[0] == 0x04)) | ||
823 | break; | ||
824 | i = pcmcia_get_next_tuple(link, tuple); | ||
825 | } | ||
826 | if (i != 0) { | ||
827 | rc = -1; | ||
828 | goto free_cfg_mem; | ||
829 | } | ||
830 | for (i = 0; i < 6; i++) | ||
831 | dev->dev_addr[i] = buf[i+2]; | ||
832 | 726 | ||
833 | if (((manfid == MANFID_OSITECH) && | 727 | if (((manfid == MANFID_OSITECH) && |
834 | (cardid == PRODID_OSITECH_SEVEN)) || | 728 | (cardid == PRODID_OSITECH_SEVEN)) || |
@@ -836,20 +730,17 @@ static int osi_setup(struct pcmcia_device *link, u_short manfid, u_short cardid) | |||
836 | (cardid == PRODID_PSION_NET100))) { | 730 | (cardid == PRODID_PSION_NET100))) { |
837 | rc = osi_load_firmware(link); | 731 | rc = osi_load_firmware(link); |
838 | if (rc) | 732 | if (rc) |
839 | goto free_cfg_mem; | 733 | return rc; |
840 | } else if (manfid == MANFID_OSITECH) { | 734 | } else if (manfid == MANFID_OSITECH) { |
841 | /* Make sure both functions are powered up */ | 735 | /* Make sure both functions are powered up */ |
842 | set_bits(0x300, link->io.BasePort1 + OSITECH_AUI_PWR); | 736 | set_bits(0x300, link->io.BasePort1 + OSITECH_AUI_PWR); |
843 | /* Now, turn on the interrupt for both card functions */ | 737 | /* Now, turn on the interrupt for both card functions */ |
844 | set_bits(0x300, link->io.BasePort1 + OSITECH_RESET_ISR); | 738 | set_bits(0x300, link->io.BasePort1 + OSITECH_RESET_ISR); |
845 | DEBUG(2, "AUI/PWR: %4.4x RESET/ISR: %4.4x\n", | 739 | dev_dbg(&link->dev, "AUI/PWR: %4.4x RESET/ISR: %4.4x\n", |
846 | inw(link->io.BasePort1 + OSITECH_AUI_PWR), | 740 | inw(link->io.BasePort1 + OSITECH_AUI_PWR), |
847 | inw(link->io.BasePort1 + OSITECH_RESET_ISR)); | 741 | inw(link->io.BasePort1 + OSITECH_RESET_ISR)); |
848 | } | 742 | } |
849 | rc = 0; | 743 | return 0; |
850 | free_cfg_mem: | ||
851 | kfree(cfg_mem); | ||
852 | return rc; | ||
853 | } | 744 | } |
854 | 745 | ||
855 | static int smc91c92_suspend(struct pcmcia_device *link) | 746 | static int smc91c92_suspend(struct pcmcia_device *link) |
@@ -959,12 +850,6 @@ static int check_sig(struct pcmcia_device *link) | |||
959 | 850 | ||
960 | ======================================================================*/ | 851 | ======================================================================*/ |
961 | 852 | ||
962 | #define CS_EXIT_TEST(ret, svc, label) \ | ||
963 | if (ret != 0) { \ | ||
964 | cs_error(link, svc, ret); \ | ||
965 | goto label; \ | ||
966 | } | ||
967 | |||
968 | static int smc91c92_config(struct pcmcia_device *link) | 853 | static int smc91c92_config(struct pcmcia_device *link) |
969 | { | 854 | { |
970 | struct net_device *dev = link->priv; | 855 | struct net_device *dev = link->priv; |
@@ -974,7 +859,7 @@ static int smc91c92_config(struct pcmcia_device *link) | |||
974 | unsigned int ioaddr; | 859 | unsigned int ioaddr; |
975 | u_long mir; | 860 | u_long mir; |
976 | 861 | ||
977 | DEBUG(0, "smc91c92_config(0x%p)\n", link); | 862 | dev_dbg(&link->dev, "smc91c92_config\n"); |
978 | 863 | ||
979 | smc->manfid = link->manf_id; | 864 | smc->manfid = link->manf_id; |
980 | smc->cardid = link->card_id; | 865 | smc->cardid = link->card_id; |
@@ -990,12 +875,15 @@ static int smc91c92_config(struct pcmcia_device *link) | |||
990 | } else { | 875 | } else { |
991 | i = smc_config(link); | 876 | i = smc_config(link); |
992 | } | 877 | } |
993 | CS_EXIT_TEST(i, RequestIO, config_failed); | 878 | if (i) |
879 | goto config_failed; | ||
994 | 880 | ||
995 | i = pcmcia_request_irq(link, &link->irq); | 881 | i = pcmcia_request_irq(link, &link->irq); |
996 | CS_EXIT_TEST(i, RequestIRQ, config_failed); | 882 | if (i) |
883 | goto config_failed; | ||
997 | i = pcmcia_request_configuration(link, &link->conf); | 884 | i = pcmcia_request_configuration(link, &link->conf); |
998 | CS_EXIT_TEST(i, RequestConfiguration, config_failed); | 885 | if (i) |
886 | goto config_failed; | ||
999 | 887 | ||
1000 | if (smc->manfid == MANFID_MOTOROLA) | 888 | if (smc->manfid == MANFID_MOTOROLA) |
1001 | mot_config(link); | 889 | mot_config(link); |
@@ -1074,7 +962,7 @@ static int smc91c92_config(struct pcmcia_device *link) | |||
1074 | } | 962 | } |
1075 | 963 | ||
1076 | link->dev_node = &smc->node; | 964 | link->dev_node = &smc->node; |
1077 | SET_NETDEV_DEV(dev, &handle_to_dev(link)); | 965 | SET_NETDEV_DEV(dev, &link->dev); |
1078 | 966 | ||
1079 | if (register_netdev(dev) != 0) { | 967 | if (register_netdev(dev) != 0) { |
1080 | printk(KERN_ERR "smc91c92_cs: register_netdev() failed\n"); | 968 | printk(KERN_ERR "smc91c92_cs: register_netdev() failed\n"); |
@@ -1100,7 +988,7 @@ static int smc91c92_config(struct pcmcia_device *link) | |||
1100 | 988 | ||
1101 | if (smc->cfg & CFG_MII_SELECT) { | 989 | if (smc->cfg & CFG_MII_SELECT) { |
1102 | if (smc->mii_if.phy_id != -1) { | 990 | if (smc->mii_if.phy_id != -1) { |
1103 | DEBUG(0, " MII transceiver at index %d, status %x.\n", | 991 | dev_dbg(&link->dev, " MII transceiver at index %d, status %x.\n", |
1104 | smc->mii_if.phy_id, j); | 992 | smc->mii_if.phy_id, j); |
1105 | } else { | 993 | } else { |
1106 | printk(KERN_NOTICE " No MII transceivers found!\n"); | 994 | printk(KERN_NOTICE " No MII transceivers found!\n"); |
@@ -1110,7 +998,7 @@ static int smc91c92_config(struct pcmcia_device *link) | |||
1110 | 998 | ||
1111 | config_undo: | 999 | config_undo: |
1112 | unregister_netdev(dev); | 1000 | unregister_netdev(dev); |
1113 | config_failed: /* CS_EXIT_TEST() calls jump to here... */ | 1001 | config_failed: |
1114 | smc91c92_release(link); | 1002 | smc91c92_release(link); |
1115 | return -ENODEV; | 1003 | return -ENODEV; |
1116 | } /* smc91c92_config */ | 1004 | } /* smc91c92_config */ |
@@ -1125,7 +1013,7 @@ config_failed: /* CS_EXIT_TEST() calls jump to here... */ | |||
1125 | 1013 | ||
1126 | static void smc91c92_release(struct pcmcia_device *link) | 1014 | static void smc91c92_release(struct pcmcia_device *link) |
1127 | { | 1015 | { |
1128 | DEBUG(0, "smc91c92_release(0x%p)\n", link); | 1016 | dev_dbg(&link->dev, "smc91c92_release\n"); |
1129 | if (link->win) { | 1017 | if (link->win) { |
1130 | struct net_device *dev = link->priv; | 1018 | struct net_device *dev = link->priv; |
1131 | struct smc_private *smc = netdev_priv(dev); | 1019 | struct smc_private *smc = netdev_priv(dev); |
@@ -1222,10 +1110,10 @@ static int smc_open(struct net_device *dev) | |||
1222 | struct smc_private *smc = netdev_priv(dev); | 1110 | struct smc_private *smc = netdev_priv(dev); |
1223 | struct pcmcia_device *link = smc->p_dev; | 1111 | struct pcmcia_device *link = smc->p_dev; |
1224 | 1112 | ||
1225 | #ifdef PCMCIA_DEBUG | 1113 | dev_dbg(&link->dev, "%s: smc_open(%p), ID/Window %4.4x.\n", |
1226 | DEBUG(0, "%s: smc_open(%p), ID/Window %4.4x.\n", | ||
1227 | dev->name, dev, inw(dev->base_addr + BANK_SELECT)); | 1114 | dev->name, dev, inw(dev->base_addr + BANK_SELECT)); |
1228 | if (pc_debug > 1) smc_dump(dev); | 1115 | #ifdef PCMCIA_DEBUG |
1116 | smc_dump(dev); | ||
1229 | #endif | 1117 | #endif |
1230 | 1118 | ||
1231 | /* Check that the PCMCIA card is still here. */ | 1119 | /* Check that the PCMCIA card is still here. */ |
@@ -1260,7 +1148,7 @@ static int smc_close(struct net_device *dev) | |||
1260 | struct pcmcia_device *link = smc->p_dev; | 1148 | struct pcmcia_device *link = smc->p_dev; |
1261 | unsigned int ioaddr = dev->base_addr; | 1149 | unsigned int ioaddr = dev->base_addr; |
1262 | 1150 | ||
1263 | DEBUG(0, "%s: smc_close(), status %4.4x.\n", | 1151 | dev_dbg(&link->dev, "%s: smc_close(), status %4.4x.\n", |
1264 | dev->name, inw(ioaddr + BANK_SELECT)); | 1152 | dev->name, inw(ioaddr + BANK_SELECT)); |
1265 | 1153 | ||
1266 | netif_stop_queue(dev); | 1154 | netif_stop_queue(dev); |
@@ -1327,7 +1215,7 @@ static void smc_hardware_send_packet(struct net_device * dev) | |||
1327 | u_char *buf = skb->data; | 1215 | u_char *buf = skb->data; |
1328 | u_int length = skb->len; /* The chip will pad to ethernet min. */ | 1216 | u_int length = skb->len; /* The chip will pad to ethernet min. */ |
1329 | 1217 | ||
1330 | DEBUG(2, "%s: Trying to xmit packet of length %d.\n", | 1218 | pr_debug("%s: Trying to xmit packet of length %d.\n", |
1331 | dev->name, length); | 1219 | dev->name, length); |
1332 | 1220 | ||
1333 | /* send the packet length: +6 for status word, length, and ctl */ | 1221 | /* send the packet length: +6 for status word, length, and ctl */ |
@@ -1382,7 +1270,7 @@ static netdev_tx_t smc_start_xmit(struct sk_buff *skb, | |||
1382 | 1270 | ||
1383 | netif_stop_queue(dev); | 1271 | netif_stop_queue(dev); |
1384 | 1272 | ||
1385 | DEBUG(2, "%s: smc_start_xmit(length = %d) called," | 1273 | pr_debug("%s: smc_start_xmit(length = %d) called," |
1386 | " status %4.4x.\n", dev->name, skb->len, inw(ioaddr + 2)); | 1274 | " status %4.4x.\n", dev->name, skb->len, inw(ioaddr + 2)); |
1387 | 1275 | ||
1388 | if (smc->saved_skb) { | 1276 | if (smc->saved_skb) { |
@@ -1429,7 +1317,7 @@ static netdev_tx_t smc_start_xmit(struct sk_buff *skb, | |||
1429 | } | 1317 | } |
1430 | 1318 | ||
1431 | /* Otherwise defer until the Tx-space-allocated interrupt. */ | 1319 | /* Otherwise defer until the Tx-space-allocated interrupt. */ |
1432 | DEBUG(2, "%s: memory allocation deferred.\n", dev->name); | 1320 | pr_debug("%s: memory allocation deferred.\n", dev->name); |
1433 | outw((IM_ALLOC_INT << 8) | (ir & 0xff00), ioaddr + INTERRUPT); | 1321 | outw((IM_ALLOC_INT << 8) | (ir & 0xff00), ioaddr + INTERRUPT); |
1434 | spin_unlock_irqrestore(&smc->lock, flags); | 1322 | spin_unlock_irqrestore(&smc->lock, flags); |
1435 | 1323 | ||
@@ -1494,7 +1382,7 @@ static void smc_eph_irq(struct net_device *dev) | |||
1494 | 1382 | ||
1495 | SMC_SELECT_BANK(0); | 1383 | SMC_SELECT_BANK(0); |
1496 | ephs = inw(ioaddr + EPH); | 1384 | ephs = inw(ioaddr + EPH); |
1497 | DEBUG(2, "%s: Ethernet protocol handler interrupt, status" | 1385 | pr_debug("%s: Ethernet protocol handler interrupt, status" |
1498 | " %4.4x.\n", dev->name, ephs); | 1386 | " %4.4x.\n", dev->name, ephs); |
1499 | /* Could be a counter roll-over warning: update stats. */ | 1387 | /* Could be a counter roll-over warning: update stats. */ |
1500 | card_stats = inw(ioaddr + COUNTER); | 1388 | card_stats = inw(ioaddr + COUNTER); |
@@ -1534,7 +1422,7 @@ static irqreturn_t smc_interrupt(int irq, void *dev_id) | |||
1534 | 1422 | ||
1535 | ioaddr = dev->base_addr; | 1423 | ioaddr = dev->base_addr; |
1536 | 1424 | ||
1537 | DEBUG(3, "%s: SMC91c92 interrupt %d at %#x.\n", dev->name, | 1425 | pr_debug("%s: SMC91c92 interrupt %d at %#x.\n", dev->name, |
1538 | irq, ioaddr); | 1426 | irq, ioaddr); |
1539 | 1427 | ||
1540 | spin_lock(&smc->lock); | 1428 | spin_lock(&smc->lock); |
@@ -1543,7 +1431,7 @@ static irqreturn_t smc_interrupt(int irq, void *dev_id) | |||
1543 | if ((saved_bank & 0xff00) != 0x3300) { | 1431 | if ((saved_bank & 0xff00) != 0x3300) { |
1544 | /* The device does not exist -- the card could be off-line, or | 1432 | /* The device does not exist -- the card could be off-line, or |
1545 | maybe it has been ejected. */ | 1433 | maybe it has been ejected. */ |
1546 | DEBUG(1, "%s: SMC91c92 interrupt %d for non-existent" | 1434 | pr_debug("%s: SMC91c92 interrupt %d for non-existent" |
1547 | "/ejected device.\n", dev->name, irq); | 1435 | "/ejected device.\n", dev->name, irq); |
1548 | handled = 0; | 1436 | handled = 0; |
1549 | goto irq_done; | 1437 | goto irq_done; |
@@ -1557,7 +1445,7 @@ static irqreturn_t smc_interrupt(int irq, void *dev_id) | |||
1557 | 1445 | ||
1558 | do { /* read the status flag, and mask it */ | 1446 | do { /* read the status flag, and mask it */ |
1559 | status = inw(ioaddr + INTERRUPT) & 0xff; | 1447 | status = inw(ioaddr + INTERRUPT) & 0xff; |
1560 | DEBUG(3, "%s: Status is %#2.2x (mask %#2.2x).\n", dev->name, | 1448 | pr_debug("%s: Status is %#2.2x (mask %#2.2x).\n", dev->name, |
1561 | status, mask); | 1449 | status, mask); |
1562 | if ((status & mask) == 0) { | 1450 | if ((status & mask) == 0) { |
1563 | if (bogus_cnt == INTR_WORK) | 1451 | if (bogus_cnt == INTR_WORK) |
@@ -1602,7 +1490,7 @@ static irqreturn_t smc_interrupt(int irq, void *dev_id) | |||
1602 | smc_eph_irq(dev); | 1490 | smc_eph_irq(dev); |
1603 | } while (--bogus_cnt); | 1491 | } while (--bogus_cnt); |
1604 | 1492 | ||
1605 | DEBUG(3, " Restoring saved registers mask %2.2x bank %4.4x" | 1493 | pr_debug(" Restoring saved registers mask %2.2x bank %4.4x" |
1606 | " pointer %4.4x.\n", mask, saved_bank, saved_pointer); | 1494 | " pointer %4.4x.\n", mask, saved_bank, saved_pointer); |
1607 | 1495 | ||
1608 | /* restore state register */ | 1496 | /* restore state register */ |
@@ -1610,7 +1498,7 @@ static irqreturn_t smc_interrupt(int irq, void *dev_id) | |||
1610 | outw(saved_pointer, ioaddr + POINTER); | 1498 | outw(saved_pointer, ioaddr + POINTER); |
1611 | SMC_SELECT_BANK(saved_bank); | 1499 | SMC_SELECT_BANK(saved_bank); |
1612 | 1500 | ||
1613 | DEBUG(3, "%s: Exiting interrupt IRQ%d.\n", dev->name, irq); | 1501 | pr_debug("%s: Exiting interrupt IRQ%d.\n", dev->name, irq); |
1614 | 1502 | ||
1615 | irq_done: | 1503 | irq_done: |
1616 | 1504 | ||
@@ -1661,7 +1549,7 @@ static void smc_rx(struct net_device *dev) | |||
1661 | rx_status = inw(ioaddr + DATA_1); | 1549 | rx_status = inw(ioaddr + DATA_1); |
1662 | packet_length = inw(ioaddr + DATA_1) & 0x07ff; | 1550 | packet_length = inw(ioaddr + DATA_1) & 0x07ff; |
1663 | 1551 | ||
1664 | DEBUG(2, "%s: Receive status %4.4x length %d.\n", | 1552 | pr_debug("%s: Receive status %4.4x length %d.\n", |
1665 | dev->name, rx_status, packet_length); | 1553 | dev->name, rx_status, packet_length); |
1666 | 1554 | ||
1667 | if (!(rx_status & RS_ERRORS)) { | 1555 | if (!(rx_status & RS_ERRORS)) { |
@@ -1672,7 +1560,7 @@ static void smc_rx(struct net_device *dev) | |||
1672 | skb = dev_alloc_skb(packet_length+2); | 1560 | skb = dev_alloc_skb(packet_length+2); |
1673 | 1561 | ||
1674 | if (skb == NULL) { | 1562 | if (skb == NULL) { |
1675 | DEBUG(1, "%s: Low memory, packet dropped.\n", dev->name); | 1563 | pr_debug("%s: Low memory, packet dropped.\n", dev->name); |
1676 | dev->stats.rx_dropped++; | 1564 | dev->stats.rx_dropped++; |
1677 | outw(MC_RELEASE, ioaddr + MMU_CMD); | 1565 | outw(MC_RELEASE, ioaddr + MMU_CMD); |
1678 | return; | 1566 | return; |
@@ -1832,7 +1720,7 @@ static void smc_reset(struct net_device *dev) | |||
1832 | struct smc_private *smc = netdev_priv(dev); | 1720 | struct smc_private *smc = netdev_priv(dev); |
1833 | int i; | 1721 | int i; |
1834 | 1722 | ||
1835 | DEBUG(0, "%s: smc91c92 reset called.\n", dev->name); | 1723 | pr_debug("%s: smc91c92 reset called.\n", dev->name); |
1836 | 1724 | ||
1837 | /* The first interaction must be a write to bring the chip out | 1725 | /* The first interaction must be a write to bring the chip out |
1838 | of sleep mode. */ | 1726 | of sleep mode. */ |
@@ -2149,18 +2037,6 @@ static u32 smc_get_link(struct net_device *dev) | |||
2149 | return ret; | 2037 | return ret; |
2150 | } | 2038 | } |
2151 | 2039 | ||
2152 | #ifdef PCMCIA_DEBUG | ||
2153 | static u32 smc_get_msglevel(struct net_device *dev) | ||
2154 | { | ||
2155 | return pc_debug; | ||
2156 | } | ||
2157 | |||
2158 | static void smc_set_msglevel(struct net_device *dev, u32 val) | ||
2159 | { | ||
2160 | pc_debug = val; | ||
2161 | } | ||
2162 | #endif | ||
2163 | |||
2164 | static int smc_nway_reset(struct net_device *dev) | 2040 | static int smc_nway_reset(struct net_device *dev) |
2165 | { | 2041 | { |
2166 | struct smc_private *smc = netdev_priv(dev); | 2042 | struct smc_private *smc = netdev_priv(dev); |
@@ -2184,10 +2060,6 @@ static const struct ethtool_ops ethtool_ops = { | |||
2184 | .get_settings = smc_get_settings, | 2060 | .get_settings = smc_get_settings, |
2185 | .set_settings = smc_set_settings, | 2061 | .set_settings = smc_set_settings, |
2186 | .get_link = smc_get_link, | 2062 | .get_link = smc_get_link, |
2187 | #ifdef PCMCIA_DEBUG | ||
2188 | .get_msglevel = smc_get_msglevel, | ||
2189 | .set_msglevel = smc_set_msglevel, | ||
2190 | #endif | ||
2191 | .nway_reset = smc_nway_reset, | 2063 | .nway_reset = smc_nway_reset, |
2192 | }; | 2064 | }; |
2193 | 2065 | ||
diff --git a/drivers/net/pcmcia/xirc2ps_cs.c b/drivers/net/pcmcia/xirc2ps_cs.c index cf8423102538..fe504b7f369f 100644 --- a/drivers/net/pcmcia/xirc2ps_cs.c +++ b/drivers/net/pcmcia/xirc2ps_cs.c | |||
@@ -211,20 +211,6 @@ enum xirc_cmd { /* Commands */ | |||
211 | 211 | ||
212 | static const char *if_names[] = { "Auto", "10BaseT", "10Base2", "AUI", "100BaseT" }; | 212 | static const char *if_names[] = { "Auto", "10BaseT", "10Base2", "AUI", "100BaseT" }; |
213 | 213 | ||
214 | /**************** | ||
215 | * All the PCMCIA modules use PCMCIA_DEBUG to control debugging. If | ||
216 | * you do not define PCMCIA_DEBUG at all, all the debug code will be | ||
217 | * left out. If you compile with PCMCIA_DEBUG=0, the debug code will | ||
218 | * be present but disabled -- but it can then be enabled for specific | ||
219 | * modules at load time with a 'pc_debug=#' option to insmod. | ||
220 | */ | ||
221 | #ifdef PCMCIA_DEBUG | ||
222 | static int pc_debug = PCMCIA_DEBUG; | ||
223 | module_param(pc_debug, int, 0); | ||
224 | #define DEBUG(n, args...) if (pc_debug>(n)) printk(KDBG_XIRC args) | ||
225 | #else | ||
226 | #define DEBUG(n, args...) | ||
227 | #endif | ||
228 | 214 | ||
229 | #define KDBG_XIRC KERN_DEBUG "xirc2ps_cs: " | 215 | #define KDBG_XIRC KERN_DEBUG "xirc2ps_cs: " |
230 | #define KERR_XIRC KERN_ERR "xirc2ps_cs: " | 216 | #define KERR_XIRC KERN_ERR "xirc2ps_cs: " |
@@ -359,7 +345,7 @@ static void xirc_tx_timeout(struct net_device *dev); | |||
359 | static void xirc2ps_tx_timeout_task(struct work_struct *work); | 345 | static void xirc2ps_tx_timeout_task(struct work_struct *work); |
360 | static void set_addresses(struct net_device *dev); | 346 | static void set_addresses(struct net_device *dev); |
361 | static void set_multicast_list(struct net_device *dev); | 347 | static void set_multicast_list(struct net_device *dev); |
362 | static int set_card_type(struct pcmcia_device *link, const void *s); | 348 | static int set_card_type(struct pcmcia_device *link); |
363 | static int do_config(struct net_device *dev, struct ifmap *map); | 349 | static int do_config(struct net_device *dev, struct ifmap *map); |
364 | static int do_open(struct net_device *dev); | 350 | static int do_open(struct net_device *dev); |
365 | static int do_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); | 351 | static int do_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); |
@@ -371,28 +357,6 @@ static void do_powerdown(struct net_device *dev); | |||
371 | static int do_stop(struct net_device *dev); | 357 | static int do_stop(struct net_device *dev); |
372 | 358 | ||
373 | /*=============== Helper functions =========================*/ | 359 | /*=============== Helper functions =========================*/ |
374 | static int | ||
375 | first_tuple(struct pcmcia_device *handle, tuple_t *tuple, cisparse_t *parse) | ||
376 | { | ||
377 | int err; | ||
378 | |||
379 | if ((err = pcmcia_get_first_tuple(handle, tuple)) == 0 && | ||
380 | (err = pcmcia_get_tuple_data(handle, tuple)) == 0) | ||
381 | err = pcmcia_parse_tuple(tuple, parse); | ||
382 | return err; | ||
383 | } | ||
384 | |||
385 | static int | ||
386 | next_tuple(struct pcmcia_device *handle, tuple_t *tuple, cisparse_t *parse) | ||
387 | { | ||
388 | int err; | ||
389 | |||
390 | if ((err = pcmcia_get_next_tuple(handle, tuple)) == 0 && | ||
391 | (err = pcmcia_get_tuple_data(handle, tuple)) == 0) | ||
392 | err = pcmcia_parse_tuple(tuple, parse); | ||
393 | return err; | ||
394 | } | ||
395 | |||
396 | #define SelectPage(pgnr) outb((pgnr), ioaddr + XIRCREG_PR) | 360 | #define SelectPage(pgnr) outb((pgnr), ioaddr + XIRCREG_PR) |
397 | #define GetByte(reg) ((unsigned)inb(ioaddr + (reg))) | 361 | #define GetByte(reg) ((unsigned)inb(ioaddr + (reg))) |
398 | #define GetWord(reg) ((unsigned)inw(ioaddr + (reg))) | 362 | #define GetWord(reg) ((unsigned)inw(ioaddr + (reg))) |
@@ -400,7 +364,7 @@ next_tuple(struct pcmcia_device *handle, tuple_t *tuple, cisparse_t *parse) | |||
400 | #define PutWord(reg,value) outw((value), ioaddr+(reg)) | 364 | #define PutWord(reg,value) outw((value), ioaddr+(reg)) |
401 | 365 | ||
402 | /*====== Functions used for debugging =================================*/ | 366 | /*====== Functions used for debugging =================================*/ |
403 | #if defined(PCMCIA_DEBUG) && 0 /* reading regs may change system status */ | 367 | #if 0 /* reading regs may change system status */ |
404 | static void | 368 | static void |
405 | PrintRegisters(struct net_device *dev) | 369 | PrintRegisters(struct net_device *dev) |
406 | { | 370 | { |
@@ -432,7 +396,7 @@ PrintRegisters(struct net_device *dev) | |||
432 | } | 396 | } |
433 | } | 397 | } |
434 | } | 398 | } |
435 | #endif /* PCMCIA_DEBUG */ | 399 | #endif /* 0 */ |
436 | 400 | ||
437 | /*============== MII Management functions ===============*/ | 401 | /*============== MII Management functions ===============*/ |
438 | 402 | ||
@@ -576,7 +540,7 @@ xirc2ps_probe(struct pcmcia_device *link) | |||
576 | struct net_device *dev; | 540 | struct net_device *dev; |
577 | local_info_t *local; | 541 | local_info_t *local; |
578 | 542 | ||
579 | DEBUG(0, "attach()\n"); | 543 | dev_dbg(&link->dev, "attach()\n"); |
580 | 544 | ||
581 | /* Allocate the device structure */ | 545 | /* Allocate the device structure */ |
582 | dev = alloc_etherdev(sizeof(local_info_t)); | 546 | dev = alloc_etherdev(sizeof(local_info_t)); |
@@ -592,7 +556,6 @@ xirc2ps_probe(struct pcmcia_device *link) | |||
592 | link->conf.IntType = INT_MEMORY_AND_IO; | 556 | link->conf.IntType = INT_MEMORY_AND_IO; |
593 | link->conf.ConfigIndex = 1; | 557 | link->conf.ConfigIndex = 1; |
594 | link->irq.Handler = xirc2ps_interrupt; | 558 | link->irq.Handler = xirc2ps_interrupt; |
595 | link->irq.Instance = dev; | ||
596 | 559 | ||
597 | /* Fill in card specific entries */ | 560 | /* Fill in card specific entries */ |
598 | dev->netdev_ops = &netdev_ops; | 561 | dev->netdev_ops = &netdev_ops; |
@@ -615,7 +578,7 @@ xirc2ps_detach(struct pcmcia_device *link) | |||
615 | { | 578 | { |
616 | struct net_device *dev = link->priv; | 579 | struct net_device *dev = link->priv; |
617 | 580 | ||
618 | DEBUG(0, "detach(0x%p)\n", link); | 581 | dev_dbg(&link->dev, "detach\n"); |
619 | 582 | ||
620 | if (link->dev_node) | 583 | if (link->dev_node) |
621 | unregister_netdev(dev); | 584 | unregister_netdev(dev); |
@@ -644,17 +607,25 @@ xirc2ps_detach(struct pcmcia_device *link) | |||
644 | * | 607 | * |
645 | */ | 608 | */ |
646 | static int | 609 | static int |
647 | set_card_type(struct pcmcia_device *link, const void *s) | 610 | set_card_type(struct pcmcia_device *link) |
648 | { | 611 | { |
649 | struct net_device *dev = link->priv; | 612 | struct net_device *dev = link->priv; |
650 | local_info_t *local = netdev_priv(dev); | 613 | local_info_t *local = netdev_priv(dev); |
651 | #ifdef PCMCIA_DEBUG | 614 | u8 *buf; |
652 | unsigned cisrev = ((const unsigned char *)s)[2]; | 615 | unsigned int cisrev, mediaid, prodid; |
653 | #endif | 616 | size_t len; |
654 | unsigned mediaid= ((const unsigned char *)s)[3]; | 617 | |
655 | unsigned prodid = ((const unsigned char *)s)[4]; | 618 | len = pcmcia_get_tuple(link, CISTPL_MANFID, &buf); |
619 | if (len < 5) { | ||
620 | dev_err(&link->dev, "invalid CIS -- sorry\n"); | ||
621 | return 0; | ||
622 | } | ||
656 | 623 | ||
657 | DEBUG(0, "cisrev=%02x mediaid=%02x prodid=%02x\n", | 624 | cisrev = buf[2]; |
625 | mediaid = buf[3]; | ||
626 | prodid = buf[4]; | ||
627 | |||
628 | dev_dbg(&link->dev, "cisrev=%02x mediaid=%02x prodid=%02x\n", | ||
658 | cisrev, mediaid, prodid); | 629 | cisrev, mediaid, prodid); |
659 | 630 | ||
660 | local->mohawk = 0; | 631 | local->mohawk = 0; |
@@ -761,6 +732,26 @@ xirc2ps_config_check(struct pcmcia_device *p_dev, | |||
761 | 732 | ||
762 | } | 733 | } |
763 | 734 | ||
735 | |||
736 | static int pcmcia_get_mac_ce(struct pcmcia_device *p_dev, | ||
737 | tuple_t *tuple, | ||
738 | void *priv) | ||
739 | { | ||
740 | struct net_device *dev = priv; | ||
741 | int i; | ||
742 | |||
743 | if (tuple->TupleDataLen != 13) | ||
744 | return -EINVAL; | ||
745 | if ((tuple->TupleData[0] != 2) || (tuple->TupleData[1] != 1) || | ||
746 | (tuple->TupleData[2] != 6)) | ||
747 | return -EINVAL; | ||
748 | /* another try (James Lehmer's CE2 version 4.1)*/ | ||
749 | for (i = 2; i < 6; i++) | ||
750 | dev->dev_addr[i] = tuple->TupleData[i+2]; | ||
751 | return 0; | ||
752 | }; | ||
753 | |||
754 | |||
764 | /**************** | 755 | /**************** |
765 | * xirc2ps_config() is scheduled to run after a CARD_INSERTION event | 756 | * xirc2ps_config() is scheduled to run after a CARD_INSERTION event |
766 | * is received, to configure the PCMCIA socket, and to make the | 757 | * is received, to configure the PCMCIA socket, and to make the |
@@ -772,33 +763,21 @@ xirc2ps_config(struct pcmcia_device * link) | |||
772 | struct net_device *dev = link->priv; | 763 | struct net_device *dev = link->priv; |
773 | local_info_t *local = netdev_priv(dev); | 764 | local_info_t *local = netdev_priv(dev); |
774 | unsigned int ioaddr; | 765 | unsigned int ioaddr; |
775 | tuple_t tuple; | 766 | int err; |
776 | cisparse_t parse; | 767 | u8 *buf; |
777 | int err, i; | 768 | size_t len; |
778 | u_char buf[64]; | ||
779 | cistpl_lan_node_id_t *node_id = (cistpl_lan_node_id_t*)parse.funce.data; | ||
780 | 769 | ||
781 | local->dingo_ccr = NULL; | 770 | local->dingo_ccr = NULL; |
782 | 771 | ||
783 | DEBUG(0, "config(0x%p)\n", link); | 772 | dev_dbg(&link->dev, "config\n"); |
784 | |||
785 | /* | ||
786 | * This reads the card's CONFIG tuple to find its configuration | ||
787 | * registers. | ||
788 | */ | ||
789 | tuple.Attributes = 0; | ||
790 | tuple.TupleData = buf; | ||
791 | tuple.TupleDataMax = 64; | ||
792 | tuple.TupleOffset = 0; | ||
793 | 773 | ||
794 | /* Is this a valid card */ | 774 | /* Is this a valid card */ |
795 | tuple.DesiredTuple = CISTPL_MANFID; | 775 | if (link->has_manf_id == 0) { |
796 | if ((err=first_tuple(link, &tuple, &parse))) { | ||
797 | printk(KNOT_XIRC "manfid not found in CIS\n"); | 776 | printk(KNOT_XIRC "manfid not found in CIS\n"); |
798 | goto failure; | 777 | goto failure; |
799 | } | 778 | } |
800 | 779 | ||
801 | switch(parse.manfid.manf) { | 780 | switch (link->manf_id) { |
802 | case MANFID_XIRCOM: | 781 | case MANFID_XIRCOM: |
803 | local->manf_str = "Xircom"; | 782 | local->manf_str = "Xircom"; |
804 | break; | 783 | break; |
@@ -817,65 +796,44 @@ xirc2ps_config(struct pcmcia_device * link) | |||
817 | break; | 796 | break; |
818 | default: | 797 | default: |
819 | printk(KNOT_XIRC "Unknown Card Manufacturer ID: 0x%04x\n", | 798 | printk(KNOT_XIRC "Unknown Card Manufacturer ID: 0x%04x\n", |
820 | (unsigned)parse.manfid.manf); | 799 | (unsigned)link->manf_id); |
821 | goto failure; | 800 | goto failure; |
822 | } | 801 | } |
823 | DEBUG(0, "found %s card\n", local->manf_str); | 802 | dev_dbg(&link->dev, "found %s card\n", local->manf_str); |
824 | 803 | ||
825 | if (!set_card_type(link, buf)) { | 804 | if (!set_card_type(link)) { |
826 | printk(KNOT_XIRC "this card is not supported\n"); | 805 | printk(KNOT_XIRC "this card is not supported\n"); |
827 | goto failure; | 806 | goto failure; |
828 | } | 807 | } |
829 | 808 | ||
830 | /* get the ethernet address from the CIS */ | 809 | /* get the ethernet address from the CIS */ |
831 | tuple.DesiredTuple = CISTPL_FUNCE; | 810 | err = pcmcia_get_mac_from_cis(link, dev); |
832 | for (err = first_tuple(link, &tuple, &parse); !err; | 811 | |
833 | err = next_tuple(link, &tuple, &parse)) { | 812 | /* not found: try to get the node-id from tuple 0x89 */ |
834 | /* Once I saw two CISTPL_FUNCE_LAN_NODE_ID entries: | 813 | if (err) { |
835 | * the first one with a length of zero the second correct - | 814 | len = pcmcia_get_tuple(link, 0x89, &buf); |
836 | * so I skip all entries with length 0 */ | 815 | /* data layout looks like tuple 0x22 */ |
837 | if (parse.funce.type == CISTPL_FUNCE_LAN_NODE_ID | 816 | if (buf && len == 8) { |
838 | && ((cistpl_lan_node_id_t *)parse.funce.data)->nb) | 817 | if (*buf == CISTPL_FUNCE_LAN_NODE_ID) { |
839 | break; | 818 | int i; |
840 | } | 819 | for (i = 2; i < 6; i++) |
841 | if (err) { /* not found: try to get the node-id from tuple 0x89 */ | 820 | dev->dev_addr[i] = buf[i+2]; |
842 | tuple.DesiredTuple = 0x89; /* data layout looks like tuple 0x22 */ | 821 | } else |
843 | if ((err = pcmcia_get_first_tuple(link, &tuple)) == 0 && | 822 | err = -1; |
844 | (err = pcmcia_get_tuple_data(link, &tuple)) == 0) { | ||
845 | if (tuple.TupleDataLen == 8 && *buf == CISTPL_FUNCE_LAN_NODE_ID) | ||
846 | memcpy(&parse, buf, 8); | ||
847 | else | ||
848 | err = -1; | ||
849 | } | ||
850 | } | ||
851 | if (err) { /* another try (James Lehmer's CE2 version 4.1)*/ | ||
852 | tuple.DesiredTuple = CISTPL_FUNCE; | ||
853 | for (err = first_tuple(link, &tuple, &parse); !err; | ||
854 | err = next_tuple(link, &tuple, &parse)) { | ||
855 | if (parse.funce.type == 0x02 && parse.funce.data[0] == 1 | ||
856 | && parse.funce.data[1] == 6 && tuple.TupleDataLen == 13) { | ||
857 | buf[1] = 4; | ||
858 | memcpy(&parse, buf+1, 8); | ||
859 | break; | ||
860 | } | 823 | } |
861 | } | 824 | kfree(buf); |
862 | } | 825 | } |
826 | |||
827 | if (err) | ||
828 | err = pcmcia_loop_tuple(link, CISTPL_FUNCE, pcmcia_get_mac_ce, dev); | ||
829 | |||
863 | if (err) { | 830 | if (err) { |
864 | printk(KNOT_XIRC "node-id not found in CIS\n"); | 831 | printk(KNOT_XIRC "node-id not found in CIS\n"); |
865 | goto failure; | 832 | goto failure; |
866 | } | 833 | } |
867 | node_id = (cistpl_lan_node_id_t *)parse.funce.data; | ||
868 | if (node_id->nb != 6) { | ||
869 | printk(KNOT_XIRC "malformed node-id in CIS\n"); | ||
870 | goto failure; | ||
871 | } | ||
872 | for (i=0; i < 6; i++) | ||
873 | dev->dev_addr[i] = node_id->id[i]; | ||
874 | 834 | ||
875 | link->io.IOAddrLines =10; | 835 | link->io.IOAddrLines =10; |
876 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_16; | 836 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_16; |
877 | link->irq.Attributes = IRQ_HANDLE_PRESENT; | ||
878 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; | ||
879 | if (local->modem) { | 837 | if (local->modem) { |
880 | int pass; | 838 | int pass; |
881 | 839 | ||
@@ -916,10 +874,8 @@ xirc2ps_config(struct pcmcia_device * link) | |||
916 | goto port_found; | 874 | goto port_found; |
917 | } | 875 | } |
918 | link->io.BasePort1 = 0; /* let CS decide */ | 876 | link->io.BasePort1 = 0; /* let CS decide */ |
919 | if ((err=pcmcia_request_io(link, &link->io))) { | 877 | if ((err=pcmcia_request_io(link, &link->io))) |
920 | cs_error(link, RequestIO, err); | ||
921 | goto config_error; | 878 | goto config_error; |
922 | } | ||
923 | } | 879 | } |
924 | port_found: | 880 | port_found: |
925 | if (err) | 881 | if (err) |
@@ -929,19 +885,15 @@ xirc2ps_config(struct pcmcia_device * link) | |||
929 | * Now allocate an interrupt line. Note that this does not | 885 | * Now allocate an interrupt line. Note that this does not |
930 | * actually assign a handler to the interrupt. | 886 | * actually assign a handler to the interrupt. |
931 | */ | 887 | */ |
932 | if ((err=pcmcia_request_irq(link, &link->irq))) { | 888 | if ((err=pcmcia_request_irq(link, &link->irq))) |
933 | cs_error(link, RequestIRQ, err); | ||
934 | goto config_error; | 889 | goto config_error; |
935 | } | ||
936 | 890 | ||
937 | /**************** | 891 | /**************** |
938 | * This actually configures the PCMCIA socket -- setting up | 892 | * This actually configures the PCMCIA socket -- setting up |
939 | * the I/O windows and the interrupt mapping. | 893 | * the I/O windows and the interrupt mapping. |
940 | */ | 894 | */ |
941 | if ((err=pcmcia_request_configuration(link, &link->conf))) { | 895 | if ((err=pcmcia_request_configuration(link, &link->conf))) |
942 | cs_error(link, RequestConfiguration, err); | ||
943 | goto config_error; | 896 | goto config_error; |
944 | } | ||
945 | 897 | ||
946 | if (local->dingo) { | 898 | if (local->dingo) { |
947 | conf_reg_t reg; | 899 | conf_reg_t reg; |
@@ -956,17 +908,13 @@ xirc2ps_config(struct pcmcia_device * link) | |||
956 | reg.Action = CS_WRITE; | 908 | reg.Action = CS_WRITE; |
957 | reg.Offset = CISREG_IOBASE_0; | 909 | reg.Offset = CISREG_IOBASE_0; |
958 | reg.Value = link->io.BasePort2 & 0xff; | 910 | reg.Value = link->io.BasePort2 & 0xff; |
959 | if ((err = pcmcia_access_configuration_register(link, ®))) { | 911 | if ((err = pcmcia_access_configuration_register(link, ®))) |
960 | cs_error(link, AccessConfigurationRegister, err); | ||
961 | goto config_error; | 912 | goto config_error; |
962 | } | ||
963 | reg.Action = CS_WRITE; | 913 | reg.Action = CS_WRITE; |
964 | reg.Offset = CISREG_IOBASE_1; | 914 | reg.Offset = CISREG_IOBASE_1; |
965 | reg.Value = (link->io.BasePort2 >> 8) & 0xff; | 915 | reg.Value = (link->io.BasePort2 >> 8) & 0xff; |
966 | if ((err = pcmcia_access_configuration_register(link, ®))) { | 916 | if ((err = pcmcia_access_configuration_register(link, ®))) |
967 | cs_error(link, AccessConfigurationRegister, err); | ||
968 | goto config_error; | 917 | goto config_error; |
969 | } | ||
970 | 918 | ||
971 | /* There is no config entry for the Ethernet part which | 919 | /* There is no config entry for the Ethernet part which |
972 | * is at 0x0800. So we allocate a window into the attribute | 920 | * is at 0x0800. So we allocate a window into the attribute |
@@ -975,17 +923,14 @@ xirc2ps_config(struct pcmcia_device * link) | |||
975 | req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; | 923 | req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; |
976 | req.Base = req.Size = 0; | 924 | req.Base = req.Size = 0; |
977 | req.AccessSpeed = 0; | 925 | req.AccessSpeed = 0; |
978 | if ((err = pcmcia_request_window(&link, &req, &link->win))) { | 926 | if ((err = pcmcia_request_window(link, &req, &link->win))) |
979 | cs_error(link, RequestWindow, err); | ||
980 | goto config_error; | 927 | goto config_error; |
981 | } | 928 | |
982 | local->dingo_ccr = ioremap(req.Base,0x1000) + 0x0800; | 929 | local->dingo_ccr = ioremap(req.Base,0x1000) + 0x0800; |
983 | mem.CardOffset = 0x0; | 930 | mem.CardOffset = 0x0; |
984 | mem.Page = 0; | 931 | mem.Page = 0; |
985 | if ((err = pcmcia_map_mem_page(link->win, &mem))) { | 932 | if ((err = pcmcia_map_mem_page(link, link->win, &mem))) |
986 | cs_error(link, MapMemPage, err); | ||
987 | goto config_error; | 933 | goto config_error; |
988 | } | ||
989 | 934 | ||
990 | /* Setup the CCRs; there are no infos in the CIS about the Ethernet | 935 | /* Setup the CCRs; there are no infos in the CIS about the Ethernet |
991 | * part. | 936 | * part. |
@@ -1044,7 +989,7 @@ xirc2ps_config(struct pcmcia_device * link) | |||
1044 | do_reset(dev, 1); /* a kludge to make the cem56 work */ | 989 | do_reset(dev, 1); /* a kludge to make the cem56 work */ |
1045 | 990 | ||
1046 | link->dev_node = &local->node; | 991 | link->dev_node = &local->node; |
1047 | SET_NETDEV_DEV(dev, &handle_to_dev(link)); | 992 | SET_NETDEV_DEV(dev, &link->dev); |
1048 | 993 | ||
1049 | if ((err=register_netdev(dev))) { | 994 | if ((err=register_netdev(dev))) { |
1050 | printk(KNOT_XIRC "register_netdev() failed\n"); | 995 | printk(KNOT_XIRC "register_netdev() failed\n"); |
@@ -1077,7 +1022,7 @@ xirc2ps_config(struct pcmcia_device * link) | |||
1077 | static void | 1022 | static void |
1078 | xirc2ps_release(struct pcmcia_device *link) | 1023 | xirc2ps_release(struct pcmcia_device *link) |
1079 | { | 1024 | { |
1080 | DEBUG(0, "release(0x%p)\n", link); | 1025 | dev_dbg(&link->dev, "release\n"); |
1081 | 1026 | ||
1082 | if (link->win) { | 1027 | if (link->win) { |
1083 | struct net_device *dev = link->priv; | 1028 | struct net_device *dev = link->priv; |
@@ -1144,7 +1089,7 @@ xirc2ps_interrupt(int irq, void *dev_id) | |||
1144 | PutByte(XIRCREG_CR, 0); | 1089 | PutByte(XIRCREG_CR, 0); |
1145 | } | 1090 | } |
1146 | 1091 | ||
1147 | DEBUG(6, "%s: interrupt %d at %#x.\n", dev->name, irq, ioaddr); | 1092 | pr_debug("%s: interrupt %d at %#x.\n", dev->name, irq, ioaddr); |
1148 | 1093 | ||
1149 | saved_page = GetByte(XIRCREG_PR); | 1094 | saved_page = GetByte(XIRCREG_PR); |
1150 | /* Read the ISR to see whats the cause for the interrupt. | 1095 | /* Read the ISR to see whats the cause for the interrupt. |
@@ -1154,7 +1099,7 @@ xirc2ps_interrupt(int irq, void *dev_id) | |||
1154 | bytes_rcvd = 0; | 1099 | bytes_rcvd = 0; |
1155 | loop_entry: | 1100 | loop_entry: |
1156 | if (int_status == 0xff) { /* card may be ejected */ | 1101 | if (int_status == 0xff) { /* card may be ejected */ |
1157 | DEBUG(3, "%s: interrupt %d for dead card\n", dev->name, irq); | 1102 | pr_debug("%s: interrupt %d for dead card\n", dev->name, irq); |
1158 | goto leave; | 1103 | goto leave; |
1159 | } | 1104 | } |
1160 | eth_status = GetByte(XIRCREG_ESR); | 1105 | eth_status = GetByte(XIRCREG_ESR); |
@@ -1167,7 +1112,7 @@ xirc2ps_interrupt(int irq, void *dev_id) | |||
1167 | PutByte(XIRCREG40_TXST0, 0); | 1112 | PutByte(XIRCREG40_TXST0, 0); |
1168 | PutByte(XIRCREG40_TXST1, 0); | 1113 | PutByte(XIRCREG40_TXST1, 0); |
1169 | 1114 | ||
1170 | DEBUG(3, "%s: ISR=%#2.2x ESR=%#2.2x RSR=%#2.2x TSR=%#4.4x\n", | 1115 | pr_debug("%s: ISR=%#2.2x ESR=%#2.2x RSR=%#2.2x TSR=%#4.4x\n", |
1171 | dev->name, int_status, eth_status, rx_status, tx_status); | 1116 | dev->name, int_status, eth_status, rx_status, tx_status); |
1172 | 1117 | ||
1173 | /***** receive section ******/ | 1118 | /***** receive section ******/ |
@@ -1178,14 +1123,14 @@ xirc2ps_interrupt(int irq, void *dev_id) | |||
1178 | /* too many bytes received during this int, drop the rest of the | 1123 | /* too many bytes received during this int, drop the rest of the |
1179 | * packets */ | 1124 | * packets */ |
1180 | dev->stats.rx_dropped++; | 1125 | dev->stats.rx_dropped++; |
1181 | DEBUG(2, "%s: RX drop, too much done\n", dev->name); | 1126 | pr_debug("%s: RX drop, too much done\n", dev->name); |
1182 | } else if (rsr & PktRxOk) { | 1127 | } else if (rsr & PktRxOk) { |
1183 | struct sk_buff *skb; | 1128 | struct sk_buff *skb; |
1184 | 1129 | ||
1185 | pktlen = GetWord(XIRCREG0_RBC); | 1130 | pktlen = GetWord(XIRCREG0_RBC); |
1186 | bytes_rcvd += pktlen; | 1131 | bytes_rcvd += pktlen; |
1187 | 1132 | ||
1188 | DEBUG(5, "rsr=%#02x packet_length=%u\n", rsr, pktlen); | 1133 | pr_debug("rsr=%#02x packet_length=%u\n", rsr, pktlen); |
1189 | 1134 | ||
1190 | skb = dev_alloc_skb(pktlen+3); /* 1 extra so we can use insw */ | 1135 | skb = dev_alloc_skb(pktlen+3); /* 1 extra so we can use insw */ |
1191 | if (!skb) { | 1136 | if (!skb) { |
@@ -1253,19 +1198,19 @@ xirc2ps_interrupt(int irq, void *dev_id) | |||
1253 | dev->stats.multicast++; | 1198 | dev->stats.multicast++; |
1254 | } | 1199 | } |
1255 | } else { /* bad packet */ | 1200 | } else { /* bad packet */ |
1256 | DEBUG(5, "rsr=%#02x\n", rsr); | 1201 | pr_debug("rsr=%#02x\n", rsr); |
1257 | } | 1202 | } |
1258 | if (rsr & PktTooLong) { | 1203 | if (rsr & PktTooLong) { |
1259 | dev->stats.rx_frame_errors++; | 1204 | dev->stats.rx_frame_errors++; |
1260 | DEBUG(3, "%s: Packet too long\n", dev->name); | 1205 | pr_debug("%s: Packet too long\n", dev->name); |
1261 | } | 1206 | } |
1262 | if (rsr & CRCErr) { | 1207 | if (rsr & CRCErr) { |
1263 | dev->stats.rx_crc_errors++; | 1208 | dev->stats.rx_crc_errors++; |
1264 | DEBUG(3, "%s: CRC error\n", dev->name); | 1209 | pr_debug("%s: CRC error\n", dev->name); |
1265 | } | 1210 | } |
1266 | if (rsr & AlignErr) { | 1211 | if (rsr & AlignErr) { |
1267 | dev->stats.rx_fifo_errors++; /* okay ? */ | 1212 | dev->stats.rx_fifo_errors++; /* okay ? */ |
1268 | DEBUG(3, "%s: Alignment error\n", dev->name); | 1213 | pr_debug("%s: Alignment error\n", dev->name); |
1269 | } | 1214 | } |
1270 | 1215 | ||
1271 | /* clear the received/dropped/error packet */ | 1216 | /* clear the received/dropped/error packet */ |
@@ -1277,7 +1222,7 @@ xirc2ps_interrupt(int irq, void *dev_id) | |||
1277 | if (rx_status & 0x10) { /* Receive overrun */ | 1222 | if (rx_status & 0x10) { /* Receive overrun */ |
1278 | dev->stats.rx_over_errors++; | 1223 | dev->stats.rx_over_errors++; |
1279 | PutByte(XIRCREG_CR, ClearRxOvrun); | 1224 | PutByte(XIRCREG_CR, ClearRxOvrun); |
1280 | DEBUG(3, "receive overrun cleared\n"); | 1225 | pr_debug("receive overrun cleared\n"); |
1281 | } | 1226 | } |
1282 | 1227 | ||
1283 | /***** transmit section ******/ | 1228 | /***** transmit section ******/ |
@@ -1290,13 +1235,13 @@ xirc2ps_interrupt(int irq, void *dev_id) | |||
1290 | if (nn < n) /* rollover */ | 1235 | if (nn < n) /* rollover */ |
1291 | dev->stats.tx_packets += 256 - n; | 1236 | dev->stats.tx_packets += 256 - n; |
1292 | else if (n == nn) { /* happens sometimes - don't know why */ | 1237 | else if (n == nn) { /* happens sometimes - don't know why */ |
1293 | DEBUG(0, "PTR not changed?\n"); | 1238 | pr_debug("PTR not changed?\n"); |
1294 | } else | 1239 | } else |
1295 | dev->stats.tx_packets += lp->last_ptr_value - n; | 1240 | dev->stats.tx_packets += lp->last_ptr_value - n; |
1296 | netif_wake_queue(dev); | 1241 | netif_wake_queue(dev); |
1297 | } | 1242 | } |
1298 | if (tx_status & 0x0002) { /* Execessive collissions */ | 1243 | if (tx_status & 0x0002) { /* Execessive collissions */ |
1299 | DEBUG(0, "tx restarted due to execssive collissions\n"); | 1244 | pr_debug("tx restarted due to execssive collissions\n"); |
1300 | PutByte(XIRCREG_CR, RestartTx); /* restart transmitter process */ | 1245 | PutByte(XIRCREG_CR, RestartTx); /* restart transmitter process */ |
1301 | } | 1246 | } |
1302 | if (tx_status & 0x0040) | 1247 | if (tx_status & 0x0040) |
@@ -1315,14 +1260,14 @@ xirc2ps_interrupt(int irq, void *dev_id) | |||
1315 | maxrx_bytes = 2000; | 1260 | maxrx_bytes = 2000; |
1316 | else if (maxrx_bytes > 22000) | 1261 | else if (maxrx_bytes > 22000) |
1317 | maxrx_bytes = 22000; | 1262 | maxrx_bytes = 22000; |
1318 | DEBUG(1, "set maxrx=%u (rcvd=%u ticks=%lu)\n", | 1263 | pr_debug("set maxrx=%u (rcvd=%u ticks=%lu)\n", |
1319 | maxrx_bytes, bytes_rcvd, duration); | 1264 | maxrx_bytes, bytes_rcvd, duration); |
1320 | } else if (!duration && maxrx_bytes < 22000) { | 1265 | } else if (!duration && maxrx_bytes < 22000) { |
1321 | /* now much faster */ | 1266 | /* now much faster */ |
1322 | maxrx_bytes += 2000; | 1267 | maxrx_bytes += 2000; |
1323 | if (maxrx_bytes > 22000) | 1268 | if (maxrx_bytes > 22000) |
1324 | maxrx_bytes = 22000; | 1269 | maxrx_bytes = 22000; |
1325 | DEBUG(1, "set maxrx=%u\n", maxrx_bytes); | 1270 | pr_debug("set maxrx=%u\n", maxrx_bytes); |
1326 | } | 1271 | } |
1327 | } | 1272 | } |
1328 | 1273 | ||
@@ -1372,7 +1317,7 @@ do_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
1372 | unsigned freespace; | 1317 | unsigned freespace; |
1373 | unsigned pktlen = skb->len; | 1318 | unsigned pktlen = skb->len; |
1374 | 1319 | ||
1375 | DEBUG(1, "do_start_xmit(skb=%p, dev=%p) len=%u\n", | 1320 | pr_debug("do_start_xmit(skb=%p, dev=%p) len=%u\n", |
1376 | skb, dev, pktlen); | 1321 | skb, dev, pktlen); |
1377 | 1322 | ||
1378 | 1323 | ||
@@ -1398,7 +1343,7 @@ do_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
1398 | freespace &= 0x7fff; | 1343 | freespace &= 0x7fff; |
1399 | /* TRS doesn't work - (indeed it is eliminated with sil-rev 1) */ | 1344 | /* TRS doesn't work - (indeed it is eliminated with sil-rev 1) */ |
1400 | okay = pktlen +2 < freespace; | 1345 | okay = pktlen +2 < freespace; |
1401 | DEBUG(2 + (okay ? 2 : 0), "%s: avail. tx space=%u%s\n", | 1346 | pr_debug("%s: avail. tx space=%u%s\n", |
1402 | dev->name, freespace, okay ? " (okay)":" (not enough)"); | 1347 | dev->name, freespace, okay ? " (okay)":" (not enough)"); |
1403 | if (!okay) { /* not enough space */ | 1348 | if (!okay) { /* not enough space */ |
1404 | return NETDEV_TX_BUSY; /* upper layer may decide to requeue this packet */ | 1349 | return NETDEV_TX_BUSY; /* upper layer may decide to requeue this packet */ |
@@ -1500,7 +1445,7 @@ do_config(struct net_device *dev, struct ifmap *map) | |||
1500 | { | 1445 | { |
1501 | local_info_t *local = netdev_priv(dev); | 1446 | local_info_t *local = netdev_priv(dev); |
1502 | 1447 | ||
1503 | DEBUG(0, "do_config(%p)\n", dev); | 1448 | pr_debug("do_config(%p)\n", dev); |
1504 | if (map->port != 255 && map->port != dev->if_port) { | 1449 | if (map->port != 255 && map->port != dev->if_port) { |
1505 | if (map->port > 4) | 1450 | if (map->port > 4) |
1506 | return -EINVAL; | 1451 | return -EINVAL; |
@@ -1527,7 +1472,7 @@ do_open(struct net_device *dev) | |||
1527 | local_info_t *lp = netdev_priv(dev); | 1472 | local_info_t *lp = netdev_priv(dev); |
1528 | struct pcmcia_device *link = lp->p_dev; | 1473 | struct pcmcia_device *link = lp->p_dev; |
1529 | 1474 | ||
1530 | DEBUG(0, "do_open(%p)\n", dev); | 1475 | dev_dbg(&link->dev, "do_open(%p)\n", dev); |
1531 | 1476 | ||
1532 | /* Check that the PCMCIA card is still here. */ | 1477 | /* Check that the PCMCIA card is still here. */ |
1533 | /* Physical device present signature. */ | 1478 | /* Physical device present signature. */ |
@@ -1561,7 +1506,7 @@ do_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) | |||
1561 | unsigned int ioaddr = dev->base_addr; | 1506 | unsigned int ioaddr = dev->base_addr; |
1562 | struct mii_ioctl_data *data = if_mii(rq); | 1507 | struct mii_ioctl_data *data = if_mii(rq); |
1563 | 1508 | ||
1564 | DEBUG(1, "%s: ioctl(%-.6s, %#04x) %04x %04x %04x %04x\n", | 1509 | pr_debug("%s: ioctl(%-.6s, %#04x) %04x %04x %04x %04x\n", |
1565 | dev->name, rq->ifr_ifrn.ifrn_name, cmd, | 1510 | dev->name, rq->ifr_ifrn.ifrn_name, cmd, |
1566 | data->phy_id, data->reg_num, data->val_in, data->val_out); | 1511 | data->phy_id, data->reg_num, data->val_in, data->val_out); |
1567 | 1512 | ||
@@ -1610,7 +1555,7 @@ do_reset(struct net_device *dev, int full) | |||
1610 | unsigned int ioaddr = dev->base_addr; | 1555 | unsigned int ioaddr = dev->base_addr; |
1611 | unsigned value; | 1556 | unsigned value; |
1612 | 1557 | ||
1613 | DEBUG(0, "%s: do_reset(%p,%d)\n", dev? dev->name:"eth?", dev, full); | 1558 | pr_debug("%s: do_reset(%p,%d)\n", dev? dev->name:"eth?", dev, full); |
1614 | 1559 | ||
1615 | hardreset(dev); | 1560 | hardreset(dev); |
1616 | PutByte(XIRCREG_CR, SoftReset); /* set */ | 1561 | PutByte(XIRCREG_CR, SoftReset); /* set */ |
@@ -1648,8 +1593,8 @@ do_reset(struct net_device *dev, int full) | |||
1648 | } | 1593 | } |
1649 | msleep(40); /* wait 40 msec to let it complete */ | 1594 | msleep(40); /* wait 40 msec to let it complete */ |
1650 | 1595 | ||
1651 | #ifdef PCMCIA_DEBUG | 1596 | #if 0 |
1652 | if (pc_debug) { | 1597 | { |
1653 | SelectPage(0); | 1598 | SelectPage(0); |
1654 | value = GetByte(XIRCREG_ESR); /* read the ESR */ | 1599 | value = GetByte(XIRCREG_ESR); /* read the ESR */ |
1655 | printk(KERN_DEBUG "%s: ESR is: %#02x\n", dev->name, value); | 1600 | printk(KERN_DEBUG "%s: ESR is: %#02x\n", dev->name, value); |
@@ -1666,7 +1611,7 @@ do_reset(struct net_device *dev, int full) | |||
1666 | value |= DisableLinkPulse; | 1611 | value |= DisableLinkPulse; |
1667 | PutByte(XIRCREG1_ECR, value); | 1612 | PutByte(XIRCREG1_ECR, value); |
1668 | #endif | 1613 | #endif |
1669 | DEBUG(0, "%s: ECR is: %#02x\n", dev->name, value); | 1614 | pr_debug("%s: ECR is: %#02x\n", dev->name, value); |
1670 | 1615 | ||
1671 | SelectPage(0x42); | 1616 | SelectPage(0x42); |
1672 | PutByte(XIRCREG42_SWC0, 0x20); /* disable source insertion */ | 1617 | PutByte(XIRCREG42_SWC0, 0x20); /* disable source insertion */ |
@@ -1844,7 +1789,7 @@ do_powerdown(struct net_device *dev) | |||
1844 | 1789 | ||
1845 | unsigned int ioaddr = dev->base_addr; | 1790 | unsigned int ioaddr = dev->base_addr; |
1846 | 1791 | ||
1847 | DEBUG(0, "do_powerdown(%p)\n", dev); | 1792 | pr_debug("do_powerdown(%p)\n", dev); |
1848 | 1793 | ||
1849 | SelectPage(4); | 1794 | SelectPage(4); |
1850 | PutByte(XIRCREG4_GPR1, 0); /* clear bit 0: power down */ | 1795 | PutByte(XIRCREG4_GPR1, 0); /* clear bit 0: power down */ |
@@ -1858,7 +1803,7 @@ do_stop(struct net_device *dev) | |||
1858 | local_info_t *lp = netdev_priv(dev); | 1803 | local_info_t *lp = netdev_priv(dev); |
1859 | struct pcmcia_device *link = lp->p_dev; | 1804 | struct pcmcia_device *link = lp->p_dev; |
1860 | 1805 | ||
1861 | DEBUG(0, "do_stop(%p)\n", dev); | 1806 | dev_dbg(&link->dev, "do_stop(%p)\n", dev); |
1862 | 1807 | ||
1863 | if (!link) | 1808 | if (!link) |
1864 | return -ENODEV; | 1809 | return -ENODEV; |