Lines Matching refs:idev

181 	vlsi_irda_dev_t *idev = netdev_priv(ndev);  in vlsi_proc_ndev()  local
197 pci_read_config_byte(idev->pdev, VLSI_PCI_IRMISC, &byte); in vlsi_proc_ndev()
208 pci_read_config_byte(idev->pdev, VLSI_PCI_CLKCTL, &byte); in vlsi_proc_ndev()
215 pci_read_config_byte(idev->pdev, VLSI_PCI_MSTRPAGE, &byte); in vlsi_proc_ndev()
278 seq_printf(seq, "IrPHY setup: %d baud - %s encoding\n", idev->baud, in vlsi_proc_ndev()
279 (idev->mode==IFF_SIR)?"SIR":((idev->mode==IFF_MIR)?"MIR":"FIR")); in vlsi_proc_ndev()
280 sec = div_s64_rem(ktime_us_delta(ktime_get(), idev->last_rx), in vlsi_proc_ndev()
336 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_seq_show() local
348 spin_lock_irqsave(&idev->lock, flags); in vlsi_seq_show()
349 if (idev->pdev != NULL) { in vlsi_seq_show()
350 vlsi_proc_pdev(seq, idev->pdev); in vlsi_seq_show()
352 if (idev->pdev->current_state == 0) in vlsi_seq_show()
356 idev->resume_ok); in vlsi_seq_show()
357 if (netif_running(ndev) && idev->rx_ring && idev->tx_ring) { in vlsi_seq_show()
359 vlsi_proc_ring(seq, idev->rx_ring); in vlsi_seq_show()
361 vlsi_proc_ring(seq, idev->tx_ring); in vlsi_seq_show()
365 spin_unlock_irqrestore(&idev->lock, flags); in vlsi_seq_show()
468 static int vlsi_create_hwif(vlsi_irda_dev_t *idev) in vlsi_create_hwif() argument
473 idev->virtaddr = NULL; in vlsi_create_hwif()
474 idev->busaddr = 0; in vlsi_create_hwif()
476 ringarea = pci_zalloc_consistent(idev->pdev, HW_RING_AREA_SIZE, in vlsi_create_hwif()
477 &idev->busaddr); in vlsi_create_hwif()
482 idev->rx_ring = vlsi_alloc_ring(idev->pdev, hwmap, ringsize[1], in vlsi_create_hwif()
484 if (idev->rx_ring == NULL) in vlsi_create_hwif()
488 idev->tx_ring = vlsi_alloc_ring(idev->pdev, hwmap, ringsize[0], in vlsi_create_hwif()
490 if (idev->tx_ring == NULL) in vlsi_create_hwif()
493 idev->virtaddr = ringarea; in vlsi_create_hwif()
497 vlsi_free_ring(idev->rx_ring); in vlsi_create_hwif()
499 idev->rx_ring = idev->tx_ring = NULL; in vlsi_create_hwif()
500 pci_free_consistent(idev->pdev, HW_RING_AREA_SIZE, ringarea, idev->busaddr); in vlsi_create_hwif()
501 idev->busaddr = 0; in vlsi_create_hwif()
506 static int vlsi_destroy_hwif(vlsi_irda_dev_t *idev) in vlsi_destroy_hwif() argument
508 vlsi_free_ring(idev->rx_ring); in vlsi_destroy_hwif()
509 vlsi_free_ring(idev->tx_ring); in vlsi_destroy_hwif()
510 idev->rx_ring = idev->tx_ring = NULL; in vlsi_destroy_hwif()
512 if (idev->busaddr) in vlsi_destroy_hwif()
513 pci_free_consistent(idev->pdev,HW_RING_AREA_SIZE,idev->virtaddr,idev->busaddr); in vlsi_destroy_hwif()
515 idev->virtaddr = NULL; in vlsi_destroy_hwif()
516 idev->busaddr = 0; in vlsi_destroy_hwif()
530 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_process_rx() local
548 crclen = (idev->mode==IFF_FIR) ? sizeof(u32) : sizeof(u16); in vlsi_process_rx()
556 if (idev->mode == IFF_SIR) { /* hw checks CRC in MIR, FIR mode */ in vlsi_process_rx()
624 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_rx_interrupt() local
625 struct vlsi_ring *r = idev->rx_ring; in vlsi_rx_interrupt()
656 idev->last_rx = ktime_get(); /* remember "now" for later mtt delay */ in vlsi_rx_interrupt()
671 static void vlsi_unarm_rx(vlsi_irda_dev_t *idev) in vlsi_unarm_rx() argument
673 struct net_device *ndev = pci_get_drvdata(idev->pdev); in vlsi_unarm_rx()
674 struct vlsi_ring *r = idev->rx_ring; in vlsi_unarm_rx()
749 static int vlsi_set_baud(vlsi_irda_dev_t *idev, unsigned iobase) in vlsi_set_baud() argument
758 baudrate = idev->new_baud; in vlsi_set_baud()
759 pr_debug("%s: %d -> %d\n", __func__, idev->baud, idev->new_baud); in vlsi_set_baud()
830 idev->mode = mode; in vlsi_set_baud()
831 idev->baud = baudrate; in vlsi_set_baud()
832 idev->new_baud = 0; in vlsi_set_baud()
846 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_hard_start_xmit() local
847 struct vlsi_ring *r = idev->tx_ring; in vlsi_hard_start_xmit()
858 spin_lock_irqsave(&idev->lock, flags); in vlsi_hard_start_xmit()
859 if (speed != -1 && speed != idev->baud) { in vlsi_hard_start_xmit()
861 idev->new_baud = speed; in vlsi_hard_start_xmit()
891 if (ring_first(idev->tx_ring) == NULL) { in vlsi_hard_start_xmit()
893 vlsi_set_baud(idev, iobase); in vlsi_hard_start_xmit()
902 spin_unlock_irqrestore(&idev->lock, flags); in vlsi_hard_start_xmit()
931 spin_unlock_irqrestore(&idev->lock, flags); in vlsi_hard_start_xmit()
934 diff = ktime_us_delta(ktime_get(), idev->last_rx); in vlsi_hard_start_xmit()
944 if (idev->mode == IFF_SIR) { in vlsi_hard_start_xmit()
996 spin_lock_irqsave(&idev->lock,flags); in vlsi_hard_start_xmit()
1020 spin_unlock_irqrestore(&idev->lock, flags); in vlsi_hard_start_xmit()
1025 spin_unlock_irqrestore(&idev->lock, flags); in vlsi_hard_start_xmit()
1041 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_tx_interrupt() local
1042 struct vlsi_ring *r = idev->tx_ring; in vlsi_tx_interrupt()
1071 if (idev->new_baud && rd == NULL) /* tx ring empty and speed change pending */ in vlsi_tx_interrupt()
1072 vlsi_set_baud(idev, iobase); in vlsi_tx_interrupt()
1091 if (netif_queue_stopped(ndev) && !idev->new_baud) { in vlsi_tx_interrupt()
1099 static void vlsi_unarm_tx(vlsi_irda_dev_t *idev) in vlsi_unarm_tx() argument
1101 struct net_device *ndev = pci_get_drvdata(idev->pdev); in vlsi_unarm_tx()
1102 struct vlsi_ring *r = idev->tx_ring; in vlsi_unarm_tx()
1241 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_init_chip() local
1265 outw(BUS_TO_RINGBASE(idev->busaddr), iobase+VLSI_PIO_RINGBASE); in vlsi_init_chip()
1267 outw(TX_RX_TO_RINGSIZE(idev->tx_ring->size, idev->rx_ring->size), in vlsi_init_chip()
1271 atomic_set(&idev->rx_ring->head, RINGPTR_GET_RX(ptr)); in vlsi_init_chip()
1272 atomic_set(&idev->rx_ring->tail, RINGPTR_GET_RX(ptr)); in vlsi_init_chip()
1273 atomic_set(&idev->tx_ring->head, RINGPTR_GET_TX(ptr)); in vlsi_init_chip()
1274 atomic_set(&idev->tx_ring->tail, RINGPTR_GET_TX(ptr)); in vlsi_init_chip()
1276 vlsi_set_baud(idev, iobase); /* idev->new_baud used as provided by caller */ in vlsi_init_chip()
1291 static int vlsi_start_hw(vlsi_irda_dev_t *idev) in vlsi_start_hw() argument
1293 struct pci_dev *pdev = idev->pdev; in vlsi_start_hw()
1314 vlsi_fill_rx(idev->rx_ring); in vlsi_start_hw()
1316 idev->last_rx = ktime_get(); /* first mtt may start from now on */ in vlsi_start_hw()
1323 static int vlsi_stop_hw(vlsi_irda_dev_t *idev) in vlsi_stop_hw() argument
1325 struct pci_dev *pdev = idev->pdev; in vlsi_stop_hw()
1330 spin_lock_irqsave(&idev->lock,flags); in vlsi_stop_hw()
1338 spin_unlock_irqrestore(&idev->lock,flags); in vlsi_stop_hw()
1340 vlsi_unarm_tx(idev); in vlsi_stop_hw()
1341 vlsi_unarm_rx(idev); in vlsi_stop_hw()
1355 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_tx_timeout() local
1359 vlsi_ring_debug(idev->tx_ring); in vlsi_tx_timeout()
1364 vlsi_stop_hw(idev); in vlsi_tx_timeout()
1368 if (!idev->new_baud) in vlsi_tx_timeout()
1369 idev->new_baud = idev->baud; /* keep current baudrate */ in vlsi_tx_timeout()
1371 if (vlsi_start_hw(idev)) in vlsi_tx_timeout()
1373 __func__, pci_name(idev->pdev), ndev->name); in vlsi_tx_timeout()
1380 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_ioctl() local
1392 spin_lock_irqsave(&idev->lock, flags); in vlsi_ioctl()
1393 idev->new_baud = irq->ifr_baudrate; in vlsi_ioctl()
1398 vlsi_set_baud(idev, ndev->base_addr); in vlsi_ioctl()
1399 spin_unlock_irqrestore(&idev->lock, flags); in vlsi_ioctl()
1430 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_interrupt() local
1438 spin_lock_irqsave(&idev->lock,flags); in vlsi_interrupt()
1459 spin_unlock_irqrestore(&idev->lock,flags); in vlsi_interrupt()
1471 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_open() local
1475 if (pci_request_regions(idev->pdev, drivername)) { in vlsi_open()
1479 ndev->base_addr = pci_resource_start(idev->pdev,0); in vlsi_open()
1480 ndev->irq = idev->pdev->irq; in vlsi_open()
1495 if ((err = vlsi_create_hwif(idev)) != 0) in vlsi_open()
1499 idev->irlap = irlap_open(ndev,&idev->qos,hwname); in vlsi_open()
1500 if (!idev->irlap) in vlsi_open()
1503 idev->last_rx = ktime_get(); /* first mtt may start from now on */ in vlsi_open()
1505 idev->new_baud = 9600; /* start with IrPHY using 9600(SIR) mode */ in vlsi_open()
1507 if ((err = vlsi_start_hw(idev)) != 0) in vlsi_open()
1518 irlap_close(idev->irlap); in vlsi_open()
1520 vlsi_destroy_hwif(idev); in vlsi_open()
1524 pci_release_regions(idev->pdev); in vlsi_open()
1531 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_close() local
1535 if (idev->irlap) in vlsi_close()
1536 irlap_close(idev->irlap); in vlsi_close()
1537 idev->irlap = NULL; in vlsi_close()
1539 vlsi_stop_hw(idev); in vlsi_close()
1541 vlsi_destroy_hwif(idev); in vlsi_close()
1545 pci_release_regions(idev->pdev); in vlsi_close()
1562 vlsi_irda_dev_t *idev = netdev_priv(ndev); in vlsi_irda_init() local
1563 struct pci_dev *pdev = idev->pdev; in vlsi_irda_init()
1579 irda_init_max_qos_capabilies(&idev->qos); in vlsi_irda_init()
1583 idev->qos.baud_rate.bits = IR_2400 | IR_9600 in vlsi_irda_init()
1587 idev->qos.min_turn_time.bits = qos_mtt_bits; in vlsi_irda_init()
1589 irda_qos_bits_to_value(&idev->qos); in vlsi_irda_init()
1610 vlsi_irda_dev_t *idev; in vlsi_irda_probe() local
1626 ndev = alloc_irdadev(sizeof(*idev)); in vlsi_irda_probe()
1633 idev = netdev_priv(ndev); in vlsi_irda_probe()
1635 spin_lock_init(&idev->lock); in vlsi_irda_probe()
1636 mutex_init(&idev->mtx); in vlsi_irda_probe()
1637 mutex_lock(&idev->mtx); in vlsi_irda_probe()
1638 idev->pdev = pdev; in vlsi_irda_probe()
1659 idev->proc_entry = ent; in vlsi_irda_probe()
1665 mutex_unlock(&idev->mtx); in vlsi_irda_probe()
1670 mutex_unlock(&idev->mtx); in vlsi_irda_probe()
1681 vlsi_irda_dev_t *idev; in vlsi_irda_remove() local
1690 idev = netdev_priv(ndev); in vlsi_irda_remove()
1691 mutex_lock(&idev->mtx); in vlsi_irda_remove()
1692 if (idev->proc_entry) { in vlsi_irda_remove()
1694 idev->proc_entry = NULL; in vlsi_irda_remove()
1696 mutex_unlock(&idev->mtx); in vlsi_irda_remove()
1716 vlsi_irda_dev_t *idev; in vlsi_irda_suspend() local
1723 idev = netdev_priv(ndev); in vlsi_irda_suspend()
1724 mutex_lock(&idev->mtx); in vlsi_irda_suspend()
1734 mutex_unlock(&idev->mtx); in vlsi_irda_suspend()
1740 vlsi_stop_hw(idev); in vlsi_irda_suspend()
1742 if (!idev->new_baud) in vlsi_irda_suspend()
1744 idev->new_baud = idev->baud; in vlsi_irda_suspend()
1749 idev->resume_ok = 1; in vlsi_irda_suspend()
1750 mutex_unlock(&idev->mtx); in vlsi_irda_suspend()
1757 vlsi_irda_dev_t *idev; in vlsi_irda_resume() local
1764 idev = netdev_priv(ndev); in vlsi_irda_resume()
1765 mutex_lock(&idev->mtx); in vlsi_irda_resume()
1767 mutex_unlock(&idev->mtx); in vlsi_irda_resume()
1776 if (!idev->resume_ok) { in vlsi_irda_resume()
1789 mutex_unlock(&idev->mtx); in vlsi_irda_resume()
1795 vlsi_start_hw(idev); in vlsi_irda_resume()
1798 idev->resume_ok = 0; in vlsi_irda_resume()
1799 mutex_unlock(&idev->mtx); in vlsi_irda_resume()