Lines Matching refs:card

113 static void xircom_up(struct xircom_private *card);
118 static void investigate_read_descriptor(struct net_device *dev,struct xircom_private *card, int des…
119 static void investigate_write_descriptor(struct net_device *dev, struct xircom_private *card, int d…
120 static void read_mac_address(struct xircom_private *card);
121 static void transceiver_voodoo(struct xircom_private *card);
122 static void initialize_card(struct xircom_private *card);
123 static void trigger_transmit(struct xircom_private *card);
124 static void trigger_receive(struct xircom_private *card);
125 static void setup_descriptors(struct xircom_private *card);
126 static void remove_descriptors(struct xircom_private *card);
127 static int link_status_changed(struct xircom_private *card);
128 static void activate_receiver(struct xircom_private *card);
129 static void deactivate_receiver(struct xircom_private *card);
130 static void activate_transmitter(struct xircom_private *card);
131 static void deactivate_transmitter(struct xircom_private *card);
132 static void enable_transmit_interrupt(struct xircom_private *card);
133 static void enable_receive_interrupt(struct xircom_private *card);
134 static void enable_link_interrupt(struct xircom_private *card);
135 static void disable_all_interrupts(struct xircom_private *card);
136 static int link_status(struct xircom_private *card);
313 struct xircom_private *card = netdev_priv(dev); in xircom_remove() local
317 pci_iounmap(pdev, card->ioaddr); in xircom_remove()
318 dma_free_coherent(d, 8192, card->tx_buffer, card->tx_dma_handle); in xircom_remove()
319 dma_free_coherent(d, 8192, card->rx_buffer, card->rx_dma_handle); in xircom_remove()
328 struct xircom_private *card = netdev_priv(dev); in xircom_interrupt() local
329 void __iomem *ioaddr = card->ioaddr; in xircom_interrupt()
333 spin_lock(&card->lock); in xircom_interrupt()
339 card->tx_buffer[0], card->tx_buffer[4]); in xircom_interrupt()
341 card->rx_buffer[0], card->rx_buffer[4]); in xircom_interrupt()
345 spin_unlock(&card->lock); in xircom_interrupt()
349 if (link_status_changed(card)) { in xircom_interrupt()
352 newlink = link_status(card); in xircom_interrupt()
368 investigate_write_descriptor(dev,card,i,bufferoffsets[i]); in xircom_interrupt()
370 investigate_read_descriptor(dev,card,i,bufferoffsets[i]); in xircom_interrupt()
372 spin_unlock(&card->lock); in xircom_interrupt()
379 struct xircom_private *card; in xircom_start_xmit() local
384 card = netdev_priv(dev); in xircom_start_xmit()
385 spin_lock_irqsave(&card->lock,flags); in xircom_start_xmit()
389 investigate_write_descriptor(dev,card,desc,bufferoffsets[desc]); in xircom_start_xmit()
392 nextdescriptor = (card->transmit_used +1) % (NUMDESCRIPTORS); in xircom_start_xmit()
393 desc = card->transmit_used; in xircom_start_xmit()
396 if (card->tx_buffer[4*desc]==0) { in xircom_start_xmit()
400 memset(&card->tx_buffer[bufferoffsets[desc]/4],0,1536); in xircom_start_xmit()
402 &(card->tx_buffer[bufferoffsets[desc] / 4]), in xircom_start_xmit()
407 card->tx_buffer[4*desc+1] = cpu_to_le32(skb->len); in xircom_start_xmit()
409 card->tx_buffer[4*desc+1] |= cpu_to_le32(1<<25); in xircom_start_xmit()
411 card->tx_buffer[4*desc+1] |= cpu_to_le32(0xF0000000); in xircom_start_xmit()
413 card->tx_skb[desc] = skb; in xircom_start_xmit()
417 card->tx_buffer[4*desc] = cpu_to_le32(0x80000000); in xircom_start_xmit()
418 trigger_transmit(card); in xircom_start_xmit()
419 if (card->tx_buffer[nextdescriptor*4] & cpu_to_le32(0x8000000)) { in xircom_start_xmit()
423 card->transmit_used = nextdescriptor; in xircom_start_xmit()
424 spin_unlock_irqrestore(&card->lock,flags); in xircom_start_xmit()
430 spin_unlock_irqrestore(&card->lock,flags); in xircom_start_xmit()
431 trigger_transmit(card); in xircom_start_xmit()
458 struct xircom_private *card; in xircom_close() local
461 card = netdev_priv(dev); in xircom_close()
465 spin_lock_irqsave(&card->lock,flags); in xircom_close()
467 disable_all_interrupts(card); in xircom_close()
470 deactivate_receiver(card); in xircom_close()
471 deactivate_transmitter(card); in xircom_close()
473 remove_descriptors(card); in xircom_close()
475 spin_unlock_irqrestore(&card->lock,flags); in xircom_close()
477 card->open = 0; in xircom_close()
478 free_irq(card->pdev->irq, dev); in xircom_close()
498 static void initialize_card(struct xircom_private *card) in initialize_card() argument
500 void __iomem *ioaddr = card->ioaddr; in initialize_card()
504 spin_lock_irqsave(&card->lock, flags); in initialize_card()
523 disable_all_interrupts(card); in initialize_card()
524 deactivate_receiver(card); in initialize_card()
525 deactivate_transmitter(card); in initialize_card()
527 spin_unlock_irqrestore(&card->lock, flags); in initialize_card()
536 static void trigger_transmit(struct xircom_private *card) in trigger_transmit() argument
538 void __iomem *ioaddr = card->ioaddr; in trigger_transmit()
550 static void trigger_receive(struct xircom_private *card) in trigger_receive() argument
552 void __iomem *ioaddr = card->ioaddr; in trigger_receive()
561 static void setup_descriptors(struct xircom_private *card) in setup_descriptors() argument
563 void __iomem *ioaddr = card->ioaddr; in setup_descriptors()
567 BUG_ON(card->rx_buffer == NULL); in setup_descriptors()
568 BUG_ON(card->tx_buffer == NULL); in setup_descriptors()
571 memset(card->rx_buffer, 0, 128); /* clear the descriptors */ in setup_descriptors()
575 card->rx_buffer[i*4 + 0] = cpu_to_le32(0x80000000); in setup_descriptors()
577 card->rx_buffer[i*4 + 1] = cpu_to_le32(1536); in setup_descriptors()
579 card->rx_buffer[i*4 + 1] |= cpu_to_le32(1 << 25); in setup_descriptors()
584 address = card->rx_dma_handle; in setup_descriptors()
585 card->rx_buffer[i*4 + 2] = cpu_to_le32(address + bufferoffsets[i]); in setup_descriptors()
587 card->rx_buffer[i*4 + 3] = 0; in setup_descriptors()
592 address = card->rx_dma_handle; in setup_descriptors()
597 memset(card->tx_buffer, 0, 128); /* clear the descriptors */ in setup_descriptors()
601 card->tx_buffer[i*4 + 0] = 0x00000000; in setup_descriptors()
603 card->tx_buffer[i*4 + 1] = cpu_to_le32(1536); in setup_descriptors()
605 card->tx_buffer[i*4 + 1] |= cpu_to_le32(1 << 25); in setup_descriptors()
609 address = card->tx_dma_handle; in setup_descriptors()
610 card->tx_buffer[i*4 + 2] = cpu_to_le32(address + bufferoffsets[i]); in setup_descriptors()
612 card->tx_buffer[i*4 + 3] = 0; in setup_descriptors()
617 address = card->tx_dma_handle; in setup_descriptors()
625 static void remove_descriptors(struct xircom_private *card) in remove_descriptors() argument
627 void __iomem *ioaddr = card->ioaddr; in remove_descriptors()
641 static int link_status_changed(struct xircom_private *card) in link_status_changed() argument
643 void __iomem *ioaddr = card->ioaddr; in link_status_changed()
663 static int transmit_active(struct xircom_private *card) in transmit_active() argument
665 void __iomem *ioaddr = card->ioaddr; in transmit_active()
677 static int receive_active(struct xircom_private *card) in receive_active() argument
679 void __iomem *ioaddr = card->ioaddr; in receive_active()
697 static void activate_receiver(struct xircom_private *card) in activate_receiver() argument
699 void __iomem *ioaddr = card->ioaddr; in activate_receiver()
707 if ((val&2) && (receive_active(card))) in activate_receiver()
716 if (!receive_active(card)) in activate_receiver()
722 netdev_err(card->dev, "Receiver failed to deactivate\n"); in activate_receiver()
733 if (receive_active(card)) in activate_receiver()
739 netdev_err(card->dev, in activate_receiver()
751 static void deactivate_receiver(struct xircom_private *card) in deactivate_receiver() argument
753 void __iomem *ioaddr = card->ioaddr; in deactivate_receiver()
763 if (!receive_active(card)) in deactivate_receiver()
769 netdev_err(card->dev, "Receiver failed to deactivate\n"); in deactivate_receiver()
784 static void activate_transmitter(struct xircom_private *card) in activate_transmitter() argument
786 void __iomem *ioaddr = card->ioaddr; in activate_transmitter()
794 if ((val&(1<<13)) && (transmit_active(card))) in activate_transmitter()
802 if (!transmit_active(card)) in activate_transmitter()
808 netdev_err(card->dev, in activate_transmitter()
820 if (transmit_active(card)) in activate_transmitter()
826 netdev_err(card->dev, in activate_transmitter()
838 static void deactivate_transmitter(struct xircom_private *card) in deactivate_transmitter() argument
840 void __iomem *ioaddr = card->ioaddr; in deactivate_transmitter()
850 if (!transmit_active(card)) in deactivate_transmitter()
856 netdev_err(card->dev, in deactivate_transmitter()
867 static void enable_transmit_interrupt(struct xircom_private *card) in enable_transmit_interrupt() argument
869 void __iomem *ioaddr = card->ioaddr; in enable_transmit_interrupt()
883 static void enable_receive_interrupt(struct xircom_private *card) in enable_receive_interrupt() argument
885 void __iomem *ioaddr = card->ioaddr; in enable_receive_interrupt()
898 static void enable_link_interrupt(struct xircom_private *card) in enable_link_interrupt() argument
900 void __iomem *ioaddr = card->ioaddr; in enable_link_interrupt()
915 static void disable_all_interrupts(struct xircom_private *card) in disable_all_interrupts() argument
917 void __iomem *ioaddr = card->ioaddr; in disable_all_interrupts()
927 static void enable_common_interrupts(struct xircom_private *card) in enable_common_interrupts() argument
929 void __iomem *ioaddr = card->ioaddr; in enable_common_interrupts()
949 static int enable_promisc(struct xircom_private *card) in enable_promisc() argument
951 void __iomem *ioaddr = card->ioaddr; in enable_promisc()
969 static int link_status(struct xircom_private *card) in link_status() argument
971 void __iomem *ioaddr = card->ioaddr; in link_status()
997 static void read_mac_address(struct xircom_private *card) in read_mac_address() argument
999 void __iomem *ioaddr = card->ioaddr; in read_mac_address()
1004 spin_lock_irqsave(&card->lock, flags); in read_mac_address()
1023 card->dev->dev_addr[j] = xr32(CSR9) & 0xff; in read_mac_address()
1030 spin_unlock_irqrestore(&card->lock, flags); in read_mac_address()
1031 pr_debug(" %pM\n", card->dev->dev_addr); in read_mac_address()
1040 static void transceiver_voodoo(struct xircom_private *card) in transceiver_voodoo() argument
1042 void __iomem *ioaddr = card->ioaddr; in transceiver_voodoo()
1046 pci_write_config_dword(card->pdev, PCI_POWERMGMT, 0x0000); in transceiver_voodoo()
1048 setup_descriptors(card); in transceiver_voodoo()
1050 spin_lock_irqsave(&card->lock, flags); in transceiver_voodoo()
1059 spin_unlock_irqrestore(&card->lock, flags); in transceiver_voodoo()
1061 netif_start_queue(card->dev); in transceiver_voodoo()
1065 static void xircom_up(struct xircom_private *card) in xircom_up() argument
1071 pci_write_config_dword(card->pdev, PCI_POWERMGMT, 0x0000); in xircom_up()
1073 setup_descriptors(card); in xircom_up()
1075 spin_lock_irqsave(&card->lock, flags); in xircom_up()
1078 enable_link_interrupt(card); in xircom_up()
1079 enable_transmit_interrupt(card); in xircom_up()
1080 enable_receive_interrupt(card); in xircom_up()
1081 enable_common_interrupts(card); in xircom_up()
1082 enable_promisc(card); in xircom_up()
1086 investigate_read_descriptor(card->dev,card,i,bufferoffsets[i]); in xircom_up()
1089 spin_unlock_irqrestore(&card->lock, flags); in xircom_up()
1090 trigger_receive(card); in xircom_up()
1091 trigger_transmit(card); in xircom_up()
1092 netif_start_queue(card->dev); in xircom_up()
1097 investigate_read_descriptor(struct net_device *dev, struct xircom_private *card, in investigate_read_descriptor() argument
1102 status = le32_to_cpu(card->rx_buffer[4*descnr]); in investigate_read_descriptor()
1124 &card->rx_buffer[bufferoffset / 4], in investigate_read_descriptor()
1134 card->rx_buffer[4*descnr] = cpu_to_le32(0x80000000); in investigate_read_descriptor()
1135 trigger_receive(card); in investigate_read_descriptor()
1143 struct xircom_private *card, in investigate_write_descriptor() argument
1148 status = le32_to_cpu(card->tx_buffer[4*descnr]); in investigate_write_descriptor()
1152 card->tx_buffer[4*descnr] = 0; in investigate_write_descriptor()
1157 if (card->tx_skb[descnr]!=NULL) { in investigate_write_descriptor()
1158 dev->stats.tx_bytes += card->tx_skb[descnr]->len; in investigate_write_descriptor()
1159 dev_kfree_skb_irq(card->tx_skb[descnr]); in investigate_write_descriptor()
1161 card->tx_skb[descnr] = NULL; in investigate_write_descriptor()
1165 card->tx_buffer[4*descnr] = 0; /* descriptor is free again */ in investigate_write_descriptor()