Lines Matching refs:idev
181 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_proc_ndev() local
198 pci_read_config_byte(idev->pdev, VLSI_PCI_IRMISC, &byte); in vlsi_proc_ndev()
209 pci_read_config_byte(idev->pdev, VLSI_PCI_CLKCTL, &byte); in vlsi_proc_ndev()
216 pci_read_config_byte(idev->pdev, VLSI_PCI_MSTRPAGE, &byte); in vlsi_proc_ndev()
279 seq_printf(seq, "IrPHY setup: %d baud - %s encoding\n", idev->baud, in vlsi_proc_ndev()
280 (idev->mode==IFF_SIR)?"SIR":((idev->mode==IFF_MIR)?"MIR":"FIR")); in vlsi_proc_ndev()
282 if (now.tv_usec >= idev->last_rx.tv_usec) { in vlsi_proc_ndev()
283 delta2 = now.tv_usec - idev->last_rx.tv_usec; in vlsi_proc_ndev()
287 delta2 = 1000000 + now.tv_usec - idev->last_rx.tv_usec; in vlsi_proc_ndev()
291 now.tv_sec - idev->last_rx.tv_sec - delta1, delta2); in vlsi_proc_ndev()
349 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_seq_show() local
361 spin_lock_irqsave(&idev->lock, flags); in vlsi_seq_show()
362 if (idev->pdev != NULL) { in vlsi_seq_show()
363 vlsi_proc_pdev(seq, idev->pdev); in vlsi_seq_show()
365 if (idev->pdev->current_state == 0) in vlsi_seq_show()
369 idev->resume_ok); in vlsi_seq_show()
370 if (netif_running(ndev) && idev->rx_ring && idev->tx_ring) { in vlsi_seq_show()
372 vlsi_proc_ring(seq, idev->rx_ring); in vlsi_seq_show()
374 vlsi_proc_ring(seq, idev->tx_ring); in vlsi_seq_show()
378 spin_unlock_irqrestore(&idev->lock, flags); in vlsi_seq_show()
481 static int vlsi_create_hwif(vlsi_irda_dev_t *idev) in vlsi_create_hwif() argument
486 idev->virtaddr = NULL; in vlsi_create_hwif()
487 idev->busaddr = 0; in vlsi_create_hwif()
489 ringarea = pci_alloc_consistent(idev->pdev, HW_RING_AREA_SIZE, &idev->busaddr); in vlsi_create_hwif()
498 idev->rx_ring = vlsi_alloc_ring(idev->pdev, hwmap, ringsize[1], in vlsi_create_hwif()
500 if (idev->rx_ring == NULL) in vlsi_create_hwif()
504 idev->tx_ring = vlsi_alloc_ring(idev->pdev, hwmap, ringsize[0], in vlsi_create_hwif()
506 if (idev->tx_ring == NULL) in vlsi_create_hwif()
509 idev->virtaddr = ringarea; in vlsi_create_hwif()
513 vlsi_free_ring(idev->rx_ring); in vlsi_create_hwif()
515 idev->rx_ring = idev->tx_ring = NULL; in vlsi_create_hwif()
516 pci_free_consistent(idev->pdev, HW_RING_AREA_SIZE, ringarea, idev->busaddr); in vlsi_create_hwif()
517 idev->busaddr = 0; in vlsi_create_hwif()
522 static int vlsi_destroy_hwif(vlsi_irda_dev_t *idev) in vlsi_destroy_hwif() argument
524 vlsi_free_ring(idev->rx_ring); in vlsi_destroy_hwif()
525 vlsi_free_ring(idev->tx_ring); in vlsi_destroy_hwif()
526 idev->rx_ring = idev->tx_ring = NULL; in vlsi_destroy_hwif()
528 if (idev->busaddr) in vlsi_destroy_hwif()
529 pci_free_consistent(idev->pdev,HW_RING_AREA_SIZE,idev->virtaddr,idev->busaddr); in vlsi_destroy_hwif()
531 idev->virtaddr = NULL; in vlsi_destroy_hwif()
532 idev->busaddr = 0; in vlsi_destroy_hwif()
546 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_process_rx() local
564 crclen = (idev->mode==IFF_FIR) ? sizeof(u32) : sizeof(u16); in vlsi_process_rx()
572 if (idev->mode == IFF_SIR) { /* hw checks CRC in MIR, FIR mode */ in vlsi_process_rx()
640 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_rx_interrupt() local
641 struct vlsi_ring *r = idev->rx_ring; in vlsi_rx_interrupt()
672 do_gettimeofday(&idev->last_rx); /* remember "now" for later mtt delay */ in vlsi_rx_interrupt()
687 static void vlsi_unarm_rx(vlsi_irda_dev_t *idev) in vlsi_unarm_rx() argument
689 struct net_device *ndev = pci_get_drvdata(idev->pdev); in vlsi_unarm_rx()
690 struct vlsi_ring *r = idev->rx_ring; in vlsi_unarm_rx()
765 static int vlsi_set_baud(vlsi_irda_dev_t *idev, unsigned iobase) in vlsi_set_baud() argument
774 baudrate = idev->new_baud; in vlsi_set_baud()
775 IRDA_DEBUG(2, "%s: %d -> %d\n", __func__, idev->baud, idev->new_baud); in vlsi_set_baud()
844 idev->mode = mode; in vlsi_set_baud()
845 idev->baud = baudrate; in vlsi_set_baud()
846 idev->new_baud = 0; in vlsi_set_baud()
859 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_hard_start_xmit() local
860 struct vlsi_ring *r = idev->tx_ring; in vlsi_hard_start_xmit()
872 spin_lock_irqsave(&idev->lock, flags); in vlsi_hard_start_xmit()
873 if (speed != -1 && speed != idev->baud) { in vlsi_hard_start_xmit()
875 idev->new_baud = speed; in vlsi_hard_start_xmit()
905 if (ring_first(idev->tx_ring) == NULL) { in vlsi_hard_start_xmit()
907 vlsi_set_baud(idev, iobase); in vlsi_hard_start_xmit()
916 spin_unlock_irqrestore(&idev->lock, flags); in vlsi_hard_start_xmit()
945 spin_unlock_irqrestore(&idev->lock, flags); in vlsi_hard_start_xmit()
949 ready.tv_usec = idev->last_rx.tv_usec + mtt; in vlsi_hard_start_xmit()
950 ready.tv_sec = idev->last_rx.tv_sec; in vlsi_hard_start_xmit()
969 if (idev->mode == IFF_SIR) { in vlsi_hard_start_xmit()
1021 spin_lock_irqsave(&idev->lock,flags); in vlsi_hard_start_xmit()
1045 spin_unlock_irqrestore(&idev->lock, flags); in vlsi_hard_start_xmit()
1050 spin_unlock_irqrestore(&idev->lock, flags); in vlsi_hard_start_xmit()
1066 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_tx_interrupt() local
1067 struct vlsi_ring *r = idev->tx_ring; in vlsi_tx_interrupt()
1096 if (idev->new_baud && rd == NULL) /* tx ring empty and speed change pending */ in vlsi_tx_interrupt()
1097 vlsi_set_baud(idev, iobase); in vlsi_tx_interrupt()
1116 if (netif_queue_stopped(ndev) && !idev->new_baud) { in vlsi_tx_interrupt()
1124 static void vlsi_unarm_tx(vlsi_irda_dev_t *idev) in vlsi_unarm_tx() argument
1126 struct net_device *ndev = pci_get_drvdata(idev->pdev); in vlsi_unarm_tx()
1127 struct vlsi_ring *r = idev->tx_ring; in vlsi_unarm_tx()
1266 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_init_chip() local
1290 outw(BUS_TO_RINGBASE(idev->busaddr), iobase+VLSI_PIO_RINGBASE); in vlsi_init_chip()
1292 outw(TX_RX_TO_RINGSIZE(idev->tx_ring->size, idev->rx_ring->size), in vlsi_init_chip()
1296 atomic_set(&idev->rx_ring->head, RINGPTR_GET_RX(ptr)); in vlsi_init_chip()
1297 atomic_set(&idev->rx_ring->tail, RINGPTR_GET_RX(ptr)); in vlsi_init_chip()
1298 atomic_set(&idev->tx_ring->head, RINGPTR_GET_TX(ptr)); in vlsi_init_chip()
1299 atomic_set(&idev->tx_ring->tail, RINGPTR_GET_TX(ptr)); in vlsi_init_chip()
1301 vlsi_set_baud(idev, iobase); /* idev->new_baud used as provided by caller */ in vlsi_init_chip()
1316 static int vlsi_start_hw(vlsi_irda_dev_t *idev) in vlsi_start_hw() argument
1318 struct pci_dev *pdev = idev->pdev; in vlsi_start_hw()
1339 vlsi_fill_rx(idev->rx_ring); in vlsi_start_hw()
1341 do_gettimeofday(&idev->last_rx); /* first mtt may start from now on */ in vlsi_start_hw()
1348 static int vlsi_stop_hw(vlsi_irda_dev_t *idev) in vlsi_stop_hw() argument
1350 struct pci_dev *pdev = idev->pdev; in vlsi_stop_hw()
1355 spin_lock_irqsave(&idev->lock,flags); in vlsi_stop_hw()
1363 spin_unlock_irqrestore(&idev->lock,flags); in vlsi_stop_hw()
1365 vlsi_unarm_tx(idev); in vlsi_stop_hw()
1366 vlsi_unarm_rx(idev); in vlsi_stop_hw()
1380 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_tx_timeout() local
1384 vlsi_ring_debug(idev->tx_ring); in vlsi_tx_timeout()
1389 vlsi_stop_hw(idev); in vlsi_tx_timeout()
1393 if (!idev->new_baud) in vlsi_tx_timeout()
1394 idev->new_baud = idev->baud; /* keep current baudrate */ in vlsi_tx_timeout()
1396 if (vlsi_start_hw(idev)) in vlsi_tx_timeout()
1398 __func__, pci_name(idev->pdev), ndev->name); in vlsi_tx_timeout()
1405 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_ioctl() local
1417 spin_lock_irqsave(&idev->lock, flags); in vlsi_ioctl()
1418 idev->new_baud = irq->ifr_baudrate; in vlsi_ioctl()
1423 vlsi_set_baud(idev, ndev->base_addr); in vlsi_ioctl()
1424 spin_unlock_irqrestore(&idev->lock, flags); in vlsi_ioctl()
1455 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_interrupt() local
1463 spin_lock_irqsave(&idev->lock,flags); in vlsi_interrupt()
1484 spin_unlock_irqrestore(&idev->lock,flags); in vlsi_interrupt()
1496 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_open() local
1500 if (pci_request_regions(idev->pdev, drivername)) { in vlsi_open()
1504 ndev->base_addr = pci_resource_start(idev->pdev,0); in vlsi_open()
1505 ndev->irq = idev->pdev->irq; in vlsi_open()
1520 if ((err = vlsi_create_hwif(idev)) != 0) in vlsi_open()
1524 idev->irlap = irlap_open(ndev,&idev->qos,hwname); in vlsi_open()
1525 if (!idev->irlap) in vlsi_open()
1528 do_gettimeofday(&idev->last_rx); /* first mtt may start from now on */ in vlsi_open()
1530 idev->new_baud = 9600; /* start with IrPHY using 9600(SIR) mode */ in vlsi_open()
1532 if ((err = vlsi_start_hw(idev)) != 0) in vlsi_open()
1542 irlap_close(idev->irlap); in vlsi_open()
1544 vlsi_destroy_hwif(idev); in vlsi_open()
1548 pci_release_regions(idev->pdev); in vlsi_open()
1555 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_close() local
1559 if (idev->irlap) in vlsi_close()
1560 irlap_close(idev->irlap); in vlsi_close()
1561 idev->irlap = NULL; in vlsi_close()
1563 vlsi_stop_hw(idev); in vlsi_close()
1565 vlsi_destroy_hwif(idev); in vlsi_close()
1569 pci_release_regions(idev->pdev); in vlsi_close()
1578 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_irda_init() local
1579 struct pci_dev *pdev = idev->pdev; in vlsi_irda_init()
1594 irda_init_max_qos_capabilies(&idev->qos); in vlsi_irda_init()
1598 idev->qos.baud_rate.bits = IR_2400 | IR_9600 in vlsi_irda_init()
1602 idev->qos.min_turn_time.bits = qos_mtt_bits; in vlsi_irda_init()
1604 irda_qos_bits_to_value(&idev->qos); in vlsi_irda_init()
1629 vlsi_irda_dev_t *idev; in vlsi_irda_probe() local
1645 ndev = alloc_irdadev(sizeof(*idev)); in vlsi_irda_probe()
1652 idev = netdev_priv(ndev); in vlsi_irda_probe()
1654 spin_lock_init(&idev->lock); in vlsi_irda_probe()
1655 mutex_init(&idev->mtx); in vlsi_irda_probe()
1656 mutex_lock(&idev->mtx); in vlsi_irda_probe()
1657 idev->pdev = pdev; in vlsi_irda_probe()
1678 idev->proc_entry = ent; in vlsi_irda_probe()
1683 mutex_unlock(&idev->mtx); in vlsi_irda_probe()
1688 mutex_unlock(&idev->mtx); in vlsi_irda_probe()
1700 vlsi_irda_dev_t *idev; in vlsi_irda_remove() local
1709 idev = netdev_priv(ndev); in vlsi_irda_remove()
1710 mutex_lock(&idev->mtx); in vlsi_irda_remove()
1711 if (idev->proc_entry) { in vlsi_irda_remove()
1713 idev->proc_entry = NULL; in vlsi_irda_remove()
1715 mutex_unlock(&idev->mtx); in vlsi_irda_remove()
1737 vlsi_irda_dev_t *idev; in vlsi_irda_suspend() local
1744 idev = netdev_priv(ndev); in vlsi_irda_suspend()
1745 mutex_lock(&idev->mtx); in vlsi_irda_suspend()
1753 mutex_unlock(&idev->mtx); in vlsi_irda_suspend()
1759 vlsi_stop_hw(idev); in vlsi_irda_suspend()
1761 if (!idev->new_baud) in vlsi_irda_suspend()
1763 idev->new_baud = idev->baud; in vlsi_irda_suspend()
1768 idev->resume_ok = 1; in vlsi_irda_suspend()
1769 mutex_unlock(&idev->mtx); in vlsi_irda_suspend()
1776 vlsi_irda_dev_t *idev; in vlsi_irda_resume() local
1783 idev = netdev_priv(ndev); in vlsi_irda_resume()
1784 mutex_lock(&idev->mtx); in vlsi_irda_resume()
1786 mutex_unlock(&idev->mtx); in vlsi_irda_resume()
1795 if (!idev->resume_ok) { in vlsi_irda_resume()
1808 mutex_unlock(&idev->mtx); in vlsi_irda_resume()
1814 vlsi_start_hw(idev); in vlsi_irda_resume()
1817 idev->resume_ok = 0; in vlsi_irda_resume()
1818 mutex_unlock(&idev->mtx); in vlsi_irda_resume()