Lines Matching refs:yp

462 	struct yam_port *yp = netdev_priv(dev);
463 int divisor = 115200 / yp->baudrate;
528 static inline void yam_rx_flag(struct net_device *dev, struct yam_port *yp)
530 if (yp->dcd && yp->rx_len >= 3 && yp->rx_len < YAM_MAX_FRAME) {
531 int pkt_len = yp->rx_len - 2 + 1; /* -CRC + kiss */
534 if ((yp->rx_crch & yp->rx_crcl) != 0xFF) {
544 memcpy(cp, yp->rx_buf, pkt_len - 1);
551 yp->rx_len = 0;
552 yp->rx_crcl = 0x21;
553 yp->rx_crch = 0xf3;
556 static inline void yam_rx_byte(struct net_device *dev, struct yam_port *yp, unsigned char rxb)
558 if (yp->rx_len < YAM_MAX_FRAME) {
559 unsigned char c = yp->rx_crcl;
560 yp->rx_crcl = (chktabl[c] ^ yp->rx_crch);
561 yp->rx_crch = (chktabh[c] ^ rxb);
562 yp->rx_buf[yp->rx_len++] = rxb;
583 struct yam_port *yp = netdev_priv(dev);
588 skb_queue_tail(&yp->send_queue, skb);
593 static void yam_start_tx(struct net_device *dev, struct yam_port *yp)
595 if ((yp->tx_state == TX_TAIL) || (yp->txd == 0))
596 yp->tx_count = 1;
598 yp->tx_count = (yp->bitrate * yp->txd) / 8000;
599 yp->tx_state = TX_HEAD;
605 struct yam_port *yp = netdev_priv(dev);
607 if (yp->magic != YAM_MAGIC || yp->tx_state != TX_OFF ||
608 skb_queue_empty(&yp->send_queue))
612 if (yp->dupmode) {
614 yam_start_tx(dev, yp);
617 if (yp->dcd) {
619 yp->slotcnt = yp->slot / 10;
623 if ((--yp->slotcnt) > 0)
626 yp->slotcnt = yp->slot / 10;
629 if ((prandom_u32() % 256) > yp->pers)
632 yam_start_tx(dev, yp);
648 static void yam_tx_byte(struct net_device *dev, struct yam_port *yp)
653 switch (yp->tx_state) {
657 if (--yp->tx_count <= 0) {
658 if (!(skb = skb_dequeue(&yp->send_queue))) {
660 yp->tx_state = TX_OFF;
663 yp->tx_state = TX_DATA;
669 yp->tx_len = skb->len - 1; /* strip KISS byte */
670 if (yp->tx_len >= YAM_MAX_FRAME || yp->tx_len < 2) {
675 yp->tx_buf,
676 yp->tx_len);
678 yp->tx_count = 0;
679 yp->tx_crcl = 0x21;
680 yp->tx_crch = 0xf3;
681 yp->tx_state = TX_DATA;
685 b = yp->tx_buf[yp->tx_count++];
687 temp = yp->tx_crcl;
688 yp->tx_crcl = chktabl[temp] ^ yp->tx_crch;
689 yp->tx_crch = chktabh[temp] ^ b;
690 if (yp->tx_count >= yp->tx_len) {
691 yp->tx_state = TX_CRC1;
695 yp->tx_crch = chktabl[yp->tx_crcl] ^ yp->tx_crch;
696 yp->tx_crcl = chktabh[yp->tx_crcl] ^ chktabl[yp->tx_crch] ^ 0xff;
697 outb(yp->tx_crcl, THR(dev->base_addr));
698 yp->tx_state = TX_CRC2;
701 outb(chktabh[yp->tx_crch] ^ 0xFF, THR(dev->base_addr));
702 if (skb_queue_empty(&yp->send_queue)) {
703 yp->tx_count = (yp->bitrate * yp->txtail) / 8000;
704 if (yp->dupmode == 2)
705 yp->tx_count += (yp->bitrate * yp->holdd) / 8;
706 if (yp->tx_count == 0)
707 yp->tx_count = 1;
708 yp->tx_state = TX_TAIL;
710 yp->tx_count = 1;
711 yp->tx_state = TX_HEAD;
716 if (--yp->tx_count <= 0) {
717 yp->tx_state = TX_OFF;
731 struct yam_port *yp;
739 yp = netdev_priv(dev);
754 yp->dcd = (msr & RX_DCD) ? 1 : 0;
762 ++yp->nb_mdint;
763 yam_tx_byte(dev, yp);
766 ++yp->nb_rxint;
769 yam_rx_flag(dev, yp);
771 yam_rx_byte(dev, yp, rxb);
799 const struct yam_port *yp = netdev_priv(dev);
803 seq_printf(seq, " Speed %u\n", yp->bitrate);
804 seq_printf(seq, " IoBase 0x%x\n", yp->iobase);
805 seq_printf(seq, " BaudRate %u\n", yp->baudrate);
806 seq_printf(seq, " IRQ %u\n", yp->irq);
807 seq_printf(seq, " TxState %u\n", yp->tx_state);
808 seq_printf(seq, " Duplex %u\n", yp->dupmode);
809 seq_printf(seq, " HoldDly %u\n", yp->holdd);
810 seq_printf(seq, " TxDelay %u\n", yp->txd);
811 seq_printf(seq, " TxTail %u\n", yp->txtail);
812 seq_printf(seq, " SlotTime %u\n", yp->slot);
813 seq_printf(seq, " Persist %u\n", yp->pers);
816 seq_printf(seq, " TxInt %u\n", yp->nb_mdint);
817 seq_printf(seq, " RxInt %u\n", yp->nb_rxint);
836 struct yam_port *yp = netdev_priv(dev);
843 if (!yp->bitrate)
859 if (fpga_download(dev->base_addr, yp->bitrate)) {
875 yp->slotcnt = yp->slot / 10;
899 struct yam_port *yp = netdev_priv(dev);
913 while ((skb = skb_dequeue(&yp->send_queue)))
925 struct yam_port *yp = netdev_priv(dev);
933 if (yp->magic != YAM_MAGIC)
981 yp->iobase = yi.cfg.iobase;
987 yp->irq = yi.cfg.irq;
993 yp->bitrate = yi.cfg.bitrate;
998 yp->baudrate = yi.cfg.baudrate;
1003 yp->dupmode = yi.cfg.mode;
1008 yp->holdd = yi.cfg.holddly;
1013 yp->txd = yi.cfg.txdelay;
1018 yp->txtail = yi.cfg.txtail;
1023 yp->pers = yi.cfg.persist;
1028 yp->slot = yi.cfg.slottime;
1029 yp->slotcnt = yp->slot / 10;
1036 yi.cfg.iobase = yp->iobase;
1037 yi.cfg.irq = yp->irq;
1038 yi.cfg.bitrate = yp->bitrate;
1039 yi.cfg.baudrate = yp->baudrate;
1040 yi.cfg.mode = yp->dupmode;
1041 yi.cfg.txdelay = yp->txd;
1042 yi.cfg.holddly = yp->holdd;
1043 yi.cfg.txtail = yp->txtail;
1044 yi.cfg.persist = yp->pers;
1045 yi.cfg.slottime = yp->slot;
1081 struct yam_port *yp = netdev_priv(dev);
1083 yp->magic = YAM_MAGIC;
1084 yp->bitrate = DEFAULT_BITRATE;
1085 yp->baudrate = DEFAULT_BITRATE * 2;
1086 yp->iobase = 0;
1087 yp->irq = 0;
1088 yp->dupmode = 0;
1089 yp->holdd = DEFAULT_HOLDD;
1090 yp->txd = DEFAULT_TXD;
1091 yp->txtail = DEFAULT_TXTAIL;
1092 yp->slot = DEFAULT_SLOT;
1093 yp->pers = DEFAULT_PERS;
1094 yp->dev = dev;
1096 dev->base_addr = yp->iobase;
1097 dev->irq = yp->irq;
1099 skb_queue_head_init(&yp->send_queue);