Lines Matching refs:sc

98 static void lmc_initcsrs(lmc_softc_t * const sc, lmc_csrptr_t csr_base, size_t csr_size);
103 static void lmc_reset(lmc_softc_t * const sc);
104 static void lmc_dec_reset(lmc_softc_t * const sc);
113 lmc_softc_t *sc = dev_to_sc(dev); in lmc_ioctl() local
132 if (copy_to_user(ifr->ifr_data, &sc->ictl, sizeof(lmc_ctl_t))) in lmc_ioctl()
154 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_ioctl()
155 sc->lmc_media->set_status (sc, &ctl); in lmc_ioctl()
157 if(ctl.crc_length != sc->ictl.crc_length) { in lmc_ioctl()
158 sc->lmc_media->set_crc_length(sc, ctl.crc_length); in lmc_ioctl()
159 if (sc->ictl.crc_length == LMC_CTL_CRC_LENGTH_16) in lmc_ioctl()
160 sc->TxDescriptControlInit |= LMC_TDES_ADD_CRC_DISABLE; in lmc_ioctl()
162 sc->TxDescriptControlInit &= ~LMC_TDES_ADD_CRC_DISABLE; in lmc_ioctl()
164 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_ioctl()
171 u16 old_type = sc->if_type; in lmc_ioctl()
191 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_ioctl()
192 lmc_proto_close(sc); in lmc_ioctl()
194 sc->if_type = new_type; in lmc_ioctl()
195 lmc_proto_attach(sc); in lmc_ioctl()
196 ret = lmc_proto_open(sc); in lmc_ioctl()
197 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_ioctl()
202 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_ioctl()
203 sc->lmc_xinfo.Magic0 = 0xBEEFCAFE; in lmc_ioctl()
205 sc->lmc_xinfo.PciCardType = sc->lmc_cardtype; in lmc_ioctl()
206 sc->lmc_xinfo.PciSlotNumber = 0; in lmc_ioctl()
207 sc->lmc_xinfo.DriverMajorVersion = DRIVER_MAJOR_VERSION; in lmc_ioctl()
208 sc->lmc_xinfo.DriverMinorVersion = DRIVER_MINOR_VERSION; in lmc_ioctl()
209 sc->lmc_xinfo.DriverSubVersion = DRIVER_SUB_VERSION; in lmc_ioctl()
210 sc->lmc_xinfo.XilinxRevisionNumber = in lmc_ioctl()
211 lmc_mii_readreg (sc, 0, 3) & 0xf; in lmc_ioctl()
212 sc->lmc_xinfo.MaxFrameSize = LMC_PKT_BUF_SZ; in lmc_ioctl()
213 sc->lmc_xinfo.link_status = sc->lmc_media->get_link_status (sc); in lmc_ioctl()
214 sc->lmc_xinfo.mii_reg16 = lmc_mii_readreg (sc, 0, 16); in lmc_ioctl()
215 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_ioctl()
217 sc->lmc_xinfo.Magic1 = 0xDEADBEEF; in lmc_ioctl()
219 if (copy_to_user(ifr->ifr_data, &sc->lmc_xinfo, in lmc_ioctl()
228 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_ioctl()
229 if (sc->lmc_cardtype == LMC_CARDTYPE_T1) { in lmc_ioctl()
230 lmc_mii_writereg(sc, 0, 17, T1FRAMER_FERR_LSB); in lmc_ioctl()
231 sc->extra_stats.framingBitErrorCount += in lmc_ioctl()
232 lmc_mii_readreg(sc, 0, 18) & 0xff; in lmc_ioctl()
233 lmc_mii_writereg(sc, 0, 17, T1FRAMER_FERR_MSB); in lmc_ioctl()
234 sc->extra_stats.framingBitErrorCount += in lmc_ioctl()
235 (lmc_mii_readreg(sc, 0, 18) & 0xff) << 8; in lmc_ioctl()
236 lmc_mii_writereg(sc, 0, 17, T1FRAMER_LCV_LSB); in lmc_ioctl()
237 sc->extra_stats.lineCodeViolationCount += in lmc_ioctl()
238 lmc_mii_readreg(sc, 0, 18) & 0xff; in lmc_ioctl()
239 lmc_mii_writereg(sc, 0, 17, T1FRAMER_LCV_MSB); in lmc_ioctl()
240 sc->extra_stats.lineCodeViolationCount += in lmc_ioctl()
241 (lmc_mii_readreg(sc, 0, 18) & 0xff) << 8; in lmc_ioctl()
242 lmc_mii_writereg(sc, 0, 17, T1FRAMER_AERR); in lmc_ioctl()
243 regVal = lmc_mii_readreg(sc, 0, 18) & 0xff; in lmc_ioctl()
245 sc->extra_stats.lossOfFrameCount += in lmc_ioctl()
247 sc->extra_stats.changeOfFrameAlignmentCount += in lmc_ioctl()
249 sc->extra_stats.severelyErroredFrameCount += in lmc_ioctl()
252 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_ioctl()
253 if (copy_to_user(ifr->ifr_data, &sc->lmc_device->stats, in lmc_ioctl()
254 sizeof(sc->lmc_device->stats)) || in lmc_ioctl()
255 copy_to_user(ifr->ifr_data + sizeof(sc->lmc_device->stats), in lmc_ioctl()
256 &sc->extra_stats, sizeof(sc->extra_stats))) in lmc_ioctl()
268 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_ioctl()
269 memset(&sc->lmc_device->stats, 0, sizeof(sc->lmc_device->stats)); in lmc_ioctl()
270 memset(&sc->extra_stats, 0, sizeof(sc->extra_stats)); in lmc_ioctl()
271 sc->extra_stats.check = STATCHECK; in lmc_ioctl()
272 sc->extra_stats.version_size = (DRIVER_VERSION << 16) + in lmc_ioctl()
273 sizeof(sc->lmc_device->stats) + sizeof(sc->extra_stats); in lmc_ioctl()
274 sc->extra_stats.lmc_cardtype = sc->lmc_cardtype; in lmc_ioctl()
275 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_ioctl()
294 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_ioctl()
295 sc->lmc_media->set_circuit_type(sc, ctl.circuit_type); in lmc_ioctl()
296 sc->ictl.circuit_type = ctl.circuit_type; in lmc_ioctl()
297 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_ioctl()
308 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_ioctl()
310 printk (" REG16 before reset +%04x\n", lmc_mii_readreg (sc, 0, 16)); in lmc_ioctl()
312 printk (" REG16 after reset +%04x\n", lmc_mii_readreg (sc, 0, 16)); in lmc_ioctl()
314 … LMC_EVENT_LOG(LMC_EVENT_FORCEDRESET, LMC_CSR_READ (sc, csr_status), lmc_mii_readreg (sc, 0, 16)); in lmc_ioctl()
315 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_ioctl()
335 if (sc->lmc_cardtype != LMC_CARDTYPE_T1){ in lmc_ioctl()
362 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_ioctl()
363 mii = lmc_mii_readreg (sc, 0, 16); in lmc_ioctl()
368 lmc_gpio_mkinput(sc, 0xff); in lmc_ioctl()
373 lmc_gpio_mkoutput(sc, LMC_GEP_RESET); in lmc_ioctl()
381 sc->lmc_gpio &= ~LMC_GEP_RESET; in lmc_ioctl()
382 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); in lmc_ioctl()
390 sc->lmc_gpio |= LMC_GEP_RESET; in lmc_ioctl()
391 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); in lmc_ioctl()
397 lmc_gpio_mkinput(sc, 0xff); in lmc_ioctl()
400 sc->lmc_media->set_link_status (sc, 1); in lmc_ioctl()
401 sc->lmc_media->set_status (sc, NULL); in lmc_ioctl()
407 lmc_led_on(sc, LMC_DS3_LED0); in lmc_ioctl()
409 lmc_led_off(sc, LMC_DS3_LED0); in lmc_ioctl()
410 lmc_led_on(sc, LMC_DS3_LED1); in lmc_ioctl()
412 lmc_led_off(sc, LMC_DS3_LED1); in lmc_ioctl()
413 lmc_led_on(sc, LMC_DS3_LED3); in lmc_ioctl()
415 lmc_led_off(sc, LMC_DS3_LED3); in lmc_ioctl()
416 lmc_led_on(sc, LMC_DS3_LED2); in lmc_ioctl()
418 lmc_led_off(sc, LMC_DS3_LED2); in lmc_ioctl()
421 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_ioctl()
434 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_ioctl()
435 mii = lmc_mii_readreg (sc, 0, 16); in lmc_ioctl()
440 lmc_gpio_mkinput(sc, 0xff); in lmc_ioctl()
445 lmc_gpio_mkoutput(sc, LMC_GEP_DP | LMC_GEP_RESET); in lmc_ioctl()
453 sc->lmc_gpio &= ~(LMC_GEP_RESET | LMC_GEP_DP); in lmc_ioctl()
454 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); in lmc_ioctl()
462 sc->lmc_gpio |= LMC_GEP_DP | LMC_GEP_RESET; in lmc_ioctl()
463 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); in lmc_ioctl()
468 while( (LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0 && in lmc_ioctl()
476 lmc_gpio_mkinput(sc, 0xff); in lmc_ioctl()
477 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_ioctl()
512 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_ioctl()
513 lmc_gpio_mkinput(sc, 0xff); in lmc_ioctl()
526 sc->lmc_gpio = 0x00; in lmc_ioctl()
527 sc->lmc_gpio &= ~LMC_GEP_DP; in lmc_ioctl()
528 sc->lmc_gpio &= ~LMC_GEP_RESET; in lmc_ioctl()
529 sc->lmc_gpio |= LMC_GEP_MODE; in lmc_ioctl()
530 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); in lmc_ioctl()
532 lmc_gpio_mkoutput(sc, LMC_GEP_MODE | LMC_GEP_DP | LMC_GEP_RESET); in lmc_ioctl()
547 lmc_gpio_mkinput(sc, LMC_GEP_DP | LMC_GEP_RESET); in lmc_ioctl()
552 sc->lmc_gpio = 0x00; in lmc_ioctl()
553 sc->lmc_gpio |= LMC_GEP_MODE; in lmc_ioctl()
554 sc->lmc_gpio |= LMC_GEP_DATA; in lmc_ioctl()
555 sc->lmc_gpio |= LMC_GEP_CLK; in lmc_ioctl()
556 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); in lmc_ioctl()
558 lmc_gpio_mkoutput(sc, LMC_GEP_DATA | LMC_GEP_CLK | LMC_GEP_MODE ); in lmc_ioctl()
563 while( (LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0 && in lmc_ioctl()
572 sc->lmc_gpio &= ~LMC_GEP_DATA; /* Data is 0 */ in lmc_ioctl()
575 sc->lmc_gpio |= LMC_GEP_DATA; /* Data is 1 */ in lmc_ioctl()
579 sc->lmc_gpio |= LMC_GEP_DATA; /* Assume it's 1 */ in lmc_ioctl()
581 sc->lmc_gpio &= ~LMC_GEP_CLK; /* Clock to zero */ in lmc_ioctl()
582 sc->lmc_gpio |= LMC_GEP_MODE; in lmc_ioctl()
583 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); in lmc_ioctl()
586 sc->lmc_gpio |= LMC_GEP_CLK; /* Put the clack back to one */ in lmc_ioctl()
587 sc->lmc_gpio |= LMC_GEP_MODE; in lmc_ioctl()
588 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); in lmc_ioctl()
591 if((LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0){ in lmc_ioctl()
594 else if((LMC_CSR_READ(sc, csr_gp) & LMC_GEP_DP) == 0){ in lmc_ioctl()
601 lmc_gpio_mkinput(sc, 0xff); in lmc_ioctl()
603 sc->lmc_miireg16 |= LMC_MII16_FIFO_RESET; in lmc_ioctl()
604 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); in lmc_ioctl()
606 sc->lmc_miireg16 &= ~LMC_MII16_FIFO_RESET; in lmc_ioctl()
607 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); in lmc_ioctl()
608 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_ioctl()
622 sc->lmc_txfull = 0; in lmc_ioctl()
628 ret = lmc_proto_ioctl (sc, ifr, cmd); in lmc_ioctl()
642 lmc_softc_t *sc = dev_to_sc(dev); in lmc_watchdog() local
649 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_watchdog()
651 if(sc->check != 0xBEAFCAFE){ in lmc_watchdog()
653 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_watchdog()
662 LMC_CSR_WRITE (sc, csr_15, 0x00000011); in lmc_watchdog()
663 sc->lmc_cmdmode |= TULIP_CMD_TXRUN | TULIP_CMD_RXRUN; in lmc_watchdog()
664 LMC_CSR_WRITE (sc, csr_command, sc->lmc_cmdmode); in lmc_watchdog()
666 if (sc->lmc_ok == 0) in lmc_watchdog()
669 LMC_EVENT_LOG(LMC_EVENT_WATCHDOG, LMC_CSR_READ (sc, csr_status), lmc_mii_readreg (sc, 0, 16)); in lmc_watchdog()
674 if (sc->lmc_taint_tx == sc->lastlmc_taint_tx && in lmc_watchdog()
675 sc->lmc_device->stats.tx_packets > sc->lasttx_packets && in lmc_watchdog()
676 sc->tx_TimeoutInd == 0) in lmc_watchdog()
680 sc->tx_TimeoutInd = 1; in lmc_watchdog()
682 else if (sc->lmc_taint_tx == sc->lastlmc_taint_tx && in lmc_watchdog()
683 sc->lmc_device->stats.tx_packets > sc->lasttx_packets && in lmc_watchdog()
684 sc->tx_TimeoutInd) in lmc_watchdog()
687 LMC_EVENT_LOG(LMC_EVENT_XMTINTTMO, LMC_CSR_READ (sc, csr_status), 0); in lmc_watchdog()
689 sc->tx_TimeoutDisplay = 1; in lmc_watchdog()
690 sc->extra_stats.tx_TimeoutCnt++; in lmc_watchdog()
697 LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ (sc, csr_status), 0); in lmc_watchdog()
705 LMC_EVENT_LOG(LMC_EVENT_RESET2, lmc_mii_readreg (sc, 0, 16), lmc_mii_readreg (sc, 0, 17)); in lmc_watchdog()
708 sc->tx_TimeoutInd = 0; in lmc_watchdog()
709 sc->lastlmc_taint_tx = sc->lmc_taint_tx; in lmc_watchdog()
710 sc->lasttx_packets = sc->lmc_device->stats.tx_packets; in lmc_watchdog()
712 sc->tx_TimeoutInd = 0; in lmc_watchdog()
713 sc->lastlmc_taint_tx = sc->lmc_taint_tx; in lmc_watchdog()
714 sc->lasttx_packets = sc->lmc_device->stats.tx_packets; in lmc_watchdog()
720 link_status = sc->lmc_media->get_link_status (sc); in lmc_watchdog()
726 if ((link_status == 0) && (sc->last_link_status != 0)) { in lmc_watchdog()
728 sc->last_link_status = 0; in lmc_watchdog()
739 if (link_status != 0 && sc->last_link_status == 0) { in lmc_watchdog()
741 sc->last_link_status = 1; in lmc_watchdog()
748 sc->lmc_media->watchdog(sc); in lmc_watchdog()
754 LMC_CSR_WRITE(sc, csr_rxpoll, 0); in lmc_watchdog()
760 if(sc->failed_ring == 1){ in lmc_watchdog()
765 sc->failed_ring = 0; in lmc_watchdog()
766 lmc_softreset(sc); in lmc_watchdog()
768 if(sc->failed_recv_alloc == 1){ in lmc_watchdog()
774 sc->failed_recv_alloc = 0; in lmc_watchdog()
775 lmc_softreset(sc); in lmc_watchdog()
784 ticks = LMC_CSR_READ (sc, csr_gp_timer); in lmc_watchdog()
785 LMC_CSR_WRITE (sc, csr_gp_timer, 0xffffffffUL); in lmc_watchdog()
786 sc->ictl.ticks = 0x0000ffff - (ticks & 0x0000ffff); in lmc_watchdog()
791 sc->timer.expires = jiffies + (HZ); in lmc_watchdog()
792 add_timer (&sc->timer); in lmc_watchdog()
794 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_watchdog()
820 lmc_softc_t *sc; in lmc_init_one() local
844 sc = kzalloc(sizeof(lmc_softc_t), GFP_KERNEL); in lmc_init_one()
845 if (!sc) { in lmc_init_one()
850 dev = alloc_hdlcdev(sc); in lmc_init_one()
864 sc->lmc_device = dev; in lmc_init_one()
865 sc->name = dev->name; in lmc_init_one()
866 sc->if_type = LMC_PPP; in lmc_init_one()
867 sc->check = 0xBEAFCAFE; in lmc_init_one()
877 lmc_proto_attach(sc); in lmc_init_one()
881 spin_lock_init(&sc->lmc_lock); in lmc_init_one()
894 sc->lmc_cardtype = LMC_CARDTYPE_UNKNOWN; in lmc_init_one()
895 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT; in lmc_init_one()
909 sc->lmc_cardtype = LMC_CARDTYPE_HSSI; in lmc_init_one()
910 sc->lmc_media = &lmc_hssi_media; in lmc_init_one()
914 sc->lmc_cardtype = LMC_CARDTYPE_DS3; in lmc_init_one()
915 sc->lmc_media = &lmc_ds3_media; in lmc_init_one()
919 sc->lmc_cardtype = LMC_CARDTYPE_SSI; in lmc_init_one()
920 sc->lmc_media = &lmc_ssi_media; in lmc_init_one()
924 sc->lmc_cardtype = LMC_CARDTYPE_T1; in lmc_init_one()
925 sc->lmc_media = &lmc_t1_media; in lmc_init_one()
932 lmc_initcsrs (sc, dev->base_addr, 8); in lmc_init_one()
934 lmc_gpio_mkinput (sc, 0xff); in lmc_init_one()
935 sc->lmc_gpio = 0; /* drive no signals yet */ in lmc_init_one()
937 sc->lmc_media->defaults (sc); in lmc_init_one()
939 sc->lmc_media->set_link_status (sc, LMC_LINK_UP); in lmc_init_one()
944 AdapModelNum = (lmc_mii_readreg (sc, 0, 3) & 0x3f0) >> 4; in lmc_init_one()
961 LMC_CSR_WRITE (sc, csr_gp_timer, 0xFFFFFFFFUL); in lmc_init_one()
963 sc->board_idx = cards_found++; in lmc_init_one()
964 sc->extra_stats.check = STATCHECK; in lmc_init_one()
965 sc->extra_stats.version_size = (DRIVER_VERSION << 16) + in lmc_init_one()
966 sizeof(sc->lmc_device->stats) + sizeof(sc->extra_stats); in lmc_init_one()
967 sc->extra_stats.lmc_cardtype = sc->lmc_cardtype; in lmc_init_one()
969 sc->lmc_ok = 0; in lmc_init_one()
970 sc->last_link_status = 0; in lmc_init_one()
976 kfree(sc); in lmc_init_one()
1005 lmc_softc_t *sc = dev_to_sc(dev); in lmc_open() local
1010 lmc_led_on(sc, LMC_DS3_LED0); in lmc_open()
1012 lmc_dec_reset(sc); in lmc_open()
1013 lmc_reset(sc); in lmc_open()
1015 LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ(sc, csr_status), 0); in lmc_open()
1016 LMC_EVENT_LOG(LMC_EVENT_RESET2, lmc_mii_readreg(sc, 0, 16), in lmc_open()
1017 lmc_mii_readreg(sc, 0, 17)); in lmc_open()
1019 if (sc->lmc_ok){ in lmc_open()
1024 lmc_softreset (sc); in lmc_open()
1032 sc->got_irq = 1; in lmc_open()
1035 sc->lmc_miireg16 |= LMC_MII16_LED_ALL; in lmc_open()
1036 sc->lmc_media->set_link_status (sc, LMC_LINK_UP); in lmc_open()
1041 sc->lmc_media->set_status (sc, NULL); in lmc_open()
1045 sc->TxDescriptControlInit = ( in lmc_open()
1053 if (sc->ictl.crc_length == LMC_CTL_CRC_LENGTH_16) { in lmc_open()
1055 sc->TxDescriptControlInit |= LMC_TDES_ADD_CRC_DISABLE; in lmc_open()
1057 sc->lmc_media->set_crc_length(sc, sc->ictl.crc_length); in lmc_open()
1062 if ((err = lmc_proto_open(sc)) != 0) in lmc_open()
1066 sc->extra_stats.tx_tbusy0++; in lmc_open()
1071 sc->lmc_intrmask = 0; in lmc_open()
1073 sc->lmc_intrmask |= (TULIP_STS_NORMALINTR in lmc_open()
1083 LMC_CSR_WRITE (sc, csr_intr, sc->lmc_intrmask); in lmc_open()
1085 sc->lmc_cmdmode |= TULIP_CMD_TXRUN; in lmc_open()
1086 sc->lmc_cmdmode |= TULIP_CMD_RXRUN; in lmc_open()
1087 LMC_CSR_WRITE (sc, csr_command, sc->lmc_cmdmode); in lmc_open()
1089 sc->lmc_ok = 1; /* Run watchdog */ in lmc_open()
1095 sc->last_link_status = 1; in lmc_open()
1101 init_timer (&sc->timer); in lmc_open()
1102 sc->timer.expires = jiffies + HZ; in lmc_open()
1103 sc->timer.data = (unsigned long) dev; in lmc_open()
1104 sc->timer.function = lmc_watchdog; in lmc_open()
1105 add_timer (&sc->timer); in lmc_open()
1118 lmc_softc_t *sc = dev_to_sc(dev); in lmc_running_reset() local
1124 LMC_CSR_WRITE (sc, csr_intr, 0x00000000); in lmc_running_reset()
1126 lmc_dec_reset (sc); in lmc_running_reset()
1127 lmc_reset (sc); in lmc_running_reset()
1128 lmc_softreset (sc); in lmc_running_reset()
1130 sc->lmc_media->set_link_status (sc, 1); in lmc_running_reset()
1131 sc->lmc_media->set_status (sc, NULL); in lmc_running_reset()
1135 sc->lmc_txfull = 0; in lmc_running_reset()
1136 sc->extra_stats.tx_tbusy0++; in lmc_running_reset()
1138 sc->lmc_intrmask = TULIP_DEFAULT_INTR_MASK; in lmc_running_reset()
1139 LMC_CSR_WRITE (sc, csr_intr, sc->lmc_intrmask); in lmc_running_reset()
1141 sc->lmc_cmdmode |= (TULIP_CMD_TXRUN | TULIP_CMD_RXRUN); in lmc_running_reset()
1142 LMC_CSR_WRITE (sc, csr_command, sc->lmc_cmdmode); in lmc_running_reset()
1155 lmc_softc_t *sc = dev_to_sc(dev); in lmc_close() local
1159 sc->lmc_ok = 0; in lmc_close()
1160 sc->lmc_media->set_link_status (sc, 0); in lmc_close()
1161 del_timer (&sc->timer); in lmc_close()
1162 lmc_proto_close(sc); in lmc_close()
1174 lmc_softc_t *sc = dev_to_sc(dev); in lmc_ifdown() local
1183 sc->extra_stats.tx_tbusy1++; in lmc_ifdown()
1187 LMC_CSR_WRITE (sc, csr_intr, 0x00000000); in lmc_ifdown()
1190 csr6 = LMC_CSR_READ (sc, csr_command); in lmc_ifdown()
1193 LMC_CSR_WRITE (sc, csr_command, csr6); in lmc_ifdown()
1195 sc->lmc_device->stats.rx_missed_errors += in lmc_ifdown()
1196 LMC_CSR_READ(sc, csr_missed_frames) & 0xffff; in lmc_ifdown()
1199 if(sc->got_irq == 1){ in lmc_ifdown()
1201 sc->got_irq = 0; in lmc_ifdown()
1207 struct sk_buff *skb = sc->lmc_rxq[i]; in lmc_ifdown()
1208 sc->lmc_rxq[i] = NULL; in lmc_ifdown()
1209 sc->lmc_rxring[i].status = 0; in lmc_ifdown()
1210 sc->lmc_rxring[i].length = 0; in lmc_ifdown()
1211 sc->lmc_rxring[i].buffer1 = 0xDEADBEEF; in lmc_ifdown()
1214 sc->lmc_rxq[i] = NULL; in lmc_ifdown()
1219 if (sc->lmc_txq[i] != NULL) in lmc_ifdown()
1220 dev_kfree_skb(sc->lmc_txq[i]); in lmc_ifdown()
1221 sc->lmc_txq[i] = NULL; in lmc_ifdown()
1224 lmc_led_off (sc, LMC_MII16_LED_ALL); in lmc_ifdown()
1227 sc->extra_stats.tx_tbusy0++; in lmc_ifdown()
1240 lmc_softc_t *sc = dev_to_sc(dev); in lmc_interrupt() local
1251 spin_lock(&sc->lmc_lock); in lmc_interrupt()
1256 csr = LMC_CSR_READ (sc, csr_status); in lmc_interrupt()
1261 if ( ! (csr & sc->lmc_intrmask)) { in lmc_interrupt()
1268 while (csr & sc->lmc_intrmask) { in lmc_interrupt()
1274 LMC_CSR_WRITE (sc, csr_status, csr); in lmc_interrupt()
1303 sc->extra_stats.tx_NoCompleteCnt = 0; in lmc_interrupt()
1305 badtx = sc->lmc_taint_tx; in lmc_interrupt()
1308 while ((badtx < sc->lmc_next_tx)) { in lmc_interrupt()
1309 stat = sc->lmc_txring[i].status; in lmc_interrupt()
1312 sc->lmc_txring[i].length); in lmc_interrupt()
1324 if (sc->lmc_txq[i] == NULL) in lmc_interrupt()
1331 sc->lmc_device->stats.tx_errors++; in lmc_interrupt()
1333 sc->lmc_device->stats.tx_aborted_errors++; in lmc_interrupt()
1335 sc->lmc_device->stats.tx_carrier_errors++; in lmc_interrupt()
1337 sc->lmc_device->stats.tx_window_errors++; in lmc_interrupt()
1339 sc->lmc_device->stats.tx_fifo_errors++; in lmc_interrupt()
1341 sc->lmc_device->stats.tx_bytes += sc->lmc_txring[i].length & 0x7ff; in lmc_interrupt()
1343 sc->lmc_device->stats.tx_packets++; in lmc_interrupt()
1347 dev_kfree_skb_irq(sc->lmc_txq[i]); in lmc_interrupt()
1348 sc->lmc_txq[i] = NULL; in lmc_interrupt()
1354 if (sc->lmc_next_tx - badtx > LMC_TXDESCS) in lmc_interrupt()
1360 sc->lmc_txfull = 0; in lmc_interrupt()
1362 sc->extra_stats.tx_tbusy0++; in lmc_interrupt()
1366 sc->extra_stats.dirtyTx = badtx; in lmc_interrupt()
1367 sc->extra_stats.lmc_next_tx = sc->lmc_next_tx; in lmc_interrupt()
1368 sc->extra_stats.lmc_txfull = sc->lmc_txfull; in lmc_interrupt()
1370 sc->lmc_taint_tx = badtx; in lmc_interrupt()
1394 lmc_dec_reset (sc); in lmc_interrupt()
1395 lmc_reset (sc); in lmc_interrupt()
1396 LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ (sc, csr_status), 0); in lmc_interrupt()
1398 lmc_mii_readreg (sc, 0, 16), in lmc_interrupt()
1399 lmc_mii_readreg (sc, 0, 17)); in lmc_interrupt()
1411 csr = LMC_CSR_READ (sc, csr_status); in lmc_interrupt()
1417 spin_unlock(&sc->lmc_lock); in lmc_interrupt()
1426 lmc_softc_t *sc = dev_to_sc(dev); in lmc_start_xmit() local
1433 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_start_xmit()
1437 entry = sc->lmc_next_tx % LMC_TXDESCS; in lmc_start_xmit()
1439 sc->lmc_txq[entry] = skb; in lmc_start_xmit()
1440 sc->lmc_txring[entry].buffer1 = virt_to_bus (skb->data); in lmc_start_xmit()
1446 if (sc->lmc_next_tx - sc->lmc_taint_tx < LMC_TXDESCS / 2) in lmc_start_xmit()
1452 else if (sc->lmc_next_tx - sc->lmc_taint_tx == LMC_TXDESCS / 2) in lmc_start_xmit()
1458 else if (sc->lmc_next_tx - sc->lmc_taint_tx < LMC_TXDESCS - 1) in lmc_start_xmit()
1468 sc->lmc_txfull = 1; in lmc_start_xmit()
1474 if (sc->lmc_next_tx - sc->lmc_taint_tx >= LMC_TXDESCS - 1) in lmc_start_xmit()
1476 sc->lmc_txfull = 1; in lmc_start_xmit()
1478 sc->extra_stats.tx_tbusy1++; in lmc_start_xmit()
1488 flag = sc->lmc_txring[entry].length = (skb->len) | flag | in lmc_start_xmit()
1489 sc->TxDescriptControlInit; in lmc_start_xmit()
1495 sc->extra_stats.tx_NoCompleteCnt++; in lmc_start_xmit()
1496 sc->lmc_next_tx++; in lmc_start_xmit()
1500 sc->lmc_txring[entry].status = 0x80000000; in lmc_start_xmit()
1503 LMC_CSR_WRITE (sc, csr_txpoll, 0); in lmc_start_xmit()
1505 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_start_xmit()
1514 lmc_softc_t *sc = dev_to_sc(dev); in lmc_rx() local
1526 lmc_led_on(sc, LMC_DS3_LED3); in lmc_rx()
1530 i = sc->lmc_next_rx % LMC_RXDESCS; in lmc_rx()
1531 next_rx = sc->lmc_next_rx; in lmc_rx()
1533 while (((stat = sc->lmc_rxring[i].status) & LMC_RDES_OWN_BIT) != DESC_OWNED_BY_DC21X4) in lmc_rx()
1540 sc->lmc_device->stats.rx_length_errors++; in lmc_rx()
1546 sc->lmc_device->stats.rx_errors++; in lmc_rx()
1547 sc->lmc_device->stats.rx_frame_errors++; in lmc_rx()
1553 sc->lmc_device->stats.rx_errors++; in lmc_rx()
1554 sc->lmc_device->stats.rx_crc_errors++; in lmc_rx()
1559 sc->lmc_device->stats.rx_length_errors++; in lmc_rx()
1564 if (len < sc->lmc_crcSize + 2) { in lmc_rx()
1565 sc->lmc_device->stats.rx_length_errors++; in lmc_rx()
1566 sc->extra_stats.rx_SmallPktCnt++; in lmc_rx()
1575 len -= sc->lmc_crcSize; in lmc_rx()
1577 skb = sc->lmc_rxq[i]; in lmc_rx()
1587 sc->lmc_rxq[i] = nsb; in lmc_rx()
1589 sc->lmc_rxring[i].buffer1 = virt_to_bus(skb_tail_pointer(nsb)); in lmc_rx()
1591 sc->failed_recv_alloc = 1; in lmc_rx()
1595 sc->lmc_device->stats.rx_packets++; in lmc_rx()
1596 sc->lmc_device->stats.rx_bytes += len; in lmc_rx()
1613 sc->lmc_rxq[i] = NULL; in lmc_rx()
1614 sc->lmc_rxring[i].buffer1 = 0x0; in lmc_rx()
1617 skb->protocol = lmc_proto_type(sc, skb); in lmc_rx()
1621 lmc_proto_netif(sc, skb); in lmc_rx()
1628 sc->lmc_rxq[i] = nsb; in lmc_rx()
1630 sc->lmc_rxring[i].buffer1 = virt_to_bus(skb_tail_pointer(nsb)); in lmc_rx()
1642 sc->extra_stats.rx_BuffAllocErr++; in lmc_rx()
1644 sc->failed_recv_alloc = 1; in lmc_rx()
1655 nsb->protocol = lmc_proto_type(sc, nsb); in lmc_rx()
1659 lmc_proto_netif(sc, nsb); in lmc_rx()
1664 sc->lmc_rxring[i].status = DESC_OWNED_BY_DC21X4; in lmc_rx()
1666 sc->lmc_next_rx++; in lmc_rx()
1667 i = sc->lmc_next_rx % LMC_RXDESCS; in lmc_rx()
1683 if (rxIntLoopCnt > sc->extra_stats.rxIntLoopCnt) in lmc_rx()
1684 sc->extra_stats.rxIntLoopCnt = rxIntLoopCnt; /* debug -baz */ in lmc_rx()
1691 if ((sc->lmc_rxring[i].status & LMC_RDES_OWN_BIT) in lmc_rx()
1702 lmc_led_off(sc, LMC_DS3_LED3); in lmc_rx()
1713 lmc_softc_t *sc = dev_to_sc(dev); in lmc_get_stats() local
1718 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_get_stats()
1720 sc->lmc_device->stats.rx_missed_errors += LMC_CSR_READ(sc, csr_missed_frames) & 0xffff; in lmc_get_stats()
1722 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_get_stats()
1726 return &sc->lmc_device->stats; in lmc_get_stats()
1738 unsigned lmc_mii_readreg (lmc_softc_t * const sc, unsigned devaddr, unsigned regno) /*fold00*/ in lmc_mii_readreg() argument
1744 lmc_trace(sc->lmc_device, "lmc_mii_readreg in"); in lmc_mii_readreg()
1746 LMC_MII_SYNC (sc); in lmc_mii_readreg()
1748 lmc_trace(sc->lmc_device, "lmc_mii_readreg: done sync"); in lmc_mii_readreg()
1754 LMC_CSR_WRITE (sc, csr_9, dataval); in lmc_mii_readreg()
1757 LMC_CSR_WRITE (sc, csr_9, dataval | 0x10000); in lmc_mii_readreg()
1762 lmc_trace(sc->lmc_device, "lmc_mii_readreg: done1"); in lmc_mii_readreg()
1766 LMC_CSR_WRITE (sc, csr_9, 0x40000); in lmc_mii_readreg()
1769 retval = (retval << 1) | ((LMC_CSR_READ (sc, csr_9) & 0x80000) ? 1 : 0); in lmc_mii_readreg()
1770 LMC_CSR_WRITE (sc, csr_9, 0x40000 | 0x10000); in lmc_mii_readreg()
1775 lmc_trace(sc->lmc_device, "lmc_mii_readreg out"); in lmc_mii_readreg()
1780 void lmc_mii_writereg (lmc_softc_t * const sc, unsigned devaddr, unsigned regno, unsigned data) /*f… in lmc_mii_writereg() argument
1785 lmc_trace(sc->lmc_device, "lmc_mii_writereg in"); in lmc_mii_writereg()
1787 LMC_MII_SYNC (sc); in lmc_mii_writereg()
1799 LMC_CSR_WRITE (sc, csr_9, datav); in lmc_mii_writereg()
1802 LMC_CSR_WRITE (sc, csr_9, (datav | 0x10000)); in lmc_mii_writereg()
1811 LMC_CSR_WRITE (sc, csr_9, 0x40000); in lmc_mii_writereg()
1814 LMC_CSR_WRITE (sc, csr_9, 0x50000); in lmc_mii_writereg()
1820 lmc_trace(sc->lmc_device, "lmc_mii_writereg out"); in lmc_mii_writereg()
1823 static void lmc_softreset (lmc_softc_t * const sc) /*fold00*/ in lmc_softreset() argument
1827 lmc_trace(sc->lmc_device, "lmc_softreset in"); in lmc_softreset()
1830 sc->lmc_txfull = 0; in lmc_softreset()
1831 sc->lmc_next_rx = 0; in lmc_softreset()
1832 sc->lmc_next_tx = 0; in lmc_softreset()
1833 sc->lmc_taint_rx = 0; in lmc_softreset()
1834 sc->lmc_taint_tx = 0; in lmc_softreset()
1846 if (sc->lmc_rxq[i] == NULL) in lmc_softreset()
1850 … printk(KERN_WARNING "%s: Failed to allocate receiver ring, will try again\n", sc->name); in lmc_softreset()
1851 sc->failed_ring = 1; in lmc_softreset()
1855 sc->lmc_rxq[i] = skb; in lmc_softreset()
1860 skb = sc->lmc_rxq[i]; in lmc_softreset()
1863 skb->dev = sc->lmc_device; in lmc_softreset()
1866 sc->lmc_rxring[i].status = 0x80000000; in lmc_softreset()
1869 sc->lmc_rxring[i].length = skb_tailroom(skb); in lmc_softreset()
1874 sc->lmc_rxring[i].buffer1 = virt_to_bus (skb->data); in lmc_softreset()
1877 sc->lmc_rxring[i].buffer2 = virt_to_bus (&sc->lmc_rxring[i + 1]); in lmc_softreset()
1885 sc->lmc_rxring[i - 1].length |= 0x02000000; /* Set end of buffers flag */ in lmc_softreset()
1886sc->lmc_rxring[i - 1].buffer2 = virt_to_bus(&sc->lmc_rxring[0]); /* Point back to the start */ in lmc_softreset()
1888 LMC_CSR_WRITE (sc, csr_rxlist, virt_to_bus (sc->lmc_rxring)); /* write base address */ in lmc_softreset()
1893 if (sc->lmc_txq[i] != NULL){ /* have buffer */ in lmc_softreset()
1894 dev_kfree_skb(sc->lmc_txq[i]); /* free it */ in lmc_softreset()
1895 sc->lmc_device->stats.tx_dropped++; /* We just dropped a packet */ in lmc_softreset()
1897 sc->lmc_txq[i] = NULL; in lmc_softreset()
1898 sc->lmc_txring[i].status = 0x00000000; in lmc_softreset()
1899 sc->lmc_txring[i].buffer2 = virt_to_bus (&sc->lmc_txring[i + 1]); in lmc_softreset()
1901 sc->lmc_txring[i - 1].buffer2 = virt_to_bus (&sc->lmc_txring[0]); in lmc_softreset()
1902 LMC_CSR_WRITE (sc, csr_txlist, virt_to_bus (sc->lmc_txring)); in lmc_softreset()
1904 lmc_trace(sc->lmc_device, "lmc_softreset out"); in lmc_softreset()
1907 void lmc_gpio_mkinput(lmc_softc_t * const sc, u32 bits) /*fold00*/ in lmc_gpio_mkinput() argument
1909 lmc_trace(sc->lmc_device, "lmc_gpio_mkinput in"); in lmc_gpio_mkinput()
1910 sc->lmc_gpio_io &= ~bits; in lmc_gpio_mkinput()
1911 LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->lmc_gpio_io)); in lmc_gpio_mkinput()
1912 lmc_trace(sc->lmc_device, "lmc_gpio_mkinput out"); in lmc_gpio_mkinput()
1915 void lmc_gpio_mkoutput(lmc_softc_t * const sc, u32 bits) /*fold00*/ in lmc_gpio_mkoutput() argument
1917 lmc_trace(sc->lmc_device, "lmc_gpio_mkoutput in"); in lmc_gpio_mkoutput()
1918 sc->lmc_gpio_io |= bits; in lmc_gpio_mkoutput()
1919 LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->lmc_gpio_io)); in lmc_gpio_mkoutput()
1920 lmc_trace(sc->lmc_device, "lmc_gpio_mkoutput out"); in lmc_gpio_mkoutput()
1923 void lmc_led_on(lmc_softc_t * const sc, u32 led) /*fold00*/ in lmc_led_on() argument
1925 lmc_trace(sc->lmc_device, "lmc_led_on in"); in lmc_led_on()
1926 if((~sc->lmc_miireg16) & led){ /* Already on! */ in lmc_led_on()
1927 lmc_trace(sc->lmc_device, "lmc_led_on aon out"); in lmc_led_on()
1931 sc->lmc_miireg16 &= ~led; in lmc_led_on()
1932 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); in lmc_led_on()
1933 lmc_trace(sc->lmc_device, "lmc_led_on out"); in lmc_led_on()
1936 void lmc_led_off(lmc_softc_t * const sc, u32 led) /*fold00*/ in lmc_led_off() argument
1938 lmc_trace(sc->lmc_device, "lmc_led_off in"); in lmc_led_off()
1939 if(sc->lmc_miireg16 & led){ /* Already set don't do anything */ in lmc_led_off()
1940 lmc_trace(sc->lmc_device, "lmc_led_off aoff out"); in lmc_led_off()
1944 sc->lmc_miireg16 |= led; in lmc_led_off()
1945 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); in lmc_led_off()
1946 lmc_trace(sc->lmc_device, "lmc_led_off out"); in lmc_led_off()
1949 static void lmc_reset(lmc_softc_t * const sc) /*fold00*/ in lmc_reset() argument
1951 lmc_trace(sc->lmc_device, "lmc_reset in"); in lmc_reset()
1952 sc->lmc_miireg16 |= LMC_MII16_FIFO_RESET; in lmc_reset()
1953 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); in lmc_reset()
1955 sc->lmc_miireg16 &= ~LMC_MII16_FIFO_RESET; in lmc_reset()
1956 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); in lmc_reset()
1961 lmc_gpio_mkoutput(sc, LMC_GEP_RESET); in lmc_reset()
1968 sc->lmc_gpio &= ~(LMC_GEP_RESET); in lmc_reset()
1969 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); in lmc_reset()
1979 lmc_gpio_mkinput(sc, LMC_GEP_RESET); in lmc_reset()
1984 sc->lmc_media->init(sc); in lmc_reset()
1986 sc->extra_stats.resetCount++; in lmc_reset()
1987 lmc_trace(sc->lmc_device, "lmc_reset out"); in lmc_reset()
1990 static void lmc_dec_reset(lmc_softc_t * const sc) /*fold00*/ in lmc_dec_reset() argument
1993 lmc_trace(sc->lmc_device, "lmc_dec_reset in"); in lmc_dec_reset()
1998 sc->lmc_intrmask = 0; in lmc_dec_reset()
1999 LMC_CSR_WRITE(sc, csr_intr, sc->lmc_intrmask); in lmc_dec_reset()
2007 LMC_CSR_WRITE(sc, csr_busmode, TULIP_BUSMODE_SWRESET); in lmc_dec_reset()
2010 sc->lmc_busmode = LMC_CSR_READ(sc, csr_busmode); in lmc_dec_reset()
2011 sc->lmc_busmode = 0x00100000; in lmc_dec_reset()
2012 sc->lmc_busmode &= ~TULIP_BUSMODE_SWRESET; in lmc_dec_reset()
2013 LMC_CSR_WRITE(sc, csr_busmode, sc->lmc_busmode); in lmc_dec_reset()
2015 sc->lmc_cmdmode = LMC_CSR_READ(sc, csr_command); in lmc_dec_reset()
2027 sc->lmc_cmdmode |= ( TULIP_CMD_PROMISCUOUS in lmc_dec_reset()
2035 sc->lmc_cmdmode &= ~( TULIP_CMD_OPERMODE in lmc_dec_reset()
2041 LMC_CSR_WRITE(sc, csr_command, sc->lmc_cmdmode); in lmc_dec_reset()
2046 val = LMC_CSR_READ(sc, csr_sia_general); in lmc_dec_reset()
2048 LMC_CSR_WRITE(sc, csr_sia_general, val); in lmc_dec_reset()
2050 lmc_trace(sc->lmc_device, "lmc_dec_reset out"); in lmc_dec_reset()
2053 static void lmc_initcsrs(lmc_softc_t * const sc, lmc_csrptr_t csr_base, /*fold00*/ in lmc_initcsrs() argument
2056 lmc_trace(sc->lmc_device, "lmc_initcsrs in"); in lmc_initcsrs()
2057 sc->lmc_csrs.csr_busmode = csr_base + 0 * csr_size; in lmc_initcsrs()
2058 sc->lmc_csrs.csr_txpoll = csr_base + 1 * csr_size; in lmc_initcsrs()
2059 sc->lmc_csrs.csr_rxpoll = csr_base + 2 * csr_size; in lmc_initcsrs()
2060 sc->lmc_csrs.csr_rxlist = csr_base + 3 * csr_size; in lmc_initcsrs()
2061 sc->lmc_csrs.csr_txlist = csr_base + 4 * csr_size; in lmc_initcsrs()
2062 sc->lmc_csrs.csr_status = csr_base + 5 * csr_size; in lmc_initcsrs()
2063 sc->lmc_csrs.csr_command = csr_base + 6 * csr_size; in lmc_initcsrs()
2064 sc->lmc_csrs.csr_intr = csr_base + 7 * csr_size; in lmc_initcsrs()
2065 sc->lmc_csrs.csr_missed_frames = csr_base + 8 * csr_size; in lmc_initcsrs()
2066 sc->lmc_csrs.csr_9 = csr_base + 9 * csr_size; in lmc_initcsrs()
2067 sc->lmc_csrs.csr_10 = csr_base + 10 * csr_size; in lmc_initcsrs()
2068 sc->lmc_csrs.csr_11 = csr_base + 11 * csr_size; in lmc_initcsrs()
2069 sc->lmc_csrs.csr_12 = csr_base + 12 * csr_size; in lmc_initcsrs()
2070 sc->lmc_csrs.csr_13 = csr_base + 13 * csr_size; in lmc_initcsrs()
2071 sc->lmc_csrs.csr_14 = csr_base + 14 * csr_size; in lmc_initcsrs()
2072 sc->lmc_csrs.csr_15 = csr_base + 15 * csr_size; in lmc_initcsrs()
2073 lmc_trace(sc->lmc_device, "lmc_initcsrs out"); in lmc_initcsrs()
2078 lmc_softc_t *sc = dev_to_sc(dev); in lmc_driver_timeout() local
2084 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_driver_timeout()
2088 sc->extra_stats.tx_tbusy_calls++; in lmc_driver_timeout()
2100 LMC_CSR_READ (sc, csr_status), in lmc_driver_timeout()
2101 sc->extra_stats.tx_ProcTimeout); in lmc_driver_timeout()
2105 LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ (sc, csr_status), 0); in lmc_driver_timeout()
2107 lmc_mii_readreg (sc, 0, 16), in lmc_driver_timeout()
2108 lmc_mii_readreg (sc, 0, 17)); in lmc_driver_timeout()
2111 csr6 = LMC_CSR_READ (sc, csr_command); in lmc_driver_timeout()
2112 LMC_CSR_WRITE (sc, csr_command, csr6 | 0x0002); in lmc_driver_timeout()
2113 LMC_CSR_WRITE (sc, csr_command, csr6 | 0x2002); in lmc_driver_timeout()
2116 LMC_CSR_WRITE (sc, csr_txpoll, 0); in lmc_driver_timeout()
2118 sc->lmc_device->stats.tx_errors++; in lmc_driver_timeout()
2119 sc->extra_stats.tx_ProcTimeout++; /* -baz */ in lmc_driver_timeout()
2125 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_driver_timeout()