• Home
  • Raw
  • Download

Lines Matching full:sc

158 lmc_dummy_set_1 (lmc_softc_t * const sc, int a)  in lmc_dummy_set_1()  argument
163 lmc_dummy_set2_1 (lmc_softc_t * const sc, lmc_ctl_t * a) in lmc_dummy_set2_1() argument
172 lmc_hssi_init (lmc_softc_t * const sc) in lmc_hssi_init() argument
174 sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC5200; in lmc_hssi_init()
176 lmc_gpio_mkoutput (sc, LMC_GEP_HSSI_CLOCK); in lmc_hssi_init()
180 lmc_hssi_default (lmc_softc_t * const sc) in lmc_hssi_default() argument
182 sc->lmc_miireg16 = LMC_MII16_LED_ALL; in lmc_hssi_default()
184 sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN); in lmc_hssi_default()
185 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT); in lmc_hssi_default()
186 sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16); in lmc_hssi_default()
194 lmc_hssi_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_hssi_set_status() argument
198 sc->lmc_media->set_clock_source (sc, sc->ictl.clock_source); in lmc_hssi_set_status()
199 lmc_set_protocol (sc, NULL); in lmc_hssi_set_status()
207 if (ctl->clock_source && !sc->ictl.clock_source) in lmc_hssi_set_status()
209 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_INT); in lmc_hssi_set_status()
210 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT; in lmc_hssi_set_status()
212 else if (!ctl->clock_source && sc->ictl.clock_source) in lmc_hssi_set_status()
214 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT; in lmc_hssi_set_status()
215 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT); in lmc_hssi_set_status()
218 lmc_set_protocol (sc, ctl); in lmc_hssi_set_status()
225 lmc_hssi_set_clock (lmc_softc_t * const sc, int ie) in lmc_hssi_set_clock() argument
228 old = sc->ictl.clock_source; in lmc_hssi_set_clock()
231 sc->lmc_gpio |= LMC_GEP_HSSI_CLOCK; in lmc_hssi_set_clock()
232 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_hssi_set_clock()
233 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT; in lmc_hssi_set_clock()
239 sc->lmc_gpio &= ~(LMC_GEP_HSSI_CLOCK); in lmc_hssi_set_clock()
240 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_hssi_set_clock()
241 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT; in lmc_hssi_set_clock()
252 lmc_hssi_get_link_status (lmc_softc_t * const sc) in lmc_hssi_get_link_status() argument
258 return lmc_ssi_get_link_status(sc); in lmc_hssi_get_link_status()
262 lmc_hssi_set_link_status (lmc_softc_t * const sc, int state) in lmc_hssi_set_link_status() argument
265 sc->lmc_miireg16 |= LMC_MII16_HSSI_TA; in lmc_hssi_set_link_status()
267 sc->lmc_miireg16 &= ~LMC_MII16_HSSI_TA; in lmc_hssi_set_link_status()
269 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_hssi_set_link_status()
276 lmc_hssi_set_crc_length (lmc_softc_t * const sc, int state) in lmc_hssi_set_crc_length() argument
281 sc->lmc_miireg16 |= LMC_MII16_HSSI_CRC; in lmc_hssi_set_crc_length()
282 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32; in lmc_hssi_set_crc_length()
287 sc->lmc_miireg16 &= ~LMC_MII16_HSSI_CRC; in lmc_hssi_set_crc_length()
288 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16; in lmc_hssi_set_crc_length()
291 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_hssi_set_crc_length()
295 lmc_hssi_watchdog (lmc_softc_t * const sc) in lmc_hssi_watchdog() argument
308 lmc_ds3_set_100ft (lmc_softc_t * const sc, int ie) in lmc_ds3_set_100ft() argument
312 sc->lmc_miireg16 &= ~LMC_MII16_DS3_ZERO; in lmc_ds3_set_100ft()
313 sc->ictl.cable_length = LMC_CTL_CABLE_LENGTH_GT_100FT; in lmc_ds3_set_100ft()
317 sc->lmc_miireg16 |= LMC_MII16_DS3_ZERO; in lmc_ds3_set_100ft()
318 sc->ictl.cable_length = LMC_CTL_CABLE_LENGTH_LT_100FT; in lmc_ds3_set_100ft()
320 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_ds3_set_100ft()
324 lmc_ds3_default (lmc_softc_t * const sc) in lmc_ds3_default() argument
326 sc->lmc_miireg16 = LMC_MII16_LED_ALL; in lmc_ds3_default()
328 sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN); in lmc_ds3_default()
329 sc->lmc_media->set_cable_length (sc, LMC_CTL_CABLE_LENGTH_LT_100FT); in lmc_ds3_default()
330 sc->lmc_media->set_scrambler (sc, LMC_CTL_OFF); in lmc_ds3_default()
331 sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16); in lmc_ds3_default()
339 lmc_ds3_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_ds3_set_status() argument
343 sc->lmc_media->set_cable_length (sc, sc->ictl.cable_length); in lmc_ds3_set_status()
344 sc->lmc_media->set_scrambler (sc, sc->ictl.scrambler_onoff); in lmc_ds3_set_status()
345 lmc_set_protocol (sc, NULL); in lmc_ds3_set_status()
353 if (ctl->cable_length && !sc->ictl.cable_length) in lmc_ds3_set_status()
354 lmc_ds3_set_100ft (sc, LMC_CTL_CABLE_LENGTH_GT_100FT); in lmc_ds3_set_status()
355 else if (!ctl->cable_length && sc->ictl.cable_length) in lmc_ds3_set_status()
356 lmc_ds3_set_100ft (sc, LMC_CTL_CABLE_LENGTH_LT_100FT); in lmc_ds3_set_status()
361 if (ctl->scrambler_onoff && !sc->ictl.scrambler_onoff) in lmc_ds3_set_status()
362 lmc_ds3_set_scram (sc, LMC_CTL_ON); in lmc_ds3_set_status()
363 else if (!ctl->scrambler_onoff && sc->ictl.scrambler_onoff) in lmc_ds3_set_status()
364 lmc_ds3_set_scram (sc, LMC_CTL_OFF); in lmc_ds3_set_status()
366 lmc_set_protocol (sc, ctl); in lmc_ds3_set_status()
370 lmc_ds3_init (lmc_softc_t * const sc) in lmc_ds3_init() argument
374 sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC5245; in lmc_ds3_init()
379 lmc_mii_writereg (sc, 0, 17, i); in lmc_ds3_init()
380 lmc_mii_writereg (sc, 0, 18, 0); in lmc_ds3_init()
384 lmc_mii_writereg (sc, 0, 17, 1); in lmc_ds3_init()
385 lmc_mii_writereg (sc, 0, 18, 0x25); /* ser, xtx */ in lmc_ds3_init()
387 lmc_mii_writereg (sc, 0, 17, 5); in lmc_ds3_init()
388 lmc_mii_writereg (sc, 0, 18, 0x80); /* emode */ in lmc_ds3_init()
390 lmc_mii_writereg (sc, 0, 17, 14); in lmc_ds3_init()
391 lmc_mii_writereg (sc, 0, 18, 0x30); /* rcgen, tcgen */ in lmc_ds3_init()
396 lmc_mii_writereg (sc, 0, 17, i); in lmc_ds3_init()
397 lmc_mii_readreg (sc, 0, 18); in lmc_ds3_init()
405 lmc_ds3_set_scram (lmc_softc_t * const sc, int ie) in lmc_ds3_set_scram() argument
409 sc->lmc_miireg16 |= LMC_MII16_DS3_SCRAM; in lmc_ds3_set_scram()
410 sc->ictl.scrambler_onoff = LMC_CTL_ON; in lmc_ds3_set_scram()
414 sc->lmc_miireg16 &= ~LMC_MII16_DS3_SCRAM; in lmc_ds3_set_scram()
415 sc->ictl.scrambler_onoff = LMC_CTL_OFF; in lmc_ds3_set_scram()
417 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_ds3_set_scram()
425 lmc_ds3_get_link_status (lmc_softc_t * const sc) in lmc_ds3_get_link_status() argument
430 lmc_mii_writereg (sc, 0, 17, 7); in lmc_ds3_get_link_status()
431 link_status = lmc_mii_readreg (sc, 0, 18); in lmc_ds3_get_link_status()
443 lmc_led_on(sc, LMC_DS3_LED2); in lmc_ds3_get_link_status()
448 if(sc->last_led_err[3] != 1){ in lmc_ds3_get_link_status()
450 lmc_mii_writereg (sc, 0, 17, 01); /* Turn on Xbit error as our cisco does */ in lmc_ds3_get_link_status()
451 r1 = lmc_mii_readreg (sc, 0, 18); in lmc_ds3_get_link_status()
453 lmc_mii_writereg(sc, 0, 18, r1); in lmc_ds3_get_link_status()
454 printk(KERN_WARNING "%s: Red Alarm - Loss of Signal or Loss of Framing\n", sc->name); in lmc_ds3_get_link_status()
456 lmc_led_on(sc, LMC_DS3_LED3); /* turn on red LED */ in lmc_ds3_get_link_status()
457 sc->last_led_err[3] = 1; in lmc_ds3_get_link_status()
460 lmc_led_off(sc, LMC_DS3_LED3); /* turn on red LED */ in lmc_ds3_get_link_status()
461 if(sc->last_led_err[3] == 1){ in lmc_ds3_get_link_status()
463 lmc_mii_writereg (sc, 0, 17, 01); /* Turn off Xbit error */ in lmc_ds3_get_link_status()
464 r1 = lmc_mii_readreg (sc, 0, 18); in lmc_ds3_get_link_status()
466 lmc_mii_writereg(sc, 0, 18, r1); in lmc_ds3_get_link_status()
468 sc->last_led_err[3] = 0; in lmc_ds3_get_link_status()
471 lmc_mii_writereg(sc, 0, 17, 0x10); in lmc_ds3_get_link_status()
472 link_status_11 = lmc_mii_readreg(sc, 0, 18); in lmc_ds3_get_link_status()
476 if(sc->last_led_err[0] != 1){ in lmc_ds3_get_link_status()
477 printk(KERN_WARNING "%s: AIS Alarm or XBit Error\n", sc->name); in lmc_ds3_get_link_status()
478 printk(KERN_WARNING "%s: Remote end has loss of signal or framing\n", sc->name); in lmc_ds3_get_link_status()
480 lmc_led_on(sc, LMC_DS3_LED0); in lmc_ds3_get_link_status()
481 sc->last_led_err[0] = 1; in lmc_ds3_get_link_status()
484 lmc_led_off(sc, LMC_DS3_LED0); in lmc_ds3_get_link_status()
485 sc->last_led_err[0] = 0; in lmc_ds3_get_link_status()
488 lmc_mii_writereg (sc, 0, 17, 9); in lmc_ds3_get_link_status()
489 link_status = lmc_mii_readreg (sc, 0, 18); in lmc_ds3_get_link_status()
493 if(sc->last_led_err[1] != 1){ in lmc_ds3_get_link_status()
494 printk(KERN_WARNING "%s: Blue Alarm - Receiving all 1's\n", sc->name); in lmc_ds3_get_link_status()
496 lmc_led_on(sc, LMC_DS3_LED1); in lmc_ds3_get_link_status()
497 sc->last_led_err[1] = 1; in lmc_ds3_get_link_status()
500 lmc_led_off(sc, LMC_DS3_LED1); in lmc_ds3_get_link_status()
501 sc->last_led_err[1] = 0; in lmc_ds3_get_link_status()
511 lmc_ds3_set_crc_length (lmc_softc_t * const sc, int state) in lmc_ds3_set_crc_length() argument
516 sc->lmc_miireg16 |= LMC_MII16_DS3_CRC; in lmc_ds3_set_crc_length()
517 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32; in lmc_ds3_set_crc_length()
522 sc->lmc_miireg16 &= ~LMC_MII16_DS3_CRC; in lmc_ds3_set_crc_length()
523 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16; in lmc_ds3_set_crc_length()
526 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_ds3_set_crc_length()
530 lmc_ds3_watchdog (lmc_softc_t * const sc) in lmc_ds3_watchdog() argument
540 static void lmc_ssi_init(lmc_softc_t * const sc) in lmc_ssi_init() argument
545 sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC1000; in lmc_ssi_init()
547 mii17 = lmc_mii_readreg(sc, 0, 17); in lmc_ssi_init()
550 sc->ictl.cable_type = cable; in lmc_ssi_init()
552 lmc_gpio_mkoutput(sc, LMC_GEP_SSI_TXCLOCK); in lmc_ssi_init()
556 lmc_ssi_default (lmc_softc_t * const sc) in lmc_ssi_default() argument
558 sc->lmc_miireg16 = LMC_MII16_LED_ALL; in lmc_ssi_default()
563 lmc_gpio_mkoutput (sc, LMC_GEP_SSI_TXCLOCK); in lmc_ssi_default()
565 sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN); in lmc_ssi_default()
566 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT); in lmc_ssi_default()
567 sc->lmc_media->set_speed (sc, NULL); in lmc_ssi_default()
568 sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16); in lmc_ssi_default()
576 lmc_ssi_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_ssi_set_status() argument
580 sc->lmc_media->set_clock_source (sc, sc->ictl.clock_source); in lmc_ssi_set_status()
581 sc->lmc_media->set_speed (sc, &sc->ictl); in lmc_ssi_set_status()
582 lmc_set_protocol (sc, NULL); in lmc_ssi_set_status()
591 && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_EXT) in lmc_ssi_set_status()
593 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_INT); in lmc_ssi_set_status()
594 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT; in lmc_ssi_set_status()
597 && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_INT) in lmc_ssi_set_status()
599 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT); in lmc_ssi_set_status()
600 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT; in lmc_ssi_set_status()
603 if (ctl->clock_rate != sc->ictl.clock_rate) in lmc_ssi_set_status()
604 sc->lmc_media->set_speed (sc, ctl); in lmc_ssi_set_status()
606 lmc_set_protocol (sc, ctl); in lmc_ssi_set_status()
613 lmc_ssi_set_clock (lmc_softc_t * const sc, int ie) in lmc_ssi_set_clock() argument
619 sc->lmc_gpio &= ~(LMC_GEP_SSI_TXCLOCK); in lmc_ssi_set_clock()
620 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_ssi_set_clock()
621 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT; in lmc_ssi_set_clock()
627 sc->lmc_gpio |= LMC_GEP_SSI_TXCLOCK; in lmc_ssi_set_clock()
628 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_ssi_set_clock()
629 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT; in lmc_ssi_set_clock()
636 lmc_ssi_set_speed (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_ssi_set_speed() argument
638 lmc_ctl_t *ictl = &sc->ictl; in lmc_ssi_set_speed()
658 write_av9110 (sc, av->n, av->m, av->v, av->x, av->r); in lmc_ssi_set_speed()
670 write_av9110 (sc, av->n, av->m, av->v, av->x, av->r); in lmc_ssi_set_speed()
678 lmc_ssi_get_link_status (lmc_softc_t * const sc) in lmc_ssi_get_link_status() argument
705 link_status = lmc_mii_readreg (sc, 0, 16); in lmc_ssi_get_link_status()
708 ticks = LMC_CSR_READ (sc, csr_gp_timer); in lmc_ssi_get_link_status()
711 lmc_led_on (sc, LMC_MII16_LED0); in lmc_ssi_get_link_status()
714 if (sc->lmc_timing == LMC_CTL_CLOCK_SOURCE_INT) { in lmc_ssi_get_link_status()
715 lmc_led_off(sc, LMC_MII16_LED3); in lmc_ssi_get_link_status()
719 if (sc->last_led_err[3] != 1) { in lmc_ssi_get_link_status()
720 sc->extra_stats.tx_lossOfClockCnt++; in lmc_ssi_get_link_status()
721 printk(KERN_WARNING "%s: Lost Clock, Link Down\n", sc->name); in lmc_ssi_get_link_status()
723 sc->last_led_err[3] = 1; in lmc_ssi_get_link_status()
724 lmc_led_on (sc, LMC_MII16_LED3); /* turn ON red LED */ in lmc_ssi_get_link_status()
727 if(sc->last_led_err[3] == 1) in lmc_ssi_get_link_status()
728 printk(KERN_WARNING "%s: Clock Returned\n", sc->name); in lmc_ssi_get_link_status()
729 sc->last_led_err[3] = 0; in lmc_ssi_get_link_status()
730 lmc_led_off (sc, LMC_MII16_LED3); /* turn OFF red LED */ in lmc_ssi_get_link_status()
746 if(sc->last_led_err[1] != 1) in lmc_ssi_get_link_status()
747 printk(KERN_WARNING "%s: DSR not asserted\n", sc->name); in lmc_ssi_get_link_status()
748 sc->last_led_err[1] = 1; in lmc_ssi_get_link_status()
749 lmc_led_off(sc, LMC_MII16_LED1); in lmc_ssi_get_link_status()
752 if(sc->last_led_err[1] != 0) in lmc_ssi_get_link_status()
753 printk(KERN_WARNING "%s: DSR now asserted\n", sc->name); in lmc_ssi_get_link_status()
754 sc->last_led_err[1] = 0; in lmc_ssi_get_link_status()
755 lmc_led_on(sc, LMC_MII16_LED1); in lmc_ssi_get_link_status()
759 lmc_led_on(sc, LMC_MII16_LED2); /* Over all good status? */ in lmc_ssi_get_link_status()
766 lmc_ssi_set_link_status (lmc_softc_t * const sc, int state) in lmc_ssi_set_link_status() argument
770 sc->lmc_miireg16 |= (LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS); in lmc_ssi_set_link_status()
775 sc->lmc_miireg16 &= ~(LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS); in lmc_ssi_set_link_status()
779 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_ssi_set_link_status()
787 lmc_ssi_set_crc_length (lmc_softc_t * const sc, int state) in lmc_ssi_set_crc_length() argument
792 sc->lmc_miireg16 |= LMC_MII16_SSI_CRC; in lmc_ssi_set_crc_length()
793 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32; in lmc_ssi_set_crc_length()
794 sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_4; in lmc_ssi_set_crc_length()
800 sc->lmc_miireg16 &= ~LMC_MII16_SSI_CRC; in lmc_ssi_set_crc_length()
801 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16; in lmc_ssi_set_crc_length()
802 sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_2; in lmc_ssi_set_crc_length()
805 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_ssi_set_crc_length()
812 write_av9110_bit (lmc_softc_t * sc, int c) in write_av9110_bit() argument
817 sc->lmc_gpio &= ~(LMC_GEP_CLK); in write_av9110_bit()
819 sc->lmc_gpio |= LMC_GEP_DATA; in write_av9110_bit()
821 sc->lmc_gpio &= ~(LMC_GEP_DATA); in write_av9110_bit()
822 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in write_av9110_bit()
827 sc->lmc_gpio |= LMC_GEP_CLK; in write_av9110_bit()
828 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in write_av9110_bit()
833 sc->lmc_gpio &= ~(LMC_GEP_CLK); in write_av9110_bit()
834 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in write_av9110_bit()
837 static void write_av9110(lmc_softc_t *sc, u32 n, u32 m, u32 v, u32 x, u32 r) in write_av9110() argument
843 LMC_PRINTF_ARGS, sc->ictl.clock_rate, n, m, v, x, r); in write_av9110()
846 sc->lmc_gpio |= LMC_GEP_SSI_GENERATOR; in write_av9110()
847 sc->lmc_gpio &= ~(LMC_GEP_DATA | LMC_GEP_CLK); in write_av9110()
848 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in write_av9110()
854 lmc_gpio_mkoutput (sc, (LMC_GEP_DATA | LMC_GEP_CLK in write_av9110()
857 sc->lmc_gpio &= ~(LMC_GEP_SSI_GENERATOR); in write_av9110()
858 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in write_av9110()
864 write_av9110_bit (sc, n >> i); in write_av9110()
866 write_av9110_bit (sc, m >> i); in write_av9110()
868 write_av9110_bit (sc, v >> i); in write_av9110()
870 write_av9110_bit (sc, x >> i); in write_av9110()
872 write_av9110_bit (sc, r >> i); in write_av9110()
874 write_av9110_bit (sc, 0x17 >> i); in write_av9110()
879 lmc_gpio_mkinput (sc, in write_av9110()
884 static void lmc_ssi_watchdog(lmc_softc_t * const sc) in lmc_ssi_watchdog() argument
886 u16 mii17 = lmc_mii_readreg(sc, 0, 17); in lmc_ssi_watchdog()
888 lmc_led_off(sc, LMC_MII16_LED2); in lmc_ssi_watchdog()
890 lmc_led_on(sc, LMC_MII16_LED2); in lmc_ssi_watchdog()
901 lmc_t1_write (lmc_softc_t * const sc, int a, int d) in lmc_t1_write() argument
903 lmc_mii_writereg (sc, 0, 17, a); in lmc_t1_write()
904 lmc_mii_writereg (sc, 0, 18, d); in lmc_t1_write()
909 lmc_t1_read (lmc_softc_t * const sc, int a)
911 lmc_mii_writereg (sc, 0, 17, a);
912 return lmc_mii_readreg (sc, 0, 18);
918 lmc_t1_init (lmc_softc_t * const sc) in lmc_t1_init() argument
923 sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC1200; in lmc_t1_init()
924 mii16 = lmc_mii_readreg (sc, 0, 16); in lmc_t1_init()
928 lmc_mii_writereg (sc, 0, 16, mii16 | LMC_MII16_T1_RST); in lmc_t1_init()
929 lmc_mii_writereg (sc, 0, 16, mii16); in lmc_t1_init()
931 /* set T1 or E1 line. Uses sc->lmcmii16 reg in function so update it */ in lmc_t1_init()
932 sc->lmc_miireg16 = mii16; in lmc_t1_init()
933 lmc_t1_set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_T1); in lmc_t1_init()
934 mii16 = sc->lmc_miireg16; in lmc_t1_init()
936 lmc_t1_write (sc, 0x01, 0x1B); /* CR0 - primary control */ in lmc_t1_init()
937 lmc_t1_write (sc, 0x02, 0x42); /* JAT_CR - jitter atten config */ in lmc_t1_init()
938 lmc_t1_write (sc, 0x14, 0x00); /* LOOP - loopback config */ in lmc_t1_init()
939 lmc_t1_write (sc, 0x15, 0x00); /* DL3_TS - external data link timeslot */ in lmc_t1_init()
940 lmc_t1_write (sc, 0x18, 0xFF); /* PIO - programmable I/O */ in lmc_t1_init()
941 lmc_t1_write (sc, 0x19, 0x30); /* POE - programmable OE */ in lmc_t1_init()
942 lmc_t1_write (sc, 0x1A, 0x0F); /* CMUX - clock input mux */ in lmc_t1_init()
943 lmc_t1_write (sc, 0x20, 0x41); /* LIU_CR - RX LIU config */ in lmc_t1_init()
944 lmc_t1_write (sc, 0x22, 0x76); /* RLIU_CR - RX LIU config */ in lmc_t1_init()
945 lmc_t1_write (sc, 0x40, 0x03); /* RCR0 - RX config */ in lmc_t1_init()
946 lmc_t1_write (sc, 0x45, 0x00); /* RALM - RX alarm config */ in lmc_t1_init()
947 lmc_t1_write (sc, 0x46, 0x05); /* LATCH - RX alarm/err/cntr latch */ in lmc_t1_init()
948 lmc_t1_write (sc, 0x68, 0x40); /* TLIU_CR - TX LIU config */ in lmc_t1_init()
949 lmc_t1_write (sc, 0x70, 0x0D); /* TCR0 - TX framer config */ in lmc_t1_init()
950 lmc_t1_write (sc, 0x71, 0x05); /* TCR1 - TX config */ in lmc_t1_init()
951 lmc_t1_write (sc, 0x72, 0x0B); /* TFRM - TX frame format */ in lmc_t1_init()
952 lmc_t1_write (sc, 0x73, 0x00); /* TERROR - TX error insert */ in lmc_t1_init()
953 lmc_t1_write (sc, 0x74, 0x00); /* TMAN - TX manual Sa/FEBE config */ in lmc_t1_init()
954 lmc_t1_write (sc, 0x75, 0x00); /* TALM - TX alarm signal config */ in lmc_t1_init()
955 lmc_t1_write (sc, 0x76, 0x00); /* TPATT - TX test pattern config */ in lmc_t1_init()
956 lmc_t1_write (sc, 0x77, 0x00); /* TLB - TX inband loopback config */ in lmc_t1_init()
957 lmc_t1_write (sc, 0x90, 0x05); /* CLAD_CR - clock rate adapter config */ in lmc_t1_init()
958 lmc_t1_write (sc, 0x91, 0x05); /* CSEL - clad freq sel */ in lmc_t1_init()
959 lmc_t1_write (sc, 0xA6, 0x00); /* DL1_CTL - DL1 control */ in lmc_t1_init()
960 lmc_t1_write (sc, 0xB1, 0x00); /* DL2_CTL - DL2 control */ in lmc_t1_init()
961 lmc_t1_write (sc, 0xD0, 0x47); /* SBI_CR - sys bus iface config */ in lmc_t1_init()
962 lmc_t1_write (sc, 0xD1, 0x70); /* RSB_CR - RX sys bus config */ in lmc_t1_init()
963 lmc_t1_write (sc, 0xD4, 0x30); /* TSB_CR - TX sys bus config */ in lmc_t1_init()
966 lmc_t1_write (sc, 0x0E0 + i, 0x00); /* SBCn - sys bus per-channel ctl */ in lmc_t1_init()
967 lmc_t1_write (sc, 0x100 + i, 0x00); /* TPCn - TX per-channel ctl */ in lmc_t1_init()
968 lmc_t1_write (sc, 0x180 + i, 0x00); /* RPCn - RX per-channel ctl */ in lmc_t1_init()
972 lmc_t1_write (sc, 0x0E0 + i, 0x0D); /* SBCn - sys bus per-channel ctl */ in lmc_t1_init()
976 lmc_mii_writereg (sc, 0, 16, mii16); in lmc_t1_init()
977 sc->lmc_miireg16 = mii16; in lmc_t1_init()
981 lmc_t1_default (lmc_softc_t * const sc) in lmc_t1_default() argument
983 sc->lmc_miireg16 = LMC_MII16_LED_ALL; in lmc_t1_default()
984 sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN); in lmc_t1_default()
985 sc->lmc_media->set_circuit_type (sc, LMC_CTL_CIRCUIT_TYPE_T1); in lmc_t1_default()
986 sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16); in lmc_t1_default()
988 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT; in lmc_t1_default()
993 lmc_t1_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_t1_set_status() argument
997 sc->lmc_media->set_circuit_type (sc, sc->ictl.circuit_type); in lmc_t1_set_status()
998 lmc_set_protocol (sc, NULL); in lmc_t1_set_status()
1005 && sc->ictl.circuit_type == in lmc_t1_set_status()
1006 LMC_CTL_CIRCUIT_TYPE_E1) sc->lmc_media->set_circuit_type (sc, in lmc_t1_set_status()
1009 && sc->ictl.circuit_type == LMC_CTL_CIRCUIT_TYPE_T1) in lmc_t1_set_status()
1010 sc->lmc_media->set_circuit_type (sc, LMC_CTL_CIRCUIT_TYPE_T1); in lmc_t1_set_status()
1011 lmc_set_protocol (sc, ctl); in lmc_t1_set_status()
1017 lmc_t1_get_link_status (lmc_softc_t * const sc) in lmc_t1_get_link_status() argument
1031 lmc_trace(sc->lmc_device, "lmc_t1_get_link_status in"); in lmc_t1_get_link_status()
1032 lmc_led_on(sc, LMC_DS3_LED2); in lmc_t1_get_link_status()
1034 lmc_mii_writereg (sc, 0, 17, T1FRAMER_ALARM1_STATUS); in lmc_t1_get_link_status()
1035 link_status = lmc_mii_readreg (sc, 0, 18); in lmc_t1_get_link_status()
1040 if(sc->last_led_err[1] != 1){ in lmc_t1_get_link_status()
1041 printk(KERN_WARNING "%s: Receive AIS/Blue Alarm. Far end in RED alarm\n", sc->name); in lmc_t1_get_link_status()
1043 lmc_led_on(sc, LMC_DS3_LED1); in lmc_t1_get_link_status()
1044 sc->last_led_err[1] = 1; in lmc_t1_get_link_status()
1047 if(sc->last_led_err[1] != 0){ in lmc_t1_get_link_status()
1048 printk(KERN_WARNING "%s: End AIS/Blue Alarm\n", sc->name); in lmc_t1_get_link_status()
1050 lmc_led_off (sc, LMC_DS3_LED1); in lmc_t1_get_link_status()
1051 sc->last_led_err[1] = 0; in lmc_t1_get_link_status()
1066 if(sc->last_led_err[0] != 1){ in lmc_t1_get_link_status()
1067 printk(KERN_WARNING "%s: Receive Yellow AIS Alarm\n", sc->name); in lmc_t1_get_link_status()
1069 lmc_led_on(sc, LMC_DS3_LED0); in lmc_t1_get_link_status()
1070 sc->last_led_err[0] = 1; in lmc_t1_get_link_status()
1073 if(sc->last_led_err[0] != 0){ in lmc_t1_get_link_status()
1074 printk(KERN_WARNING "%s: End of Yellow AIS Alarm\n", sc->name); in lmc_t1_get_link_status()
1076 lmc_led_off(sc, LMC_DS3_LED0); in lmc_t1_get_link_status()
1077 sc->last_led_err[0] = 0; in lmc_t1_get_link_status()
1086 if(sc->last_led_err[3] != 1){ in lmc_t1_get_link_status()
1087 printk(KERN_WARNING "%s: Local Red Alarm: Loss of Framing\n", sc->name); in lmc_t1_get_link_status()
1089 lmc_led_on(sc, LMC_DS3_LED3); in lmc_t1_get_link_status()
1090 sc->last_led_err[3] = 1; in lmc_t1_get_link_status()
1094 if(sc->last_led_err[3] != 0){ in lmc_t1_get_link_status()
1095 printk(KERN_WARNING "%s: End Red Alarm (LOF)\n", sc->name); in lmc_t1_get_link_status()
1098 lmc_led_off(sc, LMC_DS3_LED3); in lmc_t1_get_link_status()
1099 sc->last_led_err[3] = 0; in lmc_t1_get_link_status()
1104 if(sc->last_led_err[2] != 1){ in lmc_t1_get_link_status()
1105 printk(KERN_WARNING "%s: Local Red Alarm: Loss of Signal\n", sc->name); in lmc_t1_get_link_status()
1107 lmc_led_on(sc, LMC_DS3_LED3); in lmc_t1_get_link_status()
1108 sc->last_led_err[2] = 1; in lmc_t1_get_link_status()
1112 if(sc->last_led_err[2] != 0){ in lmc_t1_get_link_status()
1113 printk(KERN_WARNING "%s: End Red Alarm (LOS)\n", sc->name); in lmc_t1_get_link_status()
1116 lmc_led_off(sc, LMC_DS3_LED3); in lmc_t1_get_link_status()
1117 sc->last_led_err[2] = 0; in lmc_t1_get_link_status()
1120 sc->lmc_xinfo.t1_alarm1_status = link_status; in lmc_t1_get_link_status()
1122 lmc_mii_writereg (sc, 0, 17, T1FRAMER_ALARM2_STATUS); in lmc_t1_get_link_status()
1123 sc->lmc_xinfo.t1_alarm2_status = lmc_mii_readreg (sc, 0, 18); in lmc_t1_get_link_status()
1126 lmc_trace(sc->lmc_device, "lmc_t1_get_link_status out"); in lmc_t1_get_link_status()
1135 lmc_t1_set_circuit_type (lmc_softc_t * const sc, int ie) in lmc_t1_set_circuit_type() argument
1138 sc->lmc_miireg16 |= LMC_MII16_T1_Z; in lmc_t1_set_circuit_type()
1139 sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_T1; in lmc_t1_set_circuit_type()
1140 printk(KERN_INFO "%s: In T1 Mode\n", sc->name); in lmc_t1_set_circuit_type()
1143 sc->lmc_miireg16 &= ~LMC_MII16_T1_Z; in lmc_t1_set_circuit_type()
1144 sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_E1; in lmc_t1_set_circuit_type()
1145 printk(KERN_INFO "%s: In E1 Mode\n", sc->name); in lmc_t1_set_circuit_type()
1148 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_t1_set_circuit_type()
1155 lmc_t1_set_crc_length (lmc_softc_t * const sc, int state) in lmc_t1_set_crc_length() argument
1160 sc->lmc_miireg16 |= LMC_MII16_T1_CRC; in lmc_t1_set_crc_length()
1161 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32; in lmc_t1_set_crc_length()
1162 sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_4; in lmc_t1_set_crc_length()
1167 /* 16 bit */ sc->lmc_miireg16 &= ~LMC_MII16_T1_CRC; in lmc_t1_set_crc_length()
1168 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16; in lmc_t1_set_crc_length()
1169 sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_2; in lmc_t1_set_crc_length()
1173 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_t1_set_crc_length()
1180 lmc_t1_set_clock (lmc_softc_t * const sc, int ie) in lmc_t1_set_clock() argument
1186 sc->lmc_gpio &= ~(LMC_GEP_SSI_TXCLOCK); in lmc_t1_set_clock()
1187 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_t1_set_clock()
1188 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT; in lmc_t1_set_clock()
1194 sc->lmc_gpio |= LMC_GEP_SSI_TXCLOCK; in lmc_t1_set_clock()
1195 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_t1_set_clock()
1196 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT; in lmc_t1_set_clock()
1203 lmc_t1_watchdog (lmc_softc_t * const sc) in lmc_t1_watchdog() argument
1208 lmc_set_protocol (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_set_protocol() argument
1211 sc->ictl.keepalive_onoff = LMC_CTL_ON; in lmc_set_protocol()