• Home
  • Raw
  • Download

Lines Matching full: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()
402 // lmc_softreset(sc); 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()
505 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_ioctl()
506 lmc_gpio_mkinput(sc, 0xff); in lmc_ioctl()
519 sc->lmc_gpio = 0x00; in lmc_ioctl()
520 sc->lmc_gpio &= ~LMC_GEP_DP; in lmc_ioctl()
521 sc->lmc_gpio &= ~LMC_GEP_RESET; in lmc_ioctl()
522 sc->lmc_gpio |= LMC_GEP_MODE; in lmc_ioctl()
523 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); in lmc_ioctl()
525 lmc_gpio_mkoutput(sc, LMC_GEP_MODE | LMC_GEP_DP | LMC_GEP_RESET); in lmc_ioctl()
540 lmc_gpio_mkinput(sc, LMC_GEP_DP | LMC_GEP_RESET); in lmc_ioctl()
545 sc->lmc_gpio = 0x00; in lmc_ioctl()
546 sc->lmc_gpio |= LMC_GEP_MODE; in lmc_ioctl()
547 sc->lmc_gpio |= LMC_GEP_DATA; in lmc_ioctl()
548 sc->lmc_gpio |= LMC_GEP_CLK; in lmc_ioctl()
549 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); in lmc_ioctl()
551 lmc_gpio_mkoutput(sc, LMC_GEP_DATA | LMC_GEP_CLK | LMC_GEP_MODE ); in lmc_ioctl()
556 while( (LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0 && in lmc_ioctl()
565 sc->lmc_gpio &= ~LMC_GEP_DATA; /* Data is 0 */ in lmc_ioctl()
568 sc->lmc_gpio |= LMC_GEP_DATA; /* Data is 1 */ in lmc_ioctl()
572 sc->lmc_gpio |= LMC_GEP_DATA; /* Assume it's 1 */ in lmc_ioctl()
574 sc->lmc_gpio &= ~LMC_GEP_CLK; /* Clock to zero */ in lmc_ioctl()
575 sc->lmc_gpio |= LMC_GEP_MODE; in lmc_ioctl()
576 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); in lmc_ioctl()
579 sc->lmc_gpio |= LMC_GEP_CLK; /* Put the clack back to one */ in lmc_ioctl()
580 sc->lmc_gpio |= LMC_GEP_MODE; in lmc_ioctl()
581 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); in lmc_ioctl()
584 if((LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0){ in lmc_ioctl()
587 else if((LMC_CSR_READ(sc, csr_gp) & LMC_GEP_DP) == 0){ in lmc_ioctl()
594 lmc_gpio_mkinput(sc, 0xff); in lmc_ioctl()
596 sc->lmc_miireg16 |= LMC_MII16_FIFO_RESET; in lmc_ioctl()
597 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); in lmc_ioctl()
599 sc->lmc_miireg16 &= ~LMC_MII16_FIFO_RESET; in lmc_ioctl()
600 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); in lmc_ioctl()
601 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_ioctl()
615 sc->lmc_txfull = 0; in lmc_ioctl()
621 ret = lmc_proto_ioctl (sc, ifr, cmd); in lmc_ioctl()
634 lmc_softc_t *sc = from_timer(sc, t, timer); in lmc_watchdog() local
635 struct net_device *dev = sc->lmc_device; in lmc_watchdog()
642 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_watchdog()
644 if(sc->check != 0xBEAFCAFE){ in lmc_watchdog()
646 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_watchdog()
655 LMC_CSR_WRITE (sc, csr_15, 0x00000011); in lmc_watchdog()
656 sc->lmc_cmdmode |= TULIP_CMD_TXRUN | TULIP_CMD_RXRUN; in lmc_watchdog()
657 LMC_CSR_WRITE (sc, csr_command, sc->lmc_cmdmode); in lmc_watchdog()
659 if (sc->lmc_ok == 0) in lmc_watchdog()
662 LMC_EVENT_LOG(LMC_EVENT_WATCHDOG, LMC_CSR_READ (sc, csr_status), lmc_mii_readreg (sc, 0, 16)); in lmc_watchdog()
667 if (sc->lmc_taint_tx == sc->lastlmc_taint_tx && in lmc_watchdog()
668 sc->lmc_device->stats.tx_packets > sc->lasttx_packets && in lmc_watchdog()
669 sc->tx_TimeoutInd == 0) in lmc_watchdog()
673 sc->tx_TimeoutInd = 1; in lmc_watchdog()
675 else if (sc->lmc_taint_tx == sc->lastlmc_taint_tx && in lmc_watchdog()
676 sc->lmc_device->stats.tx_packets > sc->lasttx_packets && in lmc_watchdog()
677 sc->tx_TimeoutInd) in lmc_watchdog()
680 LMC_EVENT_LOG(LMC_EVENT_XMTINTTMO, LMC_CSR_READ (sc, csr_status), 0); in lmc_watchdog()
682 sc->tx_TimeoutDisplay = 1; in lmc_watchdog()
683 sc->extra_stats.tx_TimeoutCnt++; in lmc_watchdog()
690 LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ (sc, csr_status), 0); in lmc_watchdog()
698 LMC_EVENT_LOG(LMC_EVENT_RESET2, lmc_mii_readreg (sc, 0, 16), lmc_mii_readreg (sc, 0, 17)); in lmc_watchdog()
701 sc->tx_TimeoutInd = 0; in lmc_watchdog()
702 sc->lastlmc_taint_tx = sc->lmc_taint_tx; in lmc_watchdog()
703 sc->lasttx_packets = sc->lmc_device->stats.tx_packets; in lmc_watchdog()
705 sc->tx_TimeoutInd = 0; in lmc_watchdog()
706 sc->lastlmc_taint_tx = sc->lmc_taint_tx; in lmc_watchdog()
707 sc->lasttx_packets = sc->lmc_device->stats.tx_packets; in lmc_watchdog()
713 link_status = sc->lmc_media->get_link_status (sc); in lmc_watchdog()
719 if ((link_status == 0) && (sc->last_link_status != 0)) { in lmc_watchdog()
721 sc->last_link_status = 0; in lmc_watchdog()
722 /* lmc_reset (sc); Why reset??? The link can go down ok */ in lmc_watchdog()
732 if (link_status != 0 && sc->last_link_status == 0) { in lmc_watchdog()
734 sc->last_link_status = 1; in lmc_watchdog()
735 /* lmc_reset (sc); Again why reset??? */ in lmc_watchdog()
741 sc->lmc_media->watchdog(sc); in lmc_watchdog()
747 LMC_CSR_WRITE(sc, csr_rxpoll, 0); in lmc_watchdog()
753 if(sc->failed_ring == 1){ in lmc_watchdog()
758 sc->failed_ring = 0; in lmc_watchdog()
759 lmc_softreset(sc); in lmc_watchdog()
761 if(sc->failed_recv_alloc == 1){ in lmc_watchdog()
767 sc->failed_recv_alloc = 0; in lmc_watchdog()
768 lmc_softreset(sc); in lmc_watchdog()
777 ticks = LMC_CSR_READ (sc, csr_gp_timer); in lmc_watchdog()
778 LMC_CSR_WRITE (sc, csr_gp_timer, 0xffffffffUL); in lmc_watchdog()
779 sc->ictl.ticks = 0x0000ffff - (ticks & 0x0000ffff); in lmc_watchdog()
784 sc->timer.expires = jiffies + (HZ); in lmc_watchdog()
785 add_timer (&sc->timer); in lmc_watchdog()
787 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_watchdog()
812 lmc_softc_t *sc; in lmc_init_one() local
836 sc = devm_kzalloc(&pdev->dev, sizeof(lmc_softc_t), GFP_KERNEL); in lmc_init_one()
837 if (!sc) in lmc_init_one()
840 dev = alloc_hdlcdev(sc); in lmc_init_one()
853 sc->lmc_device = dev; in lmc_init_one()
854 sc->name = dev->name; in lmc_init_one()
855 sc->if_type = LMC_PPP; in lmc_init_one()
856 sc->check = 0xBEAFCAFE; in lmc_init_one()
864 * Must have a valid sc and dev structure in lmc_init_one()
866 lmc_proto_attach(sc); in lmc_init_one()
870 spin_lock_init(&sc->lmc_lock); in lmc_init_one()
883 sc->lmc_cardtype = LMC_CARDTYPE_UNKNOWN; in lmc_init_one()
884 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT; in lmc_init_one()
898 sc->lmc_cardtype = LMC_CARDTYPE_HSSI; in lmc_init_one()
899 sc->lmc_media = &lmc_hssi_media; in lmc_init_one()
903 sc->lmc_cardtype = LMC_CARDTYPE_DS3; in lmc_init_one()
904 sc->lmc_media = &lmc_ds3_media; in lmc_init_one()
908 sc->lmc_cardtype = LMC_CARDTYPE_SSI; in lmc_init_one()
909 sc->lmc_media = &lmc_ssi_media; in lmc_init_one()
913 sc->lmc_cardtype = LMC_CARDTYPE_T1; in lmc_init_one()
914 sc->lmc_media = &lmc_t1_media; in lmc_init_one()
921 lmc_initcsrs (sc, dev->base_addr, 8); in lmc_init_one()
923 lmc_gpio_mkinput (sc, 0xff); in lmc_init_one()
924 sc->lmc_gpio = 0; /* drive no signals yet */ in lmc_init_one()
926 sc->lmc_media->defaults (sc); in lmc_init_one()
928 sc->lmc_media->set_link_status (sc, LMC_LINK_UP); in lmc_init_one()
933 AdapModelNum = (lmc_mii_readreg (sc, 0, 3) & 0x3f0) >> 4; in lmc_init_one()
950 LMC_CSR_WRITE (sc, csr_gp_timer, 0xFFFFFFFFUL); in lmc_init_one()
952 sc->board_idx = cards_found++; in lmc_init_one()
953 sc->extra_stats.check = STATCHECK; in lmc_init_one()
954 sc->extra_stats.version_size = (DRIVER_VERSION << 16) + in lmc_init_one()
955 sizeof(sc->lmc_device->stats) + sizeof(sc->extra_stats); in lmc_init_one()
956 sc->extra_stats.lmc_cardtype = sc->lmc_cardtype; in lmc_init_one()
958 sc->lmc_ok = 0; in lmc_init_one()
959 sc->last_link_status = 0; in lmc_init_one()
984 lmc_softc_t *sc = dev_to_sc(dev); in lmc_open() local
989 lmc_led_on(sc, LMC_DS3_LED0); in lmc_open()
991 lmc_dec_reset(sc); in lmc_open()
992 lmc_reset(sc); in lmc_open()
994 LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ(sc, csr_status), 0); in lmc_open()
995 LMC_EVENT_LOG(LMC_EVENT_RESET2, lmc_mii_readreg(sc, 0, 16), in lmc_open()
996 lmc_mii_readreg(sc, 0, 17)); in lmc_open()
998 if (sc->lmc_ok){ in lmc_open()
1003 lmc_softreset (sc); in lmc_open()
1011 sc->got_irq = 1; in lmc_open()
1014 sc->lmc_miireg16 |= LMC_MII16_LED_ALL; in lmc_open()
1015 sc->lmc_media->set_link_status (sc, LMC_LINK_UP); in lmc_open()
1020 sc->lmc_media->set_status (sc, NULL); in lmc_open()
1024 sc->TxDescriptControlInit = ( in lmc_open()
1032 if (sc->ictl.crc_length == LMC_CTL_CRC_LENGTH_16) { in lmc_open()
1034 sc->TxDescriptControlInit |= LMC_TDES_ADD_CRC_DISABLE; in lmc_open()
1036 sc->lmc_media->set_crc_length(sc, sc->ictl.crc_length); in lmc_open()
1041 if ((err = lmc_proto_open(sc)) != 0) in lmc_open()
1045 sc->extra_stats.tx_tbusy0++; in lmc_open()
1050 sc->lmc_intrmask = 0; in lmc_open()
1052 sc->lmc_intrmask |= (TULIP_STS_NORMALINTR in lmc_open()
1062 LMC_CSR_WRITE (sc, csr_intr, sc->lmc_intrmask); in lmc_open()
1064 sc->lmc_cmdmode |= TULIP_CMD_TXRUN; in lmc_open()
1065 sc->lmc_cmdmode |= TULIP_CMD_RXRUN; in lmc_open()
1066 LMC_CSR_WRITE (sc, csr_command, sc->lmc_cmdmode); in lmc_open()
1068 sc->lmc_ok = 1; /* Run watchdog */ in lmc_open()
1074 sc->last_link_status = 1; in lmc_open()
1080 timer_setup(&sc->timer, lmc_watchdog, 0); in lmc_open()
1081 sc->timer.expires = jiffies + HZ; in lmc_open()
1082 add_timer (&sc->timer); in lmc_open()
1095 lmc_softc_t *sc = dev_to_sc(dev); in lmc_running_reset() local
1101 LMC_CSR_WRITE (sc, csr_intr, 0x00000000); in lmc_running_reset()
1103 lmc_dec_reset (sc); in lmc_running_reset()
1104 lmc_reset (sc); in lmc_running_reset()
1105 lmc_softreset (sc); in lmc_running_reset()
1106 /* sc->lmc_miireg16 |= LMC_MII16_LED_ALL; */ in lmc_running_reset()
1107 sc->lmc_media->set_link_status (sc, 1); in lmc_running_reset()
1108 sc->lmc_media->set_status (sc, NULL); in lmc_running_reset()
1112 sc->lmc_txfull = 0; in lmc_running_reset()
1113 sc->extra_stats.tx_tbusy0++; in lmc_running_reset()
1115 sc->lmc_intrmask = TULIP_DEFAULT_INTR_MASK; in lmc_running_reset()
1116 LMC_CSR_WRITE (sc, csr_intr, sc->lmc_intrmask); in lmc_running_reset()
1118 sc->lmc_cmdmode |= (TULIP_CMD_TXRUN | TULIP_CMD_RXRUN); in lmc_running_reset()
1119 LMC_CSR_WRITE (sc, csr_command, sc->lmc_cmdmode); in lmc_running_reset()
1132 lmc_softc_t *sc = dev_to_sc(dev); in lmc_close() local
1136 sc->lmc_ok = 0; in lmc_close()
1137 sc->lmc_media->set_link_status (sc, 0); in lmc_close()
1138 del_timer (&sc->timer); in lmc_close()
1139 lmc_proto_close(sc); in lmc_close()
1151 lmc_softc_t *sc = dev_to_sc(dev); in lmc_ifdown() local
1160 sc->extra_stats.tx_tbusy1++; in lmc_ifdown()
1164 LMC_CSR_WRITE (sc, csr_intr, 0x00000000); in lmc_ifdown()
1167 csr6 = LMC_CSR_READ (sc, csr_command); in lmc_ifdown()
1170 LMC_CSR_WRITE (sc, csr_command, csr6); in lmc_ifdown()
1172 sc->lmc_device->stats.rx_missed_errors += in lmc_ifdown()
1173 LMC_CSR_READ(sc, csr_missed_frames) & 0xffff; in lmc_ifdown()
1176 if(sc->got_irq == 1){ in lmc_ifdown()
1178 sc->got_irq = 0; in lmc_ifdown()
1184 struct sk_buff *skb = sc->lmc_rxq[i]; in lmc_ifdown()
1185 sc->lmc_rxq[i] = NULL; in lmc_ifdown()
1186 sc->lmc_rxring[i].status = 0; in lmc_ifdown()
1187 sc->lmc_rxring[i].length = 0; in lmc_ifdown()
1188 sc->lmc_rxring[i].buffer1 = 0xDEADBEEF; in lmc_ifdown()
1191 sc->lmc_rxq[i] = NULL; in lmc_ifdown()
1196 if (sc->lmc_txq[i] != NULL) in lmc_ifdown()
1197 dev_kfree_skb(sc->lmc_txq[i]); in lmc_ifdown()
1198 sc->lmc_txq[i] = NULL; in lmc_ifdown()
1201 lmc_led_off (sc, LMC_MII16_LED_ALL); in lmc_ifdown()
1204 sc->extra_stats.tx_tbusy0++; in lmc_ifdown()
1217 lmc_softc_t *sc = dev_to_sc(dev); in lmc_interrupt() local
1228 spin_lock(&sc->lmc_lock); in lmc_interrupt()
1233 csr = LMC_CSR_READ (sc, csr_status); in lmc_interrupt()
1238 if ( ! (csr & sc->lmc_intrmask)) { in lmc_interrupt()
1245 while (csr & sc->lmc_intrmask) { in lmc_interrupt()
1251 LMC_CSR_WRITE (sc, csr_status, csr); in lmc_interrupt()
1280 sc->extra_stats.tx_NoCompleteCnt = 0; in lmc_interrupt()
1282 badtx = sc->lmc_taint_tx; in lmc_interrupt()
1285 while ((badtx < sc->lmc_next_tx)) { in lmc_interrupt()
1286 stat = sc->lmc_txring[i].status; in lmc_interrupt()
1289 sc->lmc_txring[i].length); in lmc_interrupt()
1301 if (sc->lmc_txq[i] == NULL) in lmc_interrupt()
1308 sc->lmc_device->stats.tx_errors++; in lmc_interrupt()
1310 sc->lmc_device->stats.tx_aborted_errors++; in lmc_interrupt()
1312 sc->lmc_device->stats.tx_carrier_errors++; in lmc_interrupt()
1314 sc->lmc_device->stats.tx_window_errors++; in lmc_interrupt()
1316 sc->lmc_device->stats.tx_fifo_errors++; in lmc_interrupt()
1318 sc->lmc_device->stats.tx_bytes += sc->lmc_txring[i].length & 0x7ff; in lmc_interrupt()
1320 sc->lmc_device->stats.tx_packets++; in lmc_interrupt()
1323 // dev_kfree_skb(sc->lmc_txq[i]); in lmc_interrupt()
1324 dev_kfree_skb_irq(sc->lmc_txq[i]); in lmc_interrupt()
1325 sc->lmc_txq[i] = NULL; in lmc_interrupt()
1331 if (sc->lmc_next_tx - badtx > LMC_TXDESCS) in lmc_interrupt()
1337 sc->lmc_txfull = 0; in lmc_interrupt()
1339 sc->extra_stats.tx_tbusy0++; in lmc_interrupt()
1343 sc->extra_stats.dirtyTx = badtx; in lmc_interrupt()
1344 sc->extra_stats.lmc_next_tx = sc->lmc_next_tx; in lmc_interrupt()
1345 sc->extra_stats.lmc_txfull = sc->lmc_txfull; in lmc_interrupt()
1347 sc->lmc_taint_tx = badtx; in lmc_interrupt()
1371 lmc_dec_reset (sc); in lmc_interrupt()
1372 lmc_reset (sc); in lmc_interrupt()
1373 LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ (sc, csr_status), 0); in lmc_interrupt()
1375 lmc_mii_readreg (sc, 0, 16), in lmc_interrupt()
1376 lmc_mii_readreg (sc, 0, 17)); in lmc_interrupt()
1388 csr = LMC_CSR_READ (sc, csr_status); in lmc_interrupt()
1394 spin_unlock(&sc->lmc_lock); in lmc_interrupt()
1403 lmc_softc_t *sc = dev_to_sc(dev); in lmc_start_xmit() local
1410 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_start_xmit()
1414 entry = sc->lmc_next_tx % LMC_TXDESCS; in lmc_start_xmit()
1416 sc->lmc_txq[entry] = skb; in lmc_start_xmit()
1417 sc->lmc_txring[entry].buffer1 = virt_to_bus (skb->data); in lmc_start_xmit()
1423 if (sc->lmc_next_tx - sc->lmc_taint_tx < LMC_TXDESCS / 2) in lmc_start_xmit()
1429 else if (sc->lmc_next_tx - sc->lmc_taint_tx == LMC_TXDESCS / 2) in lmc_start_xmit()
1435 else if (sc->lmc_next_tx - sc->lmc_taint_tx < LMC_TXDESCS - 1) in lmc_start_xmit()
1445 sc->lmc_txfull = 1; in lmc_start_xmit()
1451 if (sc->lmc_next_tx - sc->lmc_taint_tx >= LMC_TXDESCS - 1) in lmc_start_xmit()
1453 sc->lmc_txfull = 1; in lmc_start_xmit()
1455 sc->extra_stats.tx_tbusy1++; in lmc_start_xmit()
1465 flag = sc->lmc_txring[entry].length = (skb->len) | flag | in lmc_start_xmit()
1466 sc->TxDescriptControlInit; in lmc_start_xmit()
1472 sc->extra_stats.tx_NoCompleteCnt++; in lmc_start_xmit()
1473 sc->lmc_next_tx++; in lmc_start_xmit()
1477 sc->lmc_txring[entry].status = 0x80000000; in lmc_start_xmit()
1480 LMC_CSR_WRITE (sc, csr_txpoll, 0); in lmc_start_xmit()
1482 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_start_xmit()
1491 lmc_softc_t *sc = dev_to_sc(dev); in lmc_rx() local
1502 lmc_led_on(sc, LMC_DS3_LED3); in lmc_rx()
1506 i = sc->lmc_next_rx % LMC_RXDESCS; in lmc_rx()
1508 while (((stat = sc->lmc_rxring[i].status) & LMC_RDES_OWN_BIT) != DESC_OWNED_BY_DC21X4) in lmc_rx()
1515 sc->lmc_device->stats.rx_length_errors++; in lmc_rx()
1521 sc->lmc_device->stats.rx_errors++; in lmc_rx()
1522 sc->lmc_device->stats.rx_frame_errors++; in lmc_rx()
1528 sc->lmc_device->stats.rx_errors++; in lmc_rx()
1529 sc->lmc_device->stats.rx_crc_errors++; in lmc_rx()
1534 sc->lmc_device->stats.rx_length_errors++; in lmc_rx()
1539 if (len < sc->lmc_crcSize + 2) { in lmc_rx()
1540 sc->lmc_device->stats.rx_length_errors++; in lmc_rx()
1541 sc->extra_stats.rx_SmallPktCnt++; in lmc_rx()
1550 len -= sc->lmc_crcSize; in lmc_rx()
1552 skb = sc->lmc_rxq[i]; in lmc_rx()
1562 sc->lmc_rxq[i] = nsb; in lmc_rx()
1564 sc->lmc_rxring[i].buffer1 = virt_to_bus(skb_tail_pointer(nsb)); in lmc_rx()
1566 sc->failed_recv_alloc = 1; in lmc_rx()
1570 sc->lmc_device->stats.rx_packets++; in lmc_rx()
1571 sc->lmc_device->stats.rx_bytes += len; in lmc_rx()
1588 sc->lmc_rxq[i] = NULL; in lmc_rx()
1589 sc->lmc_rxring[i].buffer1 = 0x0; in lmc_rx()
1592 skb->protocol = lmc_proto_type(sc, skb); in lmc_rx()
1596 lmc_proto_netif(sc, skb); in lmc_rx()
1603 sc->lmc_rxq[i] = nsb; in lmc_rx()
1605 sc->lmc_rxring[i].buffer1 = virt_to_bus(skb_tail_pointer(nsb)); in lmc_rx()
1617 sc->extra_stats.rx_BuffAllocErr++; in lmc_rx()
1619 sc->failed_recv_alloc = 1; in lmc_rx()
1630 nsb->protocol = lmc_proto_type(sc, nsb); in lmc_rx()
1634 lmc_proto_netif(sc, nsb); in lmc_rx()
1639 sc->lmc_rxring[i].status = DESC_OWNED_BY_DC21X4; in lmc_rx()
1641 sc->lmc_next_rx++; in lmc_rx()
1642 i = sc->lmc_next_rx % LMC_RXDESCS; in lmc_rx()
1652 sc->extra_stats.rx_BadPktSurgeCnt++; in lmc_rx()
1654 sc->extra_stats.rx_BadPktSurgeCnt); in lmc_rx()
1658 if (rxIntLoopCnt > sc->extra_stats.rxIntLoopCnt) in lmc_rx()
1659 sc->extra_stats.rxIntLoopCnt = rxIntLoopCnt; /* debug -baz */ in lmc_rx()
1666 if ((sc->lmc_rxring[i].status & LMC_RDES_OWN_BIT) in lmc_rx()
1677 lmc_led_off(sc, LMC_DS3_LED3); in lmc_rx()
1688 lmc_softc_t *sc = dev_to_sc(dev); in lmc_get_stats() local
1693 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_get_stats()
1695 sc->lmc_device->stats.rx_missed_errors += LMC_CSR_READ(sc, csr_missed_frames) & 0xffff; in lmc_get_stats()
1697 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_get_stats()
1701 return &sc->lmc_device->stats; in lmc_get_stats()
1713 unsigned lmc_mii_readreg (lmc_softc_t * const sc, unsigned devaddr, unsigned regno) /*fold00*/ in lmc_mii_readreg() argument
1719 lmc_trace(sc->lmc_device, "lmc_mii_readreg in"); in lmc_mii_readreg()
1721 LMC_MII_SYNC (sc); in lmc_mii_readreg()
1723 lmc_trace(sc->lmc_device, "lmc_mii_readreg: done sync"); in lmc_mii_readreg()
1729 LMC_CSR_WRITE (sc, csr_9, dataval); in lmc_mii_readreg()
1732 LMC_CSR_WRITE (sc, csr_9, dataval | 0x10000); in lmc_mii_readreg()
1737 lmc_trace(sc->lmc_device, "lmc_mii_readreg: done1"); in lmc_mii_readreg()
1741 LMC_CSR_WRITE (sc, csr_9, 0x40000); in lmc_mii_readreg()
1744 retval = (retval << 1) | ((LMC_CSR_READ (sc, csr_9) & 0x80000) ? 1 : 0); in lmc_mii_readreg()
1745 LMC_CSR_WRITE (sc, csr_9, 0x40000 | 0x10000); in lmc_mii_readreg()
1750 lmc_trace(sc->lmc_device, "lmc_mii_readreg out"); in lmc_mii_readreg()
1755 void lmc_mii_writereg (lmc_softc_t * const sc, unsigned devaddr, unsigned regno, unsigned data) /*f… in lmc_mii_writereg() argument
1760 lmc_trace(sc->lmc_device, "lmc_mii_writereg in"); in lmc_mii_writereg()
1762 LMC_MII_SYNC (sc); in lmc_mii_writereg()
1774 LMC_CSR_WRITE (sc, csr_9, datav); in lmc_mii_writereg()
1777 LMC_CSR_WRITE (sc, csr_9, (datav | 0x10000)); in lmc_mii_writereg()
1786 LMC_CSR_WRITE (sc, csr_9, 0x40000); in lmc_mii_writereg()
1789 LMC_CSR_WRITE (sc, csr_9, 0x50000); in lmc_mii_writereg()
1795 lmc_trace(sc->lmc_device, "lmc_mii_writereg out"); in lmc_mii_writereg()
1798 static void lmc_softreset (lmc_softc_t * const sc) /*fold00*/ in lmc_softreset() argument
1802 lmc_trace(sc->lmc_device, "lmc_softreset in"); in lmc_softreset()
1805 sc->lmc_txfull = 0; in lmc_softreset()
1806 sc->lmc_next_rx = 0; in lmc_softreset()
1807 sc->lmc_next_tx = 0; in lmc_softreset()
1808 sc->lmc_taint_rx = 0; in lmc_softreset()
1809 sc->lmc_taint_tx = 0; in lmc_softreset()
1821 if (sc->lmc_rxq[i] == NULL) in lmc_softreset()
1825 … printk(KERN_WARNING "%s: Failed to allocate receiver ring, will try again\n", sc->name); in lmc_softreset()
1826 sc->failed_ring = 1; in lmc_softreset()
1830 sc->lmc_rxq[i] = skb; in lmc_softreset()
1835 skb = sc->lmc_rxq[i]; in lmc_softreset()
1838 skb->dev = sc->lmc_device; in lmc_softreset()
1841 sc->lmc_rxring[i].status = 0x80000000; in lmc_softreset()
1844 sc->lmc_rxring[i].length = skb_tailroom(skb); in lmc_softreset()
1849 sc->lmc_rxring[i].buffer1 = virt_to_bus (skb->data); in lmc_softreset()
1852 sc->lmc_rxring[i].buffer2 = virt_to_bus (&sc->lmc_rxring[i + 1]); in lmc_softreset()
1860 sc->lmc_rxring[i - 1].length |= 0x02000000; /* Set end of buffers flag */ in lmc_softreset()
1861sc->lmc_rxring[i - 1].buffer2 = virt_to_bus(&sc->lmc_rxring[0]); /* Point back to the start */ in lmc_softreset()
1863 LMC_CSR_WRITE (sc, csr_rxlist, virt_to_bus (sc->lmc_rxring)); /* write base address */ in lmc_softreset()
1868 if (sc->lmc_txq[i] != NULL){ /* have buffer */ in lmc_softreset()
1869 dev_kfree_skb(sc->lmc_txq[i]); /* free it */ in lmc_softreset()
1870 sc->lmc_device->stats.tx_dropped++; /* We just dropped a packet */ in lmc_softreset()
1872 sc->lmc_txq[i] = NULL; in lmc_softreset()
1873 sc->lmc_txring[i].status = 0x00000000; in lmc_softreset()
1874 sc->lmc_txring[i].buffer2 = virt_to_bus (&sc->lmc_txring[i + 1]); in lmc_softreset()
1876 sc->lmc_txring[i - 1].buffer2 = virt_to_bus (&sc->lmc_txring[0]); in lmc_softreset()
1877 LMC_CSR_WRITE (sc, csr_txlist, virt_to_bus (sc->lmc_txring)); in lmc_softreset()
1879 lmc_trace(sc->lmc_device, "lmc_softreset out"); in lmc_softreset()
1882 void lmc_gpio_mkinput(lmc_softc_t * const sc, u32 bits) /*fold00*/ in lmc_gpio_mkinput() argument
1884 lmc_trace(sc->lmc_device, "lmc_gpio_mkinput in"); in lmc_gpio_mkinput()
1885 sc->lmc_gpio_io &= ~bits; in lmc_gpio_mkinput()
1886 LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->lmc_gpio_io)); in lmc_gpio_mkinput()
1887 lmc_trace(sc->lmc_device, "lmc_gpio_mkinput out"); in lmc_gpio_mkinput()
1890 void lmc_gpio_mkoutput(lmc_softc_t * const sc, u32 bits) /*fold00*/ in lmc_gpio_mkoutput() argument
1892 lmc_trace(sc->lmc_device, "lmc_gpio_mkoutput in"); in lmc_gpio_mkoutput()
1893 sc->lmc_gpio_io |= bits; in lmc_gpio_mkoutput()
1894 LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->lmc_gpio_io)); in lmc_gpio_mkoutput()
1895 lmc_trace(sc->lmc_device, "lmc_gpio_mkoutput out"); in lmc_gpio_mkoutput()
1898 void lmc_led_on(lmc_softc_t * const sc, u32 led) /*fold00*/ in lmc_led_on() argument
1900 lmc_trace(sc->lmc_device, "lmc_led_on in"); in lmc_led_on()
1901 if((~sc->lmc_miireg16) & led){ /* Already on! */ in lmc_led_on()
1902 lmc_trace(sc->lmc_device, "lmc_led_on aon out"); in lmc_led_on()
1906 sc->lmc_miireg16 &= ~led; in lmc_led_on()
1907 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); in lmc_led_on()
1908 lmc_trace(sc->lmc_device, "lmc_led_on out"); in lmc_led_on()
1911 void lmc_led_off(lmc_softc_t * const sc, u32 led) /*fold00*/ in lmc_led_off() argument
1913 lmc_trace(sc->lmc_device, "lmc_led_off in"); in lmc_led_off()
1914 if(sc->lmc_miireg16 & led){ /* Already set don't do anything */ in lmc_led_off()
1915 lmc_trace(sc->lmc_device, "lmc_led_off aoff out"); in lmc_led_off()
1919 sc->lmc_miireg16 |= led; in lmc_led_off()
1920 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); in lmc_led_off()
1921 lmc_trace(sc->lmc_device, "lmc_led_off out"); in lmc_led_off()
1924 static void lmc_reset(lmc_softc_t * const sc) /*fold00*/ in lmc_reset() argument
1926 lmc_trace(sc->lmc_device, "lmc_reset in"); in lmc_reset()
1927 sc->lmc_miireg16 |= LMC_MII16_FIFO_RESET; in lmc_reset()
1928 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); in lmc_reset()
1930 sc->lmc_miireg16 &= ~LMC_MII16_FIFO_RESET; in lmc_reset()
1931 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16); in lmc_reset()
1936 lmc_gpio_mkoutput(sc, LMC_GEP_RESET); in lmc_reset()
1943 sc->lmc_gpio &= ~(LMC_GEP_RESET); in lmc_reset()
1944 LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio); in lmc_reset()
1954 lmc_gpio_mkinput(sc, LMC_GEP_RESET); in lmc_reset()
1959 sc->lmc_media->init(sc); in lmc_reset()
1961 sc->extra_stats.resetCount++; in lmc_reset()
1962 lmc_trace(sc->lmc_device, "lmc_reset out"); in lmc_reset()
1965 static void lmc_dec_reset(lmc_softc_t * const sc) /*fold00*/ in lmc_dec_reset() argument
1968 lmc_trace(sc->lmc_device, "lmc_dec_reset in"); in lmc_dec_reset()
1973 sc->lmc_intrmask = 0; in lmc_dec_reset()
1974 LMC_CSR_WRITE(sc, csr_intr, sc->lmc_intrmask); in lmc_dec_reset()
1982 LMC_CSR_WRITE(sc, csr_busmode, TULIP_BUSMODE_SWRESET); in lmc_dec_reset()
1985 sc->lmc_busmode = LMC_CSR_READ(sc, csr_busmode); in lmc_dec_reset()
1986 sc->lmc_busmode = 0x00100000; in lmc_dec_reset()
1987 sc->lmc_busmode &= ~TULIP_BUSMODE_SWRESET; in lmc_dec_reset()
1988 LMC_CSR_WRITE(sc, csr_busmode, sc->lmc_busmode); in lmc_dec_reset()
1990 sc->lmc_cmdmode = LMC_CSR_READ(sc, csr_command); in lmc_dec_reset()
2002 sc->lmc_cmdmode |= ( TULIP_CMD_PROMISCUOUS in lmc_dec_reset()
2010 sc->lmc_cmdmode &= ~( TULIP_CMD_OPERMODE in lmc_dec_reset()
2016 LMC_CSR_WRITE(sc, csr_command, sc->lmc_cmdmode); in lmc_dec_reset()
2021 val = LMC_CSR_READ(sc, csr_sia_general); in lmc_dec_reset()
2023 LMC_CSR_WRITE(sc, csr_sia_general, val); in lmc_dec_reset()
2025 lmc_trace(sc->lmc_device, "lmc_dec_reset out"); in lmc_dec_reset()
2028 static void lmc_initcsrs(lmc_softc_t * const sc, lmc_csrptr_t csr_base, /*fold00*/ in lmc_initcsrs() argument
2031 lmc_trace(sc->lmc_device, "lmc_initcsrs in"); in lmc_initcsrs()
2032 sc->lmc_csrs.csr_busmode = csr_base + 0 * csr_size; in lmc_initcsrs()
2033 sc->lmc_csrs.csr_txpoll = csr_base + 1 * csr_size; in lmc_initcsrs()
2034 sc->lmc_csrs.csr_rxpoll = csr_base + 2 * csr_size; in lmc_initcsrs()
2035 sc->lmc_csrs.csr_rxlist = csr_base + 3 * csr_size; in lmc_initcsrs()
2036 sc->lmc_csrs.csr_txlist = csr_base + 4 * csr_size; in lmc_initcsrs()
2037 sc->lmc_csrs.csr_status = csr_base + 5 * csr_size; in lmc_initcsrs()
2038 sc->lmc_csrs.csr_command = csr_base + 6 * csr_size; in lmc_initcsrs()
2039 sc->lmc_csrs.csr_intr = csr_base + 7 * csr_size; in lmc_initcsrs()
2040 sc->lmc_csrs.csr_missed_frames = csr_base + 8 * csr_size; in lmc_initcsrs()
2041 sc->lmc_csrs.csr_9 = csr_base + 9 * csr_size; in lmc_initcsrs()
2042 sc->lmc_csrs.csr_10 = csr_base + 10 * csr_size; in lmc_initcsrs()
2043 sc->lmc_csrs.csr_11 = csr_base + 11 * csr_size; in lmc_initcsrs()
2044 sc->lmc_csrs.csr_12 = csr_base + 12 * csr_size; in lmc_initcsrs()
2045 sc->lmc_csrs.csr_13 = csr_base + 13 * csr_size; in lmc_initcsrs()
2046 sc->lmc_csrs.csr_14 = csr_base + 14 * csr_size; in lmc_initcsrs()
2047 sc->lmc_csrs.csr_15 = csr_base + 15 * csr_size; in lmc_initcsrs()
2048 lmc_trace(sc->lmc_device, "lmc_initcsrs out"); in lmc_initcsrs()
2053 lmc_softc_t *sc = dev_to_sc(dev); in lmc_driver_timeout() local
2059 spin_lock_irqsave(&sc->lmc_lock, flags); in lmc_driver_timeout()
2063 sc->extra_stats.tx_tbusy_calls++; in lmc_driver_timeout()
2075 LMC_CSR_READ (sc, csr_status), in lmc_driver_timeout()
2076 sc->extra_stats.tx_ProcTimeout); in lmc_driver_timeout()
2080 LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ (sc, csr_status), 0); in lmc_driver_timeout()
2082 lmc_mii_readreg (sc, 0, 16), in lmc_driver_timeout()
2083 lmc_mii_readreg (sc, 0, 17)); in lmc_driver_timeout()
2086 csr6 = LMC_CSR_READ (sc, csr_command); in lmc_driver_timeout()
2087 LMC_CSR_WRITE (sc, csr_command, csr6 | 0x0002); in lmc_driver_timeout()
2088 LMC_CSR_WRITE (sc, csr_command, csr6 | 0x2002); in lmc_driver_timeout()
2091 LMC_CSR_WRITE (sc, csr_txpoll, 0); in lmc_driver_timeout()
2093 sc->lmc_device->stats.tx_errors++; in lmc_driver_timeout()
2094 sc->extra_stats.tx_ProcTimeout++; /* -baz */ in lmc_driver_timeout()
2100 spin_unlock_irqrestore(&sc->lmc_lock, flags); in lmc_driver_timeout()