• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/net/irda/

Lines Matching refs:si

72 #define IS_FIR(si)		((si)->speed >= 4000000)
79 static int sa1100_irda_rx_alloc(struct sa1100_irda *si)
81 if (si->rxskb)
84 si->rxskb = alloc_skb(HPSIR_MAX_RXLEN + 1, GFP_ATOMIC);
86 if (!si->rxskb) {
95 skb_reserve(si->rxskb, 1);
97 si->rxbuf_dma = dma_map_single(si->dev, si->rxskb->data,
107 static void sa1100_irda_rx_dma_start(struct sa1100_irda *si)
109 if (!si->rxskb) {
117 Ser2HSCR0 = si->hscr0 | HSCR0_HSSP;
122 sa1100_clear_dma(si->rxdma);
123 sa1100_start_dma(si->rxdma, si->rxbuf_dma, HPSIR_MAX_RXLEN);
124 Ser2HSCR0 = si->hscr0 | HSCR0_HSSP | HSCR0_RXE;
130 static int sa1100_irda_set_speed(struct sa1100_irda *si, int speed)
143 if (IS_FIR(si))
144 sa1100_stop_dma(si->rxdma);
160 if (si->pdata->set_speed)
161 si->pdata->set_speed(si->dev, speed);
163 si->speed = speed;
172 si->hscr0 = 0;
175 Ser2HSCR0 = si->hscr0 | HSCR0_HSSP;
178 si->speed = speed;
180 if (si->pdata->set_speed)
181 si->pdata->set_speed(si->dev, speed);
183 sa1100_irda_rx_alloc(si);
184 sa1100_irda_rx_dma_start(si);
208 __sa1100_irda_set_power(struct sa1100_irda *si, unsigned int state)
211 if (si->pdata->set_power)
212 ret = si->pdata->set_power(si->dev, state);
217 sa1100_set_power(struct sa1100_irda *si, unsigned int state)
221 ret = __sa1100_irda_set_power(si, state);
223 si->power = state;
228 static int sa1100_irda_startup(struct sa1100_irda *si)
235 if (si->pdata->startup) {
236 ret = si->pdata->startup(si->dev);
254 Ser2UTCR4 = si->utcr4;
263 ret = sa1100_irda_set_speed(si, si->speed = 9600);
268 if (si->pdata->shutdown)
269 si->pdata->shutdown(si->dev);
275 static void sa1100_irda_shutdown(struct sa1100_irda *si)
280 sa1100_stop_dma(si->rxdma);
281 sa1100_stop_dma(si->txdma);
287 if (si->pdata->shutdown)
288 si->pdata->shutdown(si->dev);
298 struct sa1100_irda *si;
303 si = netdev_priv(dev);
304 if (si->open) {
310 sa1100_irda_shutdown(si);
311 __sa1100_irda_set_power(si, 0);
323 struct sa1100_irda *si;
328 si = netdev_priv(dev);
329 if (si->open) {
337 if (si->newspeed) {
338 si->speed = si->newspeed;
339 si->newspeed = 0;
342 sa1100_irda_startup(si);
343 __sa1100_irda_set_power(si, si->power);
364 struct sa1100_irda *si = netdev_priv(dev);
386 async_unwrap_char(dev, &dev->stats, &si->rx_buff, data);
401 async_unwrap_char(dev, &dev->stats, &si->rx_buff, Ser2UTDR);
402 async_unwrap_char(dev, &dev->stats, &si->rx_buff, Ser2UTDR);
403 async_unwrap_char(dev, &dev->stats, &si->rx_buff, Ser2UTDR);
411 async_unwrap_char(dev, &dev->stats, &si->rx_buff,
417 if (status & UTSR0_TFS && si->tx_buff.len) {
422 Ser2UTDR = *si->tx_buff.data++;
423 si->tx_buff.len -= 1;
424 } while (Ser2UTSR1 & UTSR1_TNF && si->tx_buff.len);
426 if (si->tx_buff.len == 0) {
428 dev->stats.tx_bytes += si->tx_buff.data -
429 si->tx_buff.head;
447 if (si->newspeed) {
448 sa1100_irda_set_speed(si, si->newspeed);
449 si->newspeed = 0;
458 static void sa1100_irda_fir_error(struct sa1100_irda *si, struct net_device *dev)
460 struct sk_buff *skb = si->rxskb;
472 dma_addr = sa1100_get_dma_pos(si->rxdma);
473 len = dma_addr - si->rxbuf_dma;
476 dma_unmap_single(si->dev, si->rxbuf_dma, len, DMA_FROM_DEVICE);
504 si->rxskb = NULL;
516 sa1100_irda_rx_alloc(si);
523 si->rxbuf_dma = dma_map_single(si->dev, si->rxskb->data,
537 struct sa1100_irda *si = netdev_priv(dev);
542 sa1100_stop_dma(si->rxdma);
558 Ser2HSCR0 = si->hscr0 | HSCR0_HSSP;
574 sa1100_irda_fir_error(si, dev);
579 sa1100_irda_rx_dma_start(si);
598 struct sa1100_irda *si = netdev_priv(dev);
599 struct sk_buff *skb = si->txskb;
601 si->txskb = NULL;
622 if (si->newspeed) {
623 sa1100_irda_set_speed(si, si->newspeed);
624 si->newspeed = 0;
631 sa1100_irda_rx_dma_start(si);
637 dma_unmap_single(si->dev, si->txbuf_dma, skb->len, DMA_TO_DEVICE);
652 struct sa1100_irda *si = netdev_priv(dev);
660 if (speed != si->speed && speed != -1)
661 si->newspeed = speed;
667 if (si->newspeed) {
668 si->newspeed = 0;
669 sa1100_irda_set_speed(si, speed);
675 if (!IS_FIR(si)) {
678 si->tx_buff.data = si->tx_buff.head;
679 si->tx_buff.len = async_wrap_skb(skb, si->tx_buff.data,
680 si->tx_buff.truesize);
697 BUG_ON(si->txskb);
701 si->txskb = skb;
702 si->txbuf_dma = dma_map_single(si->dev, skb->data,
705 sa1100_start_dma(si->txdma, si->txbuf_dma, skb->len);
715 Ser2HSCR0 = si->hscr0 | HSCR0_HSSP | HSCR0_TXE;
725 struct sa1100_irda *si = netdev_priv(dev);
735 if (si->open) {
736 ret = sa1100_irda_set_speed(si,
754 rq->ifr_receiving = IS_FIR(si) ? 0
755 : si->rx_buff.state != OUTSIDE_FRAME;
767 struct sa1100_irda *si = netdev_priv(dev);
770 si->speed = 9600;
777 NULL, NULL, &si->rxdma);
782 sa1100_irda_txdma_irq, dev, &si->txdma);
794 err = sa1100_irda_startup(si);
801 si->irlap = irlap_open(dev, &si->qos, "sa1100");
803 if (!si->irlap)
809 si->open = 1;
810 sa1100_set_power(si, power_level); /* low power mode */
816 si->open = 0;
817 sa1100_irda_shutdown(si);
819 sa1100_free_dma(si->txdma);
821 sa1100_free_dma(si->rxdma);
830 struct sa1100_irda *si = netdev_priv(dev);
833 sa1100_irda_shutdown(si);
839 if (si->rxskb) {
840 dma_unmap_single(si->dev, si->rxbuf_dma, HPSIR_MAX_RXLEN,
842 dev_kfree_skb(si->rxskb);
843 si->rxskb = NULL;
847 if (si->irlap) {
848 irlap_close(si->irlap);
849 si->irlap = NULL;
853 si->open = 0;
858 sa1100_free_dma(si->txdma);
859 sa1100_free_dma(si->rxdma);
862 sa1100_set_power(si, 0);
889 struct sa1100_irda *si;
910 si = netdev_priv(dev);
911 si->dev = &pdev->dev;
912 si->pdata = pdev->dev.platform_data;
917 err = sa1100_irda_init_iobuf(&si->rx_buff, 14384);
920 err = sa1100_irda_init_iobuf(&si->tx_buff, 4000);
927 irda_init_max_qos_capabilies(&si->qos);
943 si->qos.baud_rate.bits &= baudrate_mask;
944 si->qos.min_turn_time.bits = 7;
946 irda_qos_bits_to_value(&si->qos);
948 si->utcr4 = UTCR4_HPSIR;
950 si->utcr4 |= UTCR4_Z1_6us;
957 Ser2UTCR4 = si->utcr4;
966 kfree(si->tx_buff.head);
967 kfree(si->rx_buff.head);
985 struct sa1100_irda *si = netdev_priv(dev);
987 kfree(si->tx_buff.head);
988 kfree(si->rx_buff.head);