Lines Matching refs:self

104 static int  ali_ircc_close(struct ali_ircc_cb *self);
107 static int ali_ircc_is_receiving(struct ali_ircc_cb *self);
111 static void ali_ircc_change_speed(struct ali_ircc_cb *self, __u32 baud);
116 static irqreturn_t ali_ircc_sir_interrupt(struct ali_ircc_cb *self);
117 static void ali_ircc_sir_receive(struct ali_ircc_cb *self);
118 static void ali_ircc_sir_write_wakeup(struct ali_ircc_cb *self);
126 static irqreturn_t ali_ircc_fir_interrupt(struct ali_ircc_cb *self);
127 static int ali_ircc_dma_receive(struct ali_ircc_cb *self);
128 static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self);
129 static int ali_ircc_dma_xmit_complete(struct ali_ircc_cb *self);
130 static void ali_ircc_dma_xmit(struct ali_ircc_cb *self);
139 static void SetCOMInterrupts(struct ali_ircc_cb *self , unsigned char enable);
282 struct ali_ircc_cb *self; in ali_ircc_open() local
296 dev = alloc_irdadev(sizeof(*self)); in ali_ircc_open()
303 self = netdev_priv(dev); in ali_ircc_open()
304 self->netdev = dev; in ali_ircc_open()
305 spin_lock_init(&self->lock); in ali_ircc_open()
308 dev_self[i] = self; in ali_ircc_open()
309 self->index = i; in ali_ircc_open()
312 self->io.cfg_base = info->cfg_base; /* In ali_ircc_probe_53 assign */ in ali_ircc_open()
313 self->io.fir_base = info->fir_base; /* info->sir_base = info->fir_base */ in ali_ircc_open()
314 self->io.sir_base = info->sir_base; /* ALi SIR and FIR use the same address */ in ali_ircc_open()
315 self->io.irq = info->irq; in ali_ircc_open()
316 self->io.fir_ext = CHIP_IO_EXTENT; in ali_ircc_open()
317 self->io.dma = info->dma; in ali_ircc_open()
318 self->io.fifo_size = 16; /* SIR: 16, FIR: 32 Benjamin 2000/11/1 */ in ali_ircc_open()
321 if (!request_region(self->io.fir_base, self->io.fir_ext, in ali_ircc_open()
324 __func__, self->io.fir_base); in ali_ircc_open()
330 irda_init_max_qos_capabilies(&self->qos); in ali_ircc_open()
333 self->qos.baud_rate.bits = IR_9600|IR_19200|IR_38400|IR_57600| in ali_ircc_open()
336 self->qos.min_turn_time.bits = qos_mtt_bits; in ali_ircc_open()
338 irda_qos_bits_to_value(&self->qos); in ali_ircc_open()
341 self->rx_buff.truesize = 14384; in ali_ircc_open()
342 self->tx_buff.truesize = 14384; in ali_ircc_open()
345 self->rx_buff.head = in ali_ircc_open()
346 dma_zalloc_coherent(NULL, self->rx_buff.truesize, in ali_ircc_open()
347 &self->rx_buff_dma, GFP_KERNEL); in ali_ircc_open()
348 if (self->rx_buff.head == NULL) { in ali_ircc_open()
353 self->tx_buff.head = in ali_ircc_open()
354 dma_zalloc_coherent(NULL, self->tx_buff.truesize, in ali_ircc_open()
355 &self->tx_buff_dma, GFP_KERNEL); in ali_ircc_open()
356 if (self->tx_buff.head == NULL) { in ali_ircc_open()
361 self->rx_buff.in_frame = FALSE; in ali_ircc_open()
362 self->rx_buff.state = OUTSIDE_FRAME; in ali_ircc_open()
363 self->tx_buff.data = self->tx_buff.head; in ali_ircc_open()
364 self->rx_buff.data = self->rx_buff.head; in ali_ircc_open()
367 self->tx_fifo.len = self->tx_fifo.ptr = self->tx_fifo.free = 0; in ali_ircc_open()
368 self->tx_fifo.tail = self->tx_buff.head; in ali_ircc_open()
387 self->io.dongle_id = dongle_id; in ali_ircc_open()
393 dma_free_coherent(NULL, self->tx_buff.truesize, in ali_ircc_open()
394 self->tx_buff.head, self->tx_buff_dma); in ali_ircc_open()
396 dma_free_coherent(NULL, self->rx_buff.truesize, in ali_ircc_open()
397 self->rx_buff.head, self->rx_buff_dma); in ali_ircc_open()
399 release_region(self->io.fir_base, self->io.fir_ext); in ali_ircc_open()
413 static int __exit ali_ircc_close(struct ali_ircc_cb *self) in ali_ircc_close() argument
417 IRDA_ASSERT(self != NULL, return -1;); in ali_ircc_close()
419 iobase = self->io.fir_base; in ali_ircc_close()
422 unregister_netdev(self->netdev); in ali_ircc_close()
425 pr_debug("%s(), Releasing Region %03x\n", __func__, self->io.fir_base); in ali_ircc_close()
426 release_region(self->io.fir_base, self->io.fir_ext); in ali_ircc_close()
428 if (self->tx_buff.head) in ali_ircc_close()
429 dma_free_coherent(NULL, self->tx_buff.truesize, in ali_ircc_close()
430 self->tx_buff.head, self->tx_buff_dma); in ali_ircc_close()
432 if (self->rx_buff.head) in ali_ircc_close()
433 dma_free_coherent(NULL, self->rx_buff.truesize, in ali_ircc_close()
434 self->rx_buff.head, self->rx_buff_dma); in ali_ircc_close()
436 dev_self[self->index] = NULL; in ali_ircc_close()
437 free_netdev(self->netdev); in ali_ircc_close()
658 struct ali_ircc_cb *self; in ali_ircc_interrupt() local
662 self = netdev_priv(dev); in ali_ircc_interrupt()
664 spin_lock(&self->lock); in ali_ircc_interrupt()
667 if (self->io.speed > 115200) in ali_ircc_interrupt()
668 ret = ali_ircc_fir_interrupt(self); in ali_ircc_interrupt()
670 ret = ali_ircc_sir_interrupt(self); in ali_ircc_interrupt()
672 spin_unlock(&self->lock); in ali_ircc_interrupt()
682 static irqreturn_t ali_ircc_fir_interrupt(struct ali_ircc_cb *self) in ali_ircc_fir_interrupt() argument
688 iobase = self->io.fir_base; in ali_ircc_fir_interrupt()
691 self->InterruptID = inb(iobase+FIR_IIR); in ali_ircc_fir_interrupt()
692 self->BusStatus = inb(iobase+FIR_BSR); in ali_ircc_fir_interrupt()
694 OldMessageCount = (self->LineStatus + 1) & 0x07; in ali_ircc_fir_interrupt()
695 self->LineStatus = inb(iobase+FIR_LSR); in ali_ircc_fir_interrupt()
697 eir = self->InterruptID & self->ier; /* Mask out the interesting ones */ in ali_ircc_fir_interrupt()
699 pr_debug("%s(), self->InterruptID = %x\n", __func__, self->InterruptID); in ali_ircc_fir_interrupt()
700 pr_debug("%s(), self->LineStatus = %x\n", __func__, self->LineStatus); in ali_ircc_fir_interrupt()
701 pr_debug("%s(), self->ier = %x\n", __func__, self->ier); in ali_ircc_fir_interrupt()
705 SetCOMInterrupts(self, FALSE); in ali_ircc_fir_interrupt()
711 if (self->io.direction == IO_XMIT) /* TX */ in ali_ircc_fir_interrupt()
716 if(ali_ircc_dma_xmit_complete(self)) in ali_ircc_fir_interrupt()
718 if (irda_device_txqueue_empty(self->netdev)) in ali_ircc_fir_interrupt()
721 ali_ircc_dma_receive(self); in ali_ircc_fir_interrupt()
722 self->ier = IER_EOM; in ali_ircc_fir_interrupt()
727 self->ier = IER_EOM; in ali_ircc_fir_interrupt()
736 if(OldMessageCount > ((self->LineStatus+1) & 0x07)) in ali_ircc_fir_interrupt()
738 self->rcvFramesOverflow = TRUE; in ali_ircc_fir_interrupt()
743 if (ali_ircc_dma_receive_complete(self)) in ali_ircc_fir_interrupt()
748 self->ier = IER_EOM; in ali_ircc_fir_interrupt()
755 self->ier = IER_EOM | IER_TIMER; in ali_ircc_fir_interrupt()
763 if(OldMessageCount > ((self->LineStatus+1) & 0x07)) in ali_ircc_fir_interrupt()
765 self->rcvFramesOverflow = TRUE; in ali_ircc_fir_interrupt()
775 if (self->io.direction == IO_XMIT) in ali_ircc_fir_interrupt()
777 ali_ircc_dma_xmit(self); in ali_ircc_fir_interrupt()
780 self->ier = IER_EOM; in ali_ircc_fir_interrupt()
785 if(ali_ircc_dma_receive_complete(self)) in ali_ircc_fir_interrupt()
787 self->ier = IER_EOM; in ali_ircc_fir_interrupt()
791 self->ier = IER_EOM | IER_TIMER; in ali_ircc_fir_interrupt()
797 SetCOMInterrupts(self, TRUE); in ali_ircc_fir_interrupt()
808 static irqreturn_t ali_ircc_sir_interrupt(struct ali_ircc_cb *self) in ali_ircc_sir_interrupt() argument
814 iobase = self->io.sir_base; in ali_ircc_sir_interrupt()
831 ali_ircc_sir_receive(self); in ali_ircc_sir_interrupt()
837 ali_ircc_sir_write_wakeup(self); in ali_ircc_sir_interrupt()
859 static void ali_ircc_sir_receive(struct ali_ircc_cb *self) in ali_ircc_sir_receive() argument
864 IRDA_ASSERT(self != NULL, return;); in ali_ircc_sir_receive()
866 iobase = self->io.sir_base; in ali_ircc_sir_receive()
873 async_unwrap_char(self->netdev, &self->netdev->stats, &self->rx_buff, in ali_ircc_sir_receive()
892 static void ali_ircc_sir_write_wakeup(struct ali_ircc_cb *self) in ali_ircc_sir_write_wakeup() argument
897 IRDA_ASSERT(self != NULL, return;); in ali_ircc_sir_write_wakeup()
900 iobase = self->io.sir_base; in ali_ircc_sir_write_wakeup()
903 if (self->tx_buff.len > 0) in ali_ircc_sir_write_wakeup()
906 actual = ali_ircc_sir_write(iobase, self->io.fifo_size, in ali_ircc_sir_write_wakeup()
907 self->tx_buff.data, self->tx_buff.len); in ali_ircc_sir_write_wakeup()
908 self->tx_buff.data += actual; in ali_ircc_sir_write_wakeup()
909 self->tx_buff.len -= actual; in ali_ircc_sir_write_wakeup()
913 if (self->new_speed) in ali_ircc_sir_write_wakeup()
920 __func__, self->new_speed); in ali_ircc_sir_write_wakeup()
921 ali_ircc_change_speed(self, self->new_speed); in ali_ircc_sir_write_wakeup()
922 self->new_speed = 0; in ali_ircc_sir_write_wakeup()
925 if (self->io.speed > 115200) in ali_ircc_sir_write_wakeup()
930 self->ier = IER_EOM; in ali_ircc_sir_write_wakeup()
937 netif_wake_queue(self->netdev); in ali_ircc_sir_write_wakeup()
940 self->netdev->stats.tx_packets++; in ali_ircc_sir_write_wakeup()
948 static void ali_ircc_change_speed(struct ali_ircc_cb *self, __u32 baud) in ali_ircc_change_speed() argument
950 struct net_device *dev = self->netdev; in ali_ircc_change_speed()
959 iobase = self->io.fir_base; in ali_ircc_change_speed()
961 SetCOMInterrupts(self, FALSE); // 2000/11/24 11:43AM in ali_ircc_change_speed()
968 ali_ircc_fir_change_speed(self, baud); in ali_ircc_change_speed()
974 self->ier = IER_EOM; // benjamin 2000/11/20 07:24PM in ali_ircc_change_speed()
977 ali_ircc_dma_receive(self); // benajmin 2000/11/8 07:46PM not complete in ali_ircc_change_speed()
982 ali_ircc_sir_change_speed(self, baud); in ali_ircc_change_speed()
989 SetCOMInterrupts(self, TRUE); // 2000/11/24 11:43AM in ali_ircc_change_speed()
991 netif_wake_queue(self->netdev); in ali_ircc_change_speed()
999 struct ali_ircc_cb *self = priv; in ali_ircc_fir_change_speed() local
1003 IRDA_ASSERT(self != NULL, return;); in ali_ircc_fir_change_speed()
1005 dev = self->netdev; in ali_ircc_fir_change_speed()
1006 iobase = self->io.fir_base; in ali_ircc_fir_change_speed()
1009 __func__, self->io.speed, baud); in ali_ircc_fir_change_speed()
1012 if(self->io.speed <=115200) in ali_ircc_fir_change_speed()
1018 self->io.speed = baud; in ali_ircc_fir_change_speed()
1021 ali_ircc_change_dongle_speed(self, baud); in ali_ircc_fir_change_speed()
1033 struct ali_ircc_cb *self = priv; in ali_ircc_sir_change_speed() local
1043 IRDA_ASSERT(self != NULL, return;); in ali_ircc_sir_change_speed()
1045 iobase = self->io.sir_base; in ali_ircc_sir_change_speed()
1048 if(self->io.speed >115200) in ali_ircc_sir_change_speed()
1051 ali_ircc_change_dongle_speed(self, speed); in ali_ircc_sir_change_speed()
1062 self->io.speed = speed; in ali_ircc_sir_change_speed()
1064 spin_lock_irqsave(&self->lock, flags); in ali_ircc_sir_change_speed()
1075 if (self->io.speed < 38400) in ali_ircc_sir_change_speed()
1093 spin_unlock_irqrestore(&self->lock, flags); in ali_ircc_sir_change_speed()
1100 struct ali_ircc_cb *self = priv; in ali_ircc_change_dongle_speed() local
1105 iobase = self->io.fir_base; /* or iobase = self->io.sir_base; */ in ali_ircc_change_dongle_speed()
1106 dongle_id = self->io.dongle_id; in ali_ircc_change_dongle_speed()
1313 struct ali_ircc_cb *self; in ali_ircc_net_open() local
1320 self = netdev_priv(dev); in ali_ircc_net_open()
1322 IRDA_ASSERT(self != NULL, return 0;); in ali_ircc_net_open()
1324 iobase = self->io.fir_base; in ali_ircc_net_open()
1327 if (request_irq(self->io.irq, ali_ircc_interrupt, 0, dev->name, dev)) in ali_ircc_net_open()
1330 ALI_IRCC_DRIVER_NAME, self->io.irq); in ali_ircc_net_open()
1338 if (request_dma(self->io.dma, dev->name)) { in ali_ircc_net_open()
1340 ALI_IRCC_DRIVER_NAME, self->io.dma); in ali_ircc_net_open()
1341 free_irq(self->io.irq, dev); in ali_ircc_net_open()
1352 sprintf(hwname, "ALI-FIR @ 0x%03x", self->io.fir_base); in ali_ircc_net_open()
1358 self->irlap = irlap_open(dev, &self->qos, hwname); in ali_ircc_net_open()
1373 struct ali_ircc_cb *self; in ali_ircc_net_close() local
1379 self = netdev_priv(dev); in ali_ircc_net_close()
1380 IRDA_ASSERT(self != NULL, return 0;); in ali_ircc_net_close()
1386 if (self->irlap) in ali_ircc_net_close()
1387 irlap_close(self->irlap); in ali_ircc_net_close()
1388 self->irlap = NULL; in ali_ircc_net_close()
1390 disable_dma(self->io.dma); in ali_ircc_net_close()
1393 SetCOMInterrupts(self, FALSE); in ali_ircc_net_close()
1395 free_irq(self->io.irq, dev); in ali_ircc_net_close()
1396 free_dma(self->io.dma); in ali_ircc_net_close()
1411 struct ali_ircc_cb *self; in ali_ircc_fir_hard_xmit() local
1418 self = netdev_priv(dev); in ali_ircc_fir_hard_xmit()
1419 iobase = self->io.fir_base; in ali_ircc_fir_hard_xmit()
1424 spin_lock_irqsave(&self->lock, flags); in ali_ircc_fir_hard_xmit()
1432 if ((speed != self->io.speed) && (speed != -1)) { in ali_ircc_fir_hard_xmit()
1435 ali_ircc_change_speed(self, speed); in ali_ircc_fir_hard_xmit()
1437 spin_unlock_irqrestore(&self->lock, flags); in ali_ircc_fir_hard_xmit()
1441 self->new_speed = speed; in ali_ircc_fir_hard_xmit()
1445 self->tx_fifo.queue[self->tx_fifo.free].start = self->tx_fifo.tail; in ali_ircc_fir_hard_xmit()
1446 self->tx_fifo.queue[self->tx_fifo.free].len = skb->len; in ali_ircc_fir_hard_xmit()
1447 self->tx_fifo.tail += skb->len; in ali_ircc_fir_hard_xmit()
1451 skb_copy_from_linear_data(skb, self->tx_fifo.queue[self->tx_fifo.free].start, in ali_ircc_fir_hard_xmit()
1453 self->tx_fifo.len++; in ali_ircc_fir_hard_xmit()
1454 self->tx_fifo.free++; in ali_ircc_fir_hard_xmit()
1457 if (self->tx_fifo.len == 1) in ali_ircc_fir_hard_xmit()
1465 diff = ktime_us_delta(ktime_get(), self->stamp); in ali_ircc_fir_hard_xmit()
1511 self->io.direction = IO_XMIT; in ali_ircc_fir_hard_xmit()
1514 self->ier = IER_TIMER; in ali_ircc_fir_hard_xmit()
1515 SetCOMInterrupts(self, TRUE); in ali_ircc_fir_hard_xmit()
1526 self->ier = IER_EOM; in ali_ircc_fir_hard_xmit()
1527 SetCOMInterrupts(self, TRUE); in ali_ircc_fir_hard_xmit()
1530 ali_ircc_dma_xmit(self); in ali_ircc_fir_hard_xmit()
1536 if (self->tx_fifo.free < MAX_TX_WINDOW) in ali_ircc_fir_hard_xmit()
1537 netif_wake_queue(self->netdev); in ali_ircc_fir_hard_xmit()
1543 spin_unlock_irqrestore(&self->lock, flags); in ali_ircc_fir_hard_xmit()
1550 static void ali_ircc_dma_xmit(struct ali_ircc_cb *self) in ali_ircc_dma_xmit() argument
1557 iobase = self->io.fir_base; in ali_ircc_dma_xmit()
1561 if(self->tx_fifo.queue[self->tx_fifo.ptr].len < TX_FIFO_Threshold) in ali_ircc_dma_xmit()
1562 FIFO_OPTI = self->tx_fifo.queue[self->tx_fifo.ptr].len-1; in ali_ircc_dma_xmit()
1570 self->io.direction = IO_XMIT; in ali_ircc_dma_xmit()
1572 irda_setup_dma(self->io.dma, in ali_ircc_dma_xmit()
1573 ((u8 *)self->tx_fifo.queue[self->tx_fifo.ptr].start - in ali_ircc_dma_xmit()
1574 self->tx_buff.head) + self->tx_buff_dma, in ali_ircc_dma_xmit()
1575 self->tx_fifo.queue[self->tx_fifo.ptr].len, in ali_ircc_dma_xmit()
1583 if (self->fifo_opti_buf!=FIFO_OPTI) in ali_ircc_dma_xmit()
1587 self->fifo_opti_buf=FIFO_OPTI; in ali_ircc_dma_xmit()
1595 Hi = (self->tx_fifo.queue[self->tx_fifo.ptr].len >> 8) & 0x0f; in ali_ircc_dma_xmit()
1596 Lo = self->tx_fifo.queue[self->tx_fifo.ptr].len & 0xff; in ali_ircc_dma_xmit()
1619 static int ali_ircc_dma_xmit_complete(struct ali_ircc_cb *self) in ali_ircc_dma_xmit_complete() argument
1625 iobase = self->io.fir_base; in ali_ircc_dma_xmit_complete()
1638 self->netdev->stats.tx_errors++; in ali_ircc_dma_xmit_complete()
1639 self->netdev->stats.tx_fifo_errors++; in ali_ircc_dma_xmit_complete()
1643 self->netdev->stats.tx_packets++; in ali_ircc_dma_xmit_complete()
1647 if (self->new_speed) in ali_ircc_dma_xmit_complete()
1649 ali_ircc_change_speed(self, self->new_speed); in ali_ircc_dma_xmit_complete()
1650 self->new_speed = 0; in ali_ircc_dma_xmit_complete()
1654 self->tx_fifo.ptr++; in ali_ircc_dma_xmit_complete()
1655 self->tx_fifo.len--; in ali_ircc_dma_xmit_complete()
1658 if (self->tx_fifo.len) in ali_ircc_dma_xmit_complete()
1660 ali_ircc_dma_xmit(self); in ali_ircc_dma_xmit_complete()
1667 self->tx_fifo.len = self->tx_fifo.ptr = self->tx_fifo.free = 0; in ali_ircc_dma_xmit_complete()
1668 self->tx_fifo.tail = self->tx_buff.head; in ali_ircc_dma_xmit_complete()
1672 if (self->tx_fifo.free < MAX_TX_WINDOW) { in ali_ircc_dma_xmit_complete()
1675 netif_wake_queue(self->netdev); in ali_ircc_dma_xmit_complete()
1690 static int ali_ircc_dma_receive(struct ali_ircc_cb *self) in ali_ircc_dma_receive() argument
1695 iobase = self->io.fir_base; in ali_ircc_dma_receive()
1698 self->tx_fifo.len = self->tx_fifo.ptr = self->tx_fifo.free = 0; in ali_ircc_dma_receive()
1699 self->tx_fifo.tail = self->tx_buff.head; in ali_ircc_dma_receive()
1709 self->rcvFramesOverflow = FALSE; in ali_ircc_dma_receive()
1711 self->LineStatus = inb(iobase+FIR_LSR) ; in ali_ircc_dma_receive()
1714 self->io.direction = IO_RECV; in ali_ircc_dma_receive()
1715 self->rx_buff.data = self->rx_buff.head; in ali_ircc_dma_receive()
1721 self->st_fifo.len = self->st_fifo.pending_bytes = 0; in ali_ircc_dma_receive()
1722 self->st_fifo.tail = self->st_fifo.head = 0; in ali_ircc_dma_receive()
1724 irda_setup_dma(self->io.dma, self->rx_buff_dma, self->rx_buff.truesize, in ali_ircc_dma_receive()
1747 static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self) in ali_ircc_dma_receive_complete() argument
1754 st_fifo = &self->st_fifo; in ali_ircc_dma_receive_complete()
1755 iobase = self->io.fir_base; in ali_ircc_dma_receive_complete()
1799 if ((status & 0xd8) || self->rcvFramesOverflow || (len==0)) in ali_ircc_dma_receive_complete()
1805 self->netdev->stats.rx_errors++; in ali_ircc_dma_receive_complete()
1807 self->rx_buff.data += len; in ali_ircc_dma_receive_complete()
1811 self->netdev->stats.rx_frame_errors++; in ali_ircc_dma_receive_complete()
1817 self->netdev->stats.rx_frame_errors++; in ali_ircc_dma_receive_complete()
1824 self->netdev->stats.rx_crc_errors++; in ali_ircc_dma_receive_complete()
1829 if(self->rcvFramesOverflow) in ali_ircc_dma_receive_complete()
1831 self->netdev->stats.rx_frame_errors++; in ali_ircc_dma_receive_complete()
1837 self->netdev->stats.rx_frame_errors++; in ali_ircc_dma_receive_complete()
1882 self->stamp = ktime_get(); in ali_ircc_dma_receive_complete()
1887 self->netdev->stats.rx_dropped++; in ali_ircc_dma_receive_complete()
1897 skb_copy_to_linear_data(skb, self->rx_buff.data, len); in ali_ircc_dma_receive_complete()
1900 self->rx_buff.data += len; in ali_ircc_dma_receive_complete()
1901 self->netdev->stats.rx_bytes += len; in ali_ircc_dma_receive_complete()
1902 self->netdev->stats.rx_packets++; in ali_ircc_dma_receive_complete()
1904 skb->dev = self->netdev; in ali_ircc_dma_receive_complete()
1927 struct ali_ircc_cb *self; in ali_ircc_sir_hard_xmit() local
1935 self = netdev_priv(dev); in ali_ircc_sir_hard_xmit()
1936 IRDA_ASSERT(self != NULL, return NETDEV_TX_OK;); in ali_ircc_sir_hard_xmit()
1938 iobase = self->io.sir_base; in ali_ircc_sir_hard_xmit()
1943 spin_lock_irqsave(&self->lock, flags); in ali_ircc_sir_hard_xmit()
1951 if ((speed != self->io.speed) && (speed != -1)) { in ali_ircc_sir_hard_xmit()
1954 ali_ircc_change_speed(self, speed); in ali_ircc_sir_hard_xmit()
1956 spin_unlock_irqrestore(&self->lock, flags); in ali_ircc_sir_hard_xmit()
1960 self->new_speed = speed; in ali_ircc_sir_hard_xmit()
1964 self->tx_buff.data = self->tx_buff.head; in ali_ircc_sir_hard_xmit()
1967 self->tx_buff.len = async_wrap_skb(skb, self->tx_buff.data, in ali_ircc_sir_hard_xmit()
1968 self->tx_buff.truesize); in ali_ircc_sir_hard_xmit()
1970 self->netdev->stats.tx_bytes += self->tx_buff.len; in ali_ircc_sir_hard_xmit()
1976 spin_unlock_irqrestore(&self->lock, flags); in ali_ircc_sir_hard_xmit()
1994 struct ali_ircc_cb *self; in ali_ircc_net_ioctl() local
2001 self = netdev_priv(dev); in ali_ircc_net_ioctl()
2003 IRDA_ASSERT(self != NULL, return -1;); in ali_ircc_net_ioctl()
2018 spin_lock_irqsave(&self->lock, flags); in ali_ircc_net_ioctl()
2019 ali_ircc_change_speed(self, irq->ifr_baudrate); in ali_ircc_net_ioctl()
2020 spin_unlock_irqrestore(&self->lock, flags); in ali_ircc_net_ioctl()
2026 irda_device_set_media_busy(self->netdev, TRUE); in ali_ircc_net_ioctl()
2031 irq->ifr_receiving = ali_ircc_is_receiving(self); in ali_ircc_net_ioctl()
2047 static int ali_ircc_is_receiving(struct ali_ircc_cb *self) in ali_ircc_is_receiving() argument
2054 IRDA_ASSERT(self != NULL, return FALSE;); in ali_ircc_is_receiving()
2056 spin_lock_irqsave(&self->lock, flags); in ali_ircc_is_receiving()
2058 if (self->io.speed > 115200) in ali_ircc_is_receiving()
2060 iobase = self->io.fir_base; in ali_ircc_is_receiving()
2074 status = (self->rx_buff.state != OUTSIDE_FRAME); in ali_ircc_is_receiving()
2077 spin_unlock_irqrestore(&self->lock, flags); in ali_ircc_is_receiving()
2085 struct ali_ircc_cb *self = platform_get_drvdata(dev); in ali_ircc_suspend() local
2089 if (self->io.suspended) in ali_ircc_suspend()
2092 ali_ircc_net_close(self->netdev); in ali_ircc_suspend()
2094 self->io.suspended = 1; in ali_ircc_suspend()
2101 struct ali_ircc_cb *self = platform_get_drvdata(dev); in ali_ircc_resume() local
2103 if (!self->io.suspended) in ali_ircc_resume()
2106 ali_ircc_net_open(self->netdev); in ali_ircc_resume()
2110 self->io.suspended = 0; in ali_ircc_resume()
2117 static void SetCOMInterrupts(struct ali_ircc_cb *self , unsigned char enable) in SetCOMInterrupts() argument
2122 int iobase = self->io.fir_base; /* or sir_base */ in SetCOMInterrupts()
2129 if (self->io.direction == IO_XMIT) in SetCOMInterrupts()
2131 if (self->io.speed > 115200) /* FIR, MIR */ in SetCOMInterrupts()
2133 newMask = self->ier; in SetCOMInterrupts()
2141 if (self->io.speed > 115200) /* FIR, MIR */ in SetCOMInterrupts()
2143 newMask = self->ier; in SetCOMInterrupts()
2158 if (self->io.speed > 115200) in SetCOMInterrupts()