• Home
  • Raw
  • Download

Lines Matching refs:self

105 static int  ali_ircc_close(struct ali_ircc_cb *self);
108 static int ali_ircc_is_receiving(struct ali_ircc_cb *self);
112 static void ali_ircc_change_speed(struct ali_ircc_cb *self, __u32 baud);
117 static irqreturn_t ali_ircc_sir_interrupt(struct ali_ircc_cb *self);
118 static void ali_ircc_sir_receive(struct ali_ircc_cb *self);
119 static void ali_ircc_sir_write_wakeup(struct ali_ircc_cb *self);
127 static irqreturn_t ali_ircc_fir_interrupt(struct ali_ircc_cb *self);
128 static int ali_ircc_dma_receive(struct ali_ircc_cb *self);
129 static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self);
130 static int ali_ircc_dma_xmit_complete(struct ali_ircc_cb *self);
131 static void ali_ircc_dma_xmit(struct ali_ircc_cb *self);
140 static void SetCOMInterrupts(struct ali_ircc_cb *self , unsigned char enable);
288 struct ali_ircc_cb *self; in ali_ircc_open() local
304 dev = alloc_irdadev(sizeof(*self)); in ali_ircc_open()
311 self = netdev_priv(dev); in ali_ircc_open()
312 self->netdev = dev; in ali_ircc_open()
313 spin_lock_init(&self->lock); in ali_ircc_open()
316 dev_self[i] = self; in ali_ircc_open()
317 self->index = i; in ali_ircc_open()
320 self->io.cfg_base = info->cfg_base; /* In ali_ircc_probe_53 assign */ in ali_ircc_open()
321 self->io.fir_base = info->fir_base; /* info->sir_base = info->fir_base */ in ali_ircc_open()
322 self->io.sir_base = info->sir_base; /* ALi SIR and FIR use the same address */ in ali_ircc_open()
323 self->io.irq = info->irq; in ali_ircc_open()
324 self->io.fir_ext = CHIP_IO_EXTENT; in ali_ircc_open()
325 self->io.dma = info->dma; in ali_ircc_open()
326 self->io.fifo_size = 16; /* SIR: 16, FIR: 32 Benjamin 2000/11/1 */ in ali_ircc_open()
329 if (!request_region(self->io.fir_base, self->io.fir_ext, in ali_ircc_open()
332 self->io.fir_base); in ali_ircc_open()
338 irda_init_max_qos_capabilies(&self->qos); in ali_ircc_open()
341 self->qos.baud_rate.bits = IR_9600|IR_19200|IR_38400|IR_57600| in ali_ircc_open()
344 self->qos.min_turn_time.bits = qos_mtt_bits; in ali_ircc_open()
346 irda_qos_bits_to_value(&self->qos); in ali_ircc_open()
349 self->rx_buff.truesize = 14384; in ali_ircc_open()
350 self->tx_buff.truesize = 14384; in ali_ircc_open()
353 self->rx_buff.head = in ali_ircc_open()
354 dma_zalloc_coherent(NULL, self->rx_buff.truesize, in ali_ircc_open()
355 &self->rx_buff_dma, GFP_KERNEL); in ali_ircc_open()
356 if (self->rx_buff.head == NULL) { in ali_ircc_open()
361 self->tx_buff.head = in ali_ircc_open()
362 dma_zalloc_coherent(NULL, self->tx_buff.truesize, in ali_ircc_open()
363 &self->tx_buff_dma, GFP_KERNEL); in ali_ircc_open()
364 if (self->tx_buff.head == NULL) { in ali_ircc_open()
369 self->rx_buff.in_frame = FALSE; in ali_ircc_open()
370 self->rx_buff.state = OUTSIDE_FRAME; in ali_ircc_open()
371 self->tx_buff.data = self->tx_buff.head; in ali_ircc_open()
372 self->rx_buff.data = self->rx_buff.head; in ali_ircc_open()
375 self->tx_fifo.len = self->tx_fifo.ptr = self->tx_fifo.free = 0; in ali_ircc_open()
376 self->tx_fifo.tail = self->tx_buff.head; in ali_ircc_open()
393 self->io.dongle_id = dongle_id; in ali_ircc_open()
400 dma_free_coherent(NULL, self->tx_buff.truesize, in ali_ircc_open()
401 self->tx_buff.head, self->tx_buff_dma); in ali_ircc_open()
403 dma_free_coherent(NULL, self->rx_buff.truesize, in ali_ircc_open()
404 self->rx_buff.head, self->rx_buff_dma); in ali_ircc_open()
406 release_region(self->io.fir_base, self->io.fir_ext); in ali_ircc_open()
420 static int __exit ali_ircc_close(struct ali_ircc_cb *self) in ali_ircc_close() argument
426 IRDA_ASSERT(self != NULL, return -1;); in ali_ircc_close()
428 iobase = self->io.fir_base; in ali_ircc_close()
431 unregister_netdev(self->netdev); in ali_ircc_close()
434 IRDA_DEBUG(4, "%s(), Releasing Region %03x\n", __func__, self->io.fir_base); in ali_ircc_close()
435 release_region(self->io.fir_base, self->io.fir_ext); in ali_ircc_close()
437 if (self->tx_buff.head) in ali_ircc_close()
438 dma_free_coherent(NULL, self->tx_buff.truesize, in ali_ircc_close()
439 self->tx_buff.head, self->tx_buff_dma); in ali_ircc_close()
441 if (self->rx_buff.head) in ali_ircc_close()
442 dma_free_coherent(NULL, self->rx_buff.truesize, in ali_ircc_close()
443 self->rx_buff.head, self->rx_buff_dma); in ali_ircc_close()
445 dev_self[self->index] = NULL; in ali_ircc_close()
446 free_netdev(self->netdev); in ali_ircc_close()
673 struct ali_ircc_cb *self; in ali_ircc_interrupt() local
678 self = netdev_priv(dev); in ali_ircc_interrupt()
680 spin_lock(&self->lock); in ali_ircc_interrupt()
683 if (self->io.speed > 115200) in ali_ircc_interrupt()
684 ret = ali_ircc_fir_interrupt(self); in ali_ircc_interrupt()
686 ret = ali_ircc_sir_interrupt(self); in ali_ircc_interrupt()
688 spin_unlock(&self->lock); in ali_ircc_interrupt()
699 static irqreturn_t ali_ircc_fir_interrupt(struct ali_ircc_cb *self) in ali_ircc_fir_interrupt() argument
706 iobase = self->io.fir_base; in ali_ircc_fir_interrupt()
709 self->InterruptID = inb(iobase+FIR_IIR); in ali_ircc_fir_interrupt()
710 self->BusStatus = inb(iobase+FIR_BSR); in ali_ircc_fir_interrupt()
712 OldMessageCount = (self->LineStatus + 1) & 0x07; in ali_ircc_fir_interrupt()
713 self->LineStatus = inb(iobase+FIR_LSR); in ali_ircc_fir_interrupt()
715 eir = self->InterruptID & self->ier; /* Mask out the interesting ones */ in ali_ircc_fir_interrupt()
717 IRDA_DEBUG(1, "%s(), self->InterruptID = %x\n", __func__,self->InterruptID); in ali_ircc_fir_interrupt()
718 IRDA_DEBUG(1, "%s(), self->LineStatus = %x\n", __func__,self->LineStatus); in ali_ircc_fir_interrupt()
719 IRDA_DEBUG(1, "%s(), self->ier = %x\n", __func__,self->ier); in ali_ircc_fir_interrupt()
723 SetCOMInterrupts(self, FALSE); in ali_ircc_fir_interrupt()
729 if (self->io.direction == IO_XMIT) /* TX */ in ali_ircc_fir_interrupt()
733 if(ali_ircc_dma_xmit_complete(self)) in ali_ircc_fir_interrupt()
735 if (irda_device_txqueue_empty(self->netdev)) in ali_ircc_fir_interrupt()
738 ali_ircc_dma_receive(self); in ali_ircc_fir_interrupt()
739 self->ier = IER_EOM; in ali_ircc_fir_interrupt()
744 self->ier = IER_EOM; in ali_ircc_fir_interrupt()
752 if(OldMessageCount > ((self->LineStatus+1) & 0x07)) in ali_ircc_fir_interrupt()
754 self->rcvFramesOverflow = TRUE; in ali_ircc_fir_interrupt()
758 if (ali_ircc_dma_receive_complete(self)) in ali_ircc_fir_interrupt()
762 self->ier = IER_EOM; in ali_ircc_fir_interrupt()
768 self->ier = IER_EOM | IER_TIMER; in ali_ircc_fir_interrupt()
776 if(OldMessageCount > ((self->LineStatus+1) & 0x07)) in ali_ircc_fir_interrupt()
778 self->rcvFramesOverflow = TRUE; in ali_ircc_fir_interrupt()
787 if (self->io.direction == IO_XMIT) in ali_ircc_fir_interrupt()
789 ali_ircc_dma_xmit(self); in ali_ircc_fir_interrupt()
792 self->ier = IER_EOM; in ali_ircc_fir_interrupt()
797 if(ali_ircc_dma_receive_complete(self)) in ali_ircc_fir_interrupt()
799 self->ier = IER_EOM; in ali_ircc_fir_interrupt()
803 self->ier = IER_EOM | IER_TIMER; in ali_ircc_fir_interrupt()
809 SetCOMInterrupts(self, TRUE); in ali_ircc_fir_interrupt()
821 static irqreturn_t ali_ircc_sir_interrupt(struct ali_ircc_cb *self) in ali_ircc_sir_interrupt() argument
828 iobase = self->io.sir_base; in ali_ircc_sir_interrupt()
845 ali_ircc_sir_receive(self); in ali_ircc_sir_interrupt()
851 ali_ircc_sir_write_wakeup(self); in ali_ircc_sir_interrupt()
874 static void ali_ircc_sir_receive(struct ali_ircc_cb *self) in ali_ircc_sir_receive() argument
880 IRDA_ASSERT(self != NULL, return;); in ali_ircc_sir_receive()
882 iobase = self->io.sir_base; in ali_ircc_sir_receive()
889 async_unwrap_char(self->netdev, &self->netdev->stats, &self->rx_buff, in ali_ircc_sir_receive()
909 static void ali_ircc_sir_write_wakeup(struct ali_ircc_cb *self) in ali_ircc_sir_write_wakeup() argument
914 IRDA_ASSERT(self != NULL, return;); in ali_ircc_sir_write_wakeup()
918 iobase = self->io.sir_base; in ali_ircc_sir_write_wakeup()
921 if (self->tx_buff.len > 0) in ali_ircc_sir_write_wakeup()
924 actual = ali_ircc_sir_write(iobase, self->io.fifo_size, in ali_ircc_sir_write_wakeup()
925 self->tx_buff.data, self->tx_buff.len); in ali_ircc_sir_write_wakeup()
926 self->tx_buff.data += actual; in ali_ircc_sir_write_wakeup()
927 self->tx_buff.len -= actual; in ali_ircc_sir_write_wakeup()
931 if (self->new_speed) in ali_ircc_sir_write_wakeup()
937 IRDA_DEBUG(1, "%s(), Changing speed! self->new_speed = %d\n", __func__ , self->new_speed); in ali_ircc_sir_write_wakeup()
938 ali_ircc_change_speed(self, self->new_speed); in ali_ircc_sir_write_wakeup()
939 self->new_speed = 0; in ali_ircc_sir_write_wakeup()
942 if (self->io.speed > 115200) in ali_ircc_sir_write_wakeup()
946 self->ier = IER_EOM; in ali_ircc_sir_write_wakeup()
953 netif_wake_queue(self->netdev); in ali_ircc_sir_write_wakeup()
956 self->netdev->stats.tx_packets++; in ali_ircc_sir_write_wakeup()
965 static void ali_ircc_change_speed(struct ali_ircc_cb *self, __u32 baud) in ali_ircc_change_speed() argument
967 struct net_device *dev = self->netdev; in ali_ircc_change_speed()
977 iobase = self->io.fir_base; in ali_ircc_change_speed()
979 SetCOMInterrupts(self, FALSE); // 2000/11/24 11:43AM in ali_ircc_change_speed()
986 ali_ircc_fir_change_speed(self, baud); in ali_ircc_change_speed()
992 self->ier = IER_EOM; // benjamin 2000/11/20 07:24PM in ali_ircc_change_speed()
995 ali_ircc_dma_receive(self); // benajmin 2000/11/8 07:46PM not complete in ali_ircc_change_speed()
1000 ali_ircc_sir_change_speed(self, baud); in ali_ircc_change_speed()
1007 SetCOMInterrupts(self, TRUE); // 2000/11/24 11:43AM in ali_ircc_change_speed()
1009 netif_wake_queue(self->netdev); in ali_ircc_change_speed()
1018 struct ali_ircc_cb *self = priv; in ali_ircc_fir_change_speed() local
1023 IRDA_ASSERT(self != NULL, return;); in ali_ircc_fir_change_speed()
1025 dev = self->netdev; in ali_ircc_fir_change_speed()
1026 iobase = self->io.fir_base; in ali_ircc_fir_change_speed()
1028 IRDA_DEBUG(1, "%s(), self->io.speed = %d, change to speed = %d\n", __func__ ,self->io.speed,baud); in ali_ircc_fir_change_speed()
1031 if(self->io.speed <=115200) in ali_ircc_fir_change_speed()
1037 self->io.speed = baud; in ali_ircc_fir_change_speed()
1040 ali_ircc_change_dongle_speed(self, baud); in ali_ircc_fir_change_speed()
1053 struct ali_ircc_cb *self = priv; in ali_ircc_sir_change_speed() local
1064 IRDA_ASSERT(self != NULL, return;); in ali_ircc_sir_change_speed()
1066 iobase = self->io.sir_base; in ali_ircc_sir_change_speed()
1069 if(self->io.speed >115200) in ali_ircc_sir_change_speed()
1072 ali_ircc_change_dongle_speed(self, speed); in ali_ircc_sir_change_speed()
1083 self->io.speed = speed; in ali_ircc_sir_change_speed()
1085 spin_lock_irqsave(&self->lock, flags); in ali_ircc_sir_change_speed()
1096 if (self->io.speed < 38400) in ali_ircc_sir_change_speed()
1114 spin_unlock_irqrestore(&self->lock, flags); in ali_ircc_sir_change_speed()
1122 struct ali_ircc_cb *self = priv; in ali_ircc_change_dongle_speed() local
1128 iobase = self->io.fir_base; /* or iobase = self->io.sir_base; */ in ali_ircc_change_dongle_speed()
1129 dongle_id = self->io.dongle_id; in ali_ircc_change_dongle_speed()
1338 struct ali_ircc_cb *self; in ali_ircc_net_open() local
1346 self = netdev_priv(dev); in ali_ircc_net_open()
1348 IRDA_ASSERT(self != NULL, return 0;); in ali_ircc_net_open()
1350 iobase = self->io.fir_base; in ali_ircc_net_open()
1353 if (request_irq(self->io.irq, ali_ircc_interrupt, 0, dev->name, dev)) in ali_ircc_net_open()
1357 self->io.irq); in ali_ircc_net_open()
1365 if (request_dma(self->io.dma, dev->name)) { in ali_ircc_net_open()
1368 self->io.dma); in ali_ircc_net_open()
1369 free_irq(self->io.irq, dev); in ali_ircc_net_open()
1380 sprintf(hwname, "ALI-FIR @ 0x%03x", self->io.fir_base); in ali_ircc_net_open()
1386 self->irlap = irlap_open(dev, &self->qos, hwname); in ali_ircc_net_open()
1402 struct ali_ircc_cb *self; in ali_ircc_net_close() local
1409 self = netdev_priv(dev); in ali_ircc_net_close()
1410 IRDA_ASSERT(self != NULL, return 0;); in ali_ircc_net_close()
1416 if (self->irlap) in ali_ircc_net_close()
1417 irlap_close(self->irlap); in ali_ircc_net_close()
1418 self->irlap = NULL; in ali_ircc_net_close()
1420 disable_dma(self->io.dma); in ali_ircc_net_close()
1423 SetCOMInterrupts(self, FALSE); in ali_ircc_net_close()
1425 free_irq(self->io.irq, dev); in ali_ircc_net_close()
1426 free_dma(self->io.dma); in ali_ircc_net_close()
1442 struct ali_ircc_cb *self; in ali_ircc_fir_hard_xmit() local
1450 self = netdev_priv(dev); in ali_ircc_fir_hard_xmit()
1451 iobase = self->io.fir_base; in ali_ircc_fir_hard_xmit()
1456 spin_lock_irqsave(&self->lock, flags); in ali_ircc_fir_hard_xmit()
1464 if ((speed != self->io.speed) && (speed != -1)) { in ali_ircc_fir_hard_xmit()
1467 ali_ircc_change_speed(self, speed); in ali_ircc_fir_hard_xmit()
1469 spin_unlock_irqrestore(&self->lock, flags); in ali_ircc_fir_hard_xmit()
1473 self->new_speed = speed; in ali_ircc_fir_hard_xmit()
1477 self->tx_fifo.queue[self->tx_fifo.free].start = self->tx_fifo.tail; in ali_ircc_fir_hard_xmit()
1478 self->tx_fifo.queue[self->tx_fifo.free].len = skb->len; in ali_ircc_fir_hard_xmit()
1479 self->tx_fifo.tail += skb->len; in ali_ircc_fir_hard_xmit()
1483 skb_copy_from_linear_data(skb, self->tx_fifo.queue[self->tx_fifo.free].start, in ali_ircc_fir_hard_xmit()
1485 self->tx_fifo.len++; in ali_ircc_fir_hard_xmit()
1486 self->tx_fifo.free++; in ali_ircc_fir_hard_xmit()
1489 if (self->tx_fifo.len == 1) in ali_ircc_fir_hard_xmit()
1497 do_gettimeofday(&self->now); in ali_ircc_fir_hard_xmit()
1499 diff = self->now.tv_usec - self->stamp.tv_usec; in ali_ircc_fir_hard_xmit()
1546 self->io.direction = IO_XMIT; in ali_ircc_fir_hard_xmit()
1549 self->ier = IER_TIMER; in ali_ircc_fir_hard_xmit()
1550 SetCOMInterrupts(self, TRUE); in ali_ircc_fir_hard_xmit()
1561 self->ier = IER_EOM; in ali_ircc_fir_hard_xmit()
1562 SetCOMInterrupts(self, TRUE); in ali_ircc_fir_hard_xmit()
1565 ali_ircc_dma_xmit(self); in ali_ircc_fir_hard_xmit()
1571 if (self->tx_fifo.free < MAX_TX_WINDOW) in ali_ircc_fir_hard_xmit()
1572 netif_wake_queue(self->netdev); in ali_ircc_fir_hard_xmit()
1578 spin_unlock_irqrestore(&self->lock, flags); in ali_ircc_fir_hard_xmit()
1586 static void ali_ircc_dma_xmit(struct ali_ircc_cb *self) in ali_ircc_dma_xmit() argument
1594 iobase = self->io.fir_base; in ali_ircc_dma_xmit()
1598 if(self->tx_fifo.queue[self->tx_fifo.ptr].len < TX_FIFO_Threshold) in ali_ircc_dma_xmit()
1599 FIFO_OPTI = self->tx_fifo.queue[self->tx_fifo.ptr].len-1; in ali_ircc_dma_xmit()
1607 self->io.direction = IO_XMIT; in ali_ircc_dma_xmit()
1609 irda_setup_dma(self->io.dma, in ali_ircc_dma_xmit()
1610 ((u8 *)self->tx_fifo.queue[self->tx_fifo.ptr].start - in ali_ircc_dma_xmit()
1611 self->tx_buff.head) + self->tx_buff_dma, in ali_ircc_dma_xmit()
1612 self->tx_fifo.queue[self->tx_fifo.ptr].len, in ali_ircc_dma_xmit()
1620 if (self->fifo_opti_buf!=FIFO_OPTI) in ali_ircc_dma_xmit()
1624 self->fifo_opti_buf=FIFO_OPTI; in ali_ircc_dma_xmit()
1632 Hi = (self->tx_fifo.queue[self->tx_fifo.ptr].len >> 8) & 0x0f; in ali_ircc_dma_xmit()
1633 Lo = self->tx_fifo.queue[self->tx_fifo.ptr].len & 0xff; in ali_ircc_dma_xmit()
1656 static int ali_ircc_dma_xmit_complete(struct ali_ircc_cb *self) in ali_ircc_dma_xmit_complete() argument
1663 iobase = self->io.fir_base; in ali_ircc_dma_xmit_complete()
1675 self->netdev->stats.tx_errors++; in ali_ircc_dma_xmit_complete()
1676 self->netdev->stats.tx_fifo_errors++; in ali_ircc_dma_xmit_complete()
1680 self->netdev->stats.tx_packets++; in ali_ircc_dma_xmit_complete()
1684 if (self->new_speed) in ali_ircc_dma_xmit_complete()
1686 ali_ircc_change_speed(self, self->new_speed); in ali_ircc_dma_xmit_complete()
1687 self->new_speed = 0; in ali_ircc_dma_xmit_complete()
1691 self->tx_fifo.ptr++; in ali_ircc_dma_xmit_complete()
1692 self->tx_fifo.len--; in ali_ircc_dma_xmit_complete()
1695 if (self->tx_fifo.len) in ali_ircc_dma_xmit_complete()
1697 ali_ircc_dma_xmit(self); in ali_ircc_dma_xmit_complete()
1704 self->tx_fifo.len = self->tx_fifo.ptr = self->tx_fifo.free = 0; in ali_ircc_dma_xmit_complete()
1705 self->tx_fifo.tail = self->tx_buff.head; in ali_ircc_dma_xmit_complete()
1709 if (self->tx_fifo.free < MAX_TX_WINDOW) { in ali_ircc_dma_xmit_complete()
1712 netif_wake_queue(self->netdev); in ali_ircc_dma_xmit_complete()
1728 static int ali_ircc_dma_receive(struct ali_ircc_cb *self) in ali_ircc_dma_receive() argument
1734 iobase = self->io.fir_base; in ali_ircc_dma_receive()
1737 self->tx_fifo.len = self->tx_fifo.ptr = self->tx_fifo.free = 0; in ali_ircc_dma_receive()
1738 self->tx_fifo.tail = self->tx_buff.head; in ali_ircc_dma_receive()
1748 self->rcvFramesOverflow = FALSE; in ali_ircc_dma_receive()
1750 self->LineStatus = inb(iobase+FIR_LSR) ; in ali_ircc_dma_receive()
1753 self->io.direction = IO_RECV; in ali_ircc_dma_receive()
1754 self->rx_buff.data = self->rx_buff.head; in ali_ircc_dma_receive()
1760 self->st_fifo.len = self->st_fifo.pending_bytes = 0; in ali_ircc_dma_receive()
1761 self->st_fifo.tail = self->st_fifo.head = 0; in ali_ircc_dma_receive()
1763 irda_setup_dma(self->io.dma, self->rx_buff_dma, self->rx_buff.truesize, in ali_ircc_dma_receive()
1786 static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self) in ali_ircc_dma_receive_complete() argument
1795 st_fifo = &self->st_fifo; in ali_ircc_dma_receive_complete()
1796 iobase = self->io.fir_base; in ali_ircc_dma_receive_complete()
1840 if ((status & 0xd8) || self->rcvFramesOverflow || (len==0)) in ali_ircc_dma_receive_complete()
1845 self->netdev->stats.rx_errors++; in ali_ircc_dma_receive_complete()
1847 self->rx_buff.data += len; in ali_ircc_dma_receive_complete()
1851 self->netdev->stats.rx_frame_errors++; in ali_ircc_dma_receive_complete()
1856 self->netdev->stats.rx_frame_errors++; in ali_ircc_dma_receive_complete()
1862 self->netdev->stats.rx_crc_errors++; in ali_ircc_dma_receive_complete()
1866 if(self->rcvFramesOverflow) in ali_ircc_dma_receive_complete()
1868 self->netdev->stats.rx_frame_errors++; in ali_ircc_dma_receive_complete()
1873 self->netdev->stats.rx_frame_errors++; in ali_ircc_dma_receive_complete()
1916 do_gettimeofday(&self->stamp); in ali_ircc_dma_receive_complete()
1924 self->netdev->stats.rx_dropped++; in ali_ircc_dma_receive_complete()
1934 skb_copy_to_linear_data(skb, self->rx_buff.data, len); in ali_ircc_dma_receive_complete()
1937 self->rx_buff.data += len; in ali_ircc_dma_receive_complete()
1938 self->netdev->stats.rx_bytes += len; in ali_ircc_dma_receive_complete()
1939 self->netdev->stats.rx_packets++; in ali_ircc_dma_receive_complete()
1941 skb->dev = self->netdev; in ali_ircc_dma_receive_complete()
1965 struct ali_ircc_cb *self; in ali_ircc_sir_hard_xmit() local
1974 self = netdev_priv(dev); in ali_ircc_sir_hard_xmit()
1975 IRDA_ASSERT(self != NULL, return NETDEV_TX_OK;); in ali_ircc_sir_hard_xmit()
1977 iobase = self->io.sir_base; in ali_ircc_sir_hard_xmit()
1982 spin_lock_irqsave(&self->lock, flags); in ali_ircc_sir_hard_xmit()
1990 if ((speed != self->io.speed) && (speed != -1)) { in ali_ircc_sir_hard_xmit()
1993 ali_ircc_change_speed(self, speed); in ali_ircc_sir_hard_xmit()
1995 spin_unlock_irqrestore(&self->lock, flags); in ali_ircc_sir_hard_xmit()
1999 self->new_speed = speed; in ali_ircc_sir_hard_xmit()
2003 self->tx_buff.data = self->tx_buff.head; in ali_ircc_sir_hard_xmit()
2006 self->tx_buff.len = async_wrap_skb(skb, self->tx_buff.data, in ali_ircc_sir_hard_xmit()
2007 self->tx_buff.truesize); in ali_ircc_sir_hard_xmit()
2009 self->netdev->stats.tx_bytes += self->tx_buff.len; in ali_ircc_sir_hard_xmit()
2015 spin_unlock_irqrestore(&self->lock, flags); in ali_ircc_sir_hard_xmit()
2034 struct ali_ircc_cb *self; in ali_ircc_net_ioctl() local
2042 self = netdev_priv(dev); in ali_ircc_net_ioctl()
2044 IRDA_ASSERT(self != NULL, return -1;); in ali_ircc_net_ioctl()
2059 spin_lock_irqsave(&self->lock, flags); in ali_ircc_net_ioctl()
2060 ali_ircc_change_speed(self, irq->ifr_baudrate); in ali_ircc_net_ioctl()
2061 spin_unlock_irqrestore(&self->lock, flags); in ali_ircc_net_ioctl()
2067 irda_device_set_media_busy(self->netdev, TRUE); in ali_ircc_net_ioctl()
2072 irq->ifr_receiving = ali_ircc_is_receiving(self); in ali_ircc_net_ioctl()
2089 static int ali_ircc_is_receiving(struct ali_ircc_cb *self) in ali_ircc_is_receiving() argument
2097 IRDA_ASSERT(self != NULL, return FALSE;); in ali_ircc_is_receiving()
2099 spin_lock_irqsave(&self->lock, flags); in ali_ircc_is_receiving()
2101 if (self->io.speed > 115200) in ali_ircc_is_receiving()
2103 iobase = self->io.fir_base; in ali_ircc_is_receiving()
2116 status = (self->rx_buff.state != OUTSIDE_FRAME); in ali_ircc_is_receiving()
2119 spin_unlock_irqrestore(&self->lock, flags); in ali_ircc_is_receiving()
2128 struct ali_ircc_cb *self = platform_get_drvdata(dev); in ali_ircc_suspend() local
2132 if (self->io.suspended) in ali_ircc_suspend()
2135 ali_ircc_net_close(self->netdev); in ali_ircc_suspend()
2137 self->io.suspended = 1; in ali_ircc_suspend()
2144 struct ali_ircc_cb *self = platform_get_drvdata(dev); in ali_ircc_resume() local
2146 if (!self->io.suspended) in ali_ircc_resume()
2149 ali_ircc_net_open(self->netdev); in ali_ircc_resume()
2153 self->io.suspended = 0; in ali_ircc_resume()
2160 static void SetCOMInterrupts(struct ali_ircc_cb *self , unsigned char enable) in SetCOMInterrupts() argument
2165 int iobase = self->io.fir_base; /* or sir_base */ in SetCOMInterrupts()
2171 if (self->io.direction == IO_XMIT) in SetCOMInterrupts()
2173 if (self->io.speed > 115200) /* FIR, MIR */ in SetCOMInterrupts()
2175 newMask = self->ier; in SetCOMInterrupts()
2183 if (self->io.speed > 115200) /* FIR, MIR */ in SetCOMInterrupts()
2185 newMask = self->ier; in SetCOMInterrupts()
2200 if (self->io.speed > 115200) in SetCOMInterrupts()