Lines Matching refs:aup
212 static struct db_dest *GetFreeDB(struct au1k_private *aup) in GetFreeDB() argument
215 db = aup->pDBfree; in GetFreeDB()
218 aup->pDBfree = db->pnext; in GetFreeDB()
249 static void setup_hw_rings(struct au1k_private *aup, u32 rx_base, u32 tx_base) in setup_hw_rings() argument
253 aup->rx_ring[i] = (volatile struct ring_dest *) in setup_hw_rings()
257 aup->tx_ring[i] = (volatile struct ring_dest *) in setup_hw_rings()
279 struct au1k_private *aup = netdev_priv(dev); in au1k_irda_set_speed() local
284 if (speed == aup->speed) in au1k_irda_set_speed()
288 au1k_irda_plat_set_phy_mode(aup, AU1000_IRDA_PHY_MODE_OFF); in au1k_irda_set_speed()
289 irda_write(aup, IR_STATUS, irda_read(aup, IR_STATUS) & ~IR_PHYEN); in au1k_irda_set_speed()
292 irda_write(aup, IR_CONFIG_1, in au1k_irda_set_speed()
293 irda_read(aup, IR_CONFIG_1) & ~(IR_RX_ENABLE | IR_TX_ENABLE)); in au1k_irda_set_speed()
295 while (irda_read(aup, IR_STATUS) & (IR_RX_STATUS | IR_TX_STATUS)) { in au1k_irda_set_speed()
305 irda_write(aup, IR_CONFIG_1, in au1k_irda_set_speed()
306 irda_read(aup, IR_CONFIG_1) & ~IR_DMA_ENABLE); in au1k_irda_set_speed()
310 aup->tx_head = aup->tx_tail = aup->rx_head = 0; in au1k_irda_set_speed()
312 ptxd = aup->tx_ring[i]; in au1k_irda_set_speed()
319 ptxd = aup->rx_ring[i]; in au1k_irda_set_speed()
326 au1k_irda_plat_set_phy_mode(aup, AU1000_IRDA_PHY_MODE_FIR); in au1k_irda_set_speed()
328 au1k_irda_plat_set_phy_mode(aup, AU1000_IRDA_PHY_MODE_SIR); in au1k_irda_set_speed()
332 irda_write(aup, IR_WRITE_PHY_CONFIG, IR_BR(11) | IR_PW(12)); in au1k_irda_set_speed()
333 irda_write(aup, IR_CONFIG_1, IR_SIR_MODE); in au1k_irda_set_speed()
336 irda_write(aup, IR_WRITE_PHY_CONFIG, IR_BR(5) | IR_PW(12)); in au1k_irda_set_speed()
337 irda_write(aup, IR_CONFIG_1, IR_SIR_MODE); in au1k_irda_set_speed()
340 irda_write(aup, IR_WRITE_PHY_CONFIG, IR_BR(2) | IR_PW(12)); in au1k_irda_set_speed()
341 irda_write(aup, IR_CONFIG_1, IR_SIR_MODE); in au1k_irda_set_speed()
344 irda_write(aup, IR_WRITE_PHY_CONFIG, IR_BR(1) | IR_PW(12)); in au1k_irda_set_speed()
345 irda_write(aup, IR_CONFIG_1, IR_SIR_MODE); in au1k_irda_set_speed()
348 irda_write(aup, IR_WRITE_PHY_CONFIG, IR_PW(12)); in au1k_irda_set_speed()
349 irda_write(aup, IR_CONFIG_1, IR_SIR_MODE); in au1k_irda_set_speed()
352 irda_write(aup, IR_WRITE_PHY_CONFIG, IR_P(15)); in au1k_irda_set_speed()
353 irda_write(aup, IR_CONFIG_1, IR_FIR | IR_DMA_ENABLE | in au1k_irda_set_speed()
362 aup->speed = speed; in au1k_irda_set_speed()
363 irda_write(aup, IR_STATUS, irda_read(aup, IR_STATUS) | IR_PHYEN); in au1k_irda_set_speed()
365 control = irda_read(aup, IR_STATUS); in au1k_irda_set_speed()
366 irda_write(aup, IR_RING_PROMPT, 0); in au1k_irda_set_speed()
419 struct au1k_private *aup = netdev_priv(dev); in au1k_tx_ack() local
422 ptxd = aup->tx_ring[aup->tx_tail]; in au1k_tx_ack()
423 while (!(ptxd->flags & AU_OWN) && (aup->tx_tail != aup->tx_head)) { in au1k_tx_ack()
429 aup->tx_tail = (aup->tx_tail + 1) & (NUM_IR_DESC - 1); in au1k_tx_ack()
430 ptxd = aup->tx_ring[aup->tx_tail]; in au1k_tx_ack()
432 if (aup->tx_full) { in au1k_tx_ack()
433 aup->tx_full = 0; in au1k_tx_ack()
438 if (aup->tx_tail == aup->tx_head) { in au1k_tx_ack()
439 if (aup->newspeed) { in au1k_tx_ack()
440 au1k_irda_set_speed(dev, aup->newspeed); in au1k_tx_ack()
441 aup->newspeed = 0; in au1k_tx_ack()
443 irda_write(aup, IR_CONFIG_1, in au1k_tx_ack()
444 irda_read(aup, IR_CONFIG_1) & ~IR_TX_ENABLE); in au1k_tx_ack()
445 irda_write(aup, IR_CONFIG_1, in au1k_tx_ack()
446 irda_read(aup, IR_CONFIG_1) | IR_RX_ENABLE); in au1k_tx_ack()
447 irda_write(aup, IR_RING_PROMPT, 0); in au1k_tx_ack()
454 struct au1k_private *aup = netdev_priv(dev); in au1k_irda_rx() local
460 prxd = aup->rx_ring[aup->rx_head]; in au1k_irda_rx()
464 pDB = aup->rx_db_inuse[aup->rx_head]; in au1k_irda_rx()
475 if (aup->speed == 4000000) in au1k_irda_rx()
489 aup->rx_head = (aup->rx_head + 1) & (NUM_IR_DESC - 1); in au1k_irda_rx()
490 irda_write(aup, IR_RING_PROMPT, 0); in au1k_irda_rx()
493 prxd = aup->rx_ring[aup->rx_head]; in au1k_irda_rx()
503 struct au1k_private *aup = netdev_priv(dev); in au1k_irda_interrupt() local
505 irda_write(aup, IR_INT_CLEAR, 0); /* ack irda interrupts */ in au1k_irda_interrupt()
515 struct au1k_private *aup = netdev_priv(dev); in au1k_init() local
547 aup->irda_clk = c; in au1k_init()
553 aup->tx_head = 0; in au1k_init()
554 aup->tx_tail = 0; in au1k_init()
555 aup->rx_head = 0; in au1k_init()
558 aup->rx_ring[i]->flags = AU_OWN; in au1k_init()
560 irda_write(aup, IR_ENABLE, enable); in au1k_init()
564 au1k_irda_plat_set_phy_mode(aup, AU1000_IRDA_PHY_MODE_OFF); in au1k_init()
565 irda_write(aup, IR_STATUS, irda_read(aup, IR_STATUS) & ~IR_PHYEN); in au1k_init()
568 irda_write(aup, IR_MAX_PKT_LEN, MAX_BUF_SIZE); in au1k_init()
570 ring_address = (u32)virt_to_phys((void *)aup->rx_ring[0]); in au1k_init()
571 irda_write(aup, IR_RING_BASE_ADDR_H, ring_address >> 26); in au1k_init()
572 irda_write(aup, IR_RING_BASE_ADDR_L, (ring_address >> 10) & 0xffff); in au1k_init()
574 irda_write(aup, IR_RING_SIZE, in au1k_init()
577 irda_write(aup, IR_CONFIG_2, phyck | IR_ONE_PIN); in au1k_init()
578 irda_write(aup, IR_RING_ADDR_CMPR, 0); in au1k_init()
586 struct au1k_private *aup = netdev_priv(dev); in au1k_irda_start() local
596 retval = request_irq(aup->irq_tx, &au1k_irda_interrupt, 0, in au1k_irda_start()
603 retval = request_irq(aup->irq_rx, &au1k_irda_interrupt, 0, in au1k_irda_start()
606 free_irq(aup->irq_tx, dev); in au1k_irda_start()
614 aup->irlap = irlap_open(dev, &aup->qos, hwname); in au1k_irda_start()
618 irda_write(aup, IR_CONFIG_2, irda_read(aup, IR_CONFIG_2) | IR_IEN); in au1k_irda_start()
621 au1k_irda_plat_set_phy_mode(aup, AU1000_IRDA_PHY_MODE_SIR); in au1k_irda_start()
623 aup->timer.expires = RUN_AT((3 * HZ)); in au1k_irda_start()
624 aup->timer.data = (unsigned long)dev; in au1k_irda_start()
630 struct au1k_private *aup = netdev_priv(dev); in au1k_irda_stop() local
632 au1k_irda_plat_set_phy_mode(aup, AU1000_IRDA_PHY_MODE_OFF); in au1k_irda_stop()
635 irda_write(aup, IR_CONFIG_2, irda_read(aup, IR_CONFIG_2) & ~IR_IEN); in au1k_irda_stop()
636 irda_write(aup, IR_CONFIG_1, 0); in au1k_irda_stop()
637 irda_write(aup, IR_ENABLE, 0); /* disable clock */ in au1k_irda_stop()
639 if (aup->irlap) { in au1k_irda_stop()
640 irlap_close(aup->irlap); in au1k_irda_stop()
641 aup->irlap = NULL; in au1k_irda_stop()
645 del_timer(&aup->timer); in au1k_irda_stop()
648 free_irq(aup->irq_tx, dev); in au1k_irda_stop()
649 free_irq(aup->irq_rx, dev); in au1k_irda_stop()
651 clk_disable_unprepare(aup->irda_clk); in au1k_irda_stop()
652 clk_put(aup->irda_clk); in au1k_irda_stop()
662 struct au1k_private *aup = netdev_priv(dev); in au1k_irda_hard_xmit() local
668 if (speed != aup->speed && speed != -1) in au1k_irda_hard_xmit()
669 aup->newspeed = speed; in au1k_irda_hard_xmit()
671 if ((skb->len == 0) && (aup->newspeed)) { in au1k_irda_hard_xmit()
672 if (aup->tx_tail == aup->tx_head) { in au1k_irda_hard_xmit()
674 aup->newspeed = 0; in au1k_irda_hard_xmit()
680 ptxd = aup->tx_ring[aup->tx_head]; in au1k_irda_hard_xmit()
686 aup->tx_full = 1; in au1k_irda_hard_xmit()
688 } else if (((aup->tx_head + 1) & (NUM_IR_DESC - 1)) == aup->tx_tail) { in au1k_irda_hard_xmit()
691 aup->tx_full = 1; in au1k_irda_hard_xmit()
695 pDB = aup->tx_db_inuse[aup->tx_head]; in au1k_irda_hard_xmit()
698 if (irda_read(aup, IR_RX_BYTE_CNT) != 0) { in au1k_irda_hard_xmit()
700 irda_read(aup, IR_RX_BYTE_CNT)); in au1k_irda_hard_xmit()
704 if (aup->speed == 4000000) { in au1k_irda_hard_xmit()
719 irda_write(aup, IR_CONFIG_1, in au1k_irda_hard_xmit()
720 irda_read(aup, IR_CONFIG_1) | IR_TX_ENABLE); in au1k_irda_hard_xmit()
721 irda_write(aup, IR_RING_PROMPT, 0); in au1k_irda_hard_xmit()
724 aup->tx_head = (aup->tx_head + 1) & (NUM_IR_DESC - 1); in au1k_irda_hard_xmit()
735 struct au1k_private *aup = netdev_priv(dev); in au1k_tx_timeout() local
738 speed = aup->speed; in au1k_tx_timeout()
739 aup->speed = 0; in au1k_tx_timeout()
741 aup->tx_full = 0; in au1k_tx_timeout()
748 struct au1k_private *aup = netdev_priv(dev); in au1k_irda_ioctl() local
758 if (aup->open) in au1k_irda_ioctl()
796 struct au1k_private *aup = netdev_priv(dev); in au1k_irda_net_init() local
801 err = au1k_irda_init_iobuf(&aup->rx_buff, 14384); in au1k_irda_net_init()
807 irda_init_max_qos_capabilies(&aup->qos); in au1k_irda_net_init()
810 aup->qos.baud_rate.bits = IR_9600 | IR_19200 | IR_38400 | in au1k_irda_net_init()
813 aup->qos.min_turn_time.bits = qos_mtt_bits; in au1k_irda_net_init()
814 irda_qos_bits_to_value(&aup->qos); in au1k_irda_net_init()
820 aup->rx_ring[0] = (struct ring_dest *) in au1k_irda_net_init()
823 if (!aup->rx_ring[0]) in au1k_irda_net_init()
827 aup->db[0].vaddr = in au1k_irda_net_init()
829 if (!aup->db[0].vaddr) in au1k_irda_net_init()
832 setup_hw_rings(aup, (u32)aup->rx_ring[0], (u32)aup->rx_ring[0] + 512); in au1k_irda_net_init()
835 pDB = aup->db; in au1k_irda_net_init()
840 (u32 *)((unsigned)aup->db[0].vaddr + (MAX_BUF_SIZE * i)); in au1k_irda_net_init()
844 aup->pDBfree = pDBfree; in au1k_irda_net_init()
848 pDB = GetFreeDB(aup); in au1k_irda_net_init()
851 aup->rx_ring[i]->addr_0 = (u8)(pDB->dma_addr & 0xff); in au1k_irda_net_init()
852 aup->rx_ring[i]->addr_1 = (u8)((pDB->dma_addr >> 8) & 0xff); in au1k_irda_net_init()
853 aup->rx_ring[i]->addr_2 = (u8)((pDB->dma_addr >> 16) & 0xff); in au1k_irda_net_init()
854 aup->rx_ring[i]->addr_3 = (u8)((pDB->dma_addr >> 24) & 0xff); in au1k_irda_net_init()
855 aup->rx_db_inuse[i] = pDB; in au1k_irda_net_init()
858 pDB = GetFreeDB(aup); in au1k_irda_net_init()
861 aup->tx_ring[i]->addr_0 = (u8)(pDB->dma_addr & 0xff); in au1k_irda_net_init()
862 aup->tx_ring[i]->addr_1 = (u8)((pDB->dma_addr >> 8) & 0xff); in au1k_irda_net_init()
863 aup->tx_ring[i]->addr_2 = (u8)((pDB->dma_addr >> 16) & 0xff); in au1k_irda_net_init()
864 aup->tx_ring[i]->addr_3 = (u8)((pDB->dma_addr >> 24) & 0xff); in au1k_irda_net_init()
865 aup->tx_ring[i]->count_0 = 0; in au1k_irda_net_init()
866 aup->tx_ring[i]->count_1 = 0; in au1k_irda_net_init()
867 aup->tx_ring[i]->flags = 0; in au1k_irda_net_init()
868 aup->tx_db_inuse[i] = pDB; in au1k_irda_net_init()
874 dma_free((void *)aup->rx_ring[0], in au1k_irda_net_init()
877 kfree(aup->rx_buff.head); in au1k_irda_net_init()
885 struct au1k_private *aup; in au1k_irda_probe() local
895 aup = netdev_priv(dev); in au1k_irda_probe()
897 aup->platdata = pdev->dev.platform_data; in au1k_irda_probe()
904 aup->irq_tx = r->start; in au1k_irda_probe()
910 aup->irq_rx = r->start; in au1k_irda_probe()
917 aup->ioarea = request_mem_region(r->start, resource_size(r), in au1k_irda_probe()
919 if (!aup->ioarea) in au1k_irda_probe()
930 aup->iobase = ioremap_nocache(r->start, resource_size(r)); in au1k_irda_probe()
931 if (!aup->iobase) in au1k_irda_probe()
934 dev->irq = aup->irq_rx; in au1k_irda_probe()
949 dma_free((void *)aup->db[0].vaddr, in au1k_irda_probe()
951 dma_free((void *)aup->rx_ring[0], in au1k_irda_probe()
953 kfree(aup->rx_buff.head); in au1k_irda_probe()
955 iounmap(aup->iobase); in au1k_irda_probe()
957 release_resource(aup->ioarea); in au1k_irda_probe()
958 kfree(aup->ioarea); in au1k_irda_probe()
967 struct au1k_private *aup = netdev_priv(dev); in au1k_irda_remove() local
971 dma_free((void *)aup->db[0].vaddr, in au1k_irda_remove()
973 dma_free((void *)aup->rx_ring[0], in au1k_irda_remove()
975 kfree(aup->rx_buff.head); in au1k_irda_remove()
977 iounmap(aup->iobase); in au1k_irda_remove()
978 release_resource(aup->ioarea); in au1k_irda_remove()
979 kfree(aup->ioarea); in au1k_irda_remove()