Lines Matching refs:sc

157 lmc_dummy_set_1 (lmc_softc_t * const sc, int a)  in lmc_dummy_set_1()  argument
162 lmc_dummy_set2_1 (lmc_softc_t * const sc, lmc_ctl_t * a) in lmc_dummy_set2_1() argument
171 lmc_hssi_init (lmc_softc_t * const sc) in lmc_hssi_init() argument
173 sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC5200; in lmc_hssi_init()
175 lmc_gpio_mkoutput (sc, LMC_GEP_HSSI_CLOCK); in lmc_hssi_init()
179 lmc_hssi_default (lmc_softc_t * const sc) in lmc_hssi_default() argument
181 sc->lmc_miireg16 = LMC_MII16_LED_ALL; in lmc_hssi_default()
183 sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN); in lmc_hssi_default()
184 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT); in lmc_hssi_default()
185 sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16); in lmc_hssi_default()
193 lmc_hssi_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_hssi_set_status() argument
197 sc->lmc_media->set_clock_source (sc, sc->ictl.clock_source); in lmc_hssi_set_status()
198 lmc_set_protocol (sc, NULL); in lmc_hssi_set_status()
206 if (ctl->clock_source && !sc->ictl.clock_source) in lmc_hssi_set_status()
208 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_INT); in lmc_hssi_set_status()
209 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT; in lmc_hssi_set_status()
211 else if (!ctl->clock_source && sc->ictl.clock_source) in lmc_hssi_set_status()
213 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT; in lmc_hssi_set_status()
214 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT); in lmc_hssi_set_status()
217 lmc_set_protocol (sc, ctl); in lmc_hssi_set_status()
224 lmc_hssi_set_clock (lmc_softc_t * const sc, int ie) in lmc_hssi_set_clock() argument
227 old = sc->ictl.clock_source; in lmc_hssi_set_clock()
230 sc->lmc_gpio |= LMC_GEP_HSSI_CLOCK; in lmc_hssi_set_clock()
231 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_hssi_set_clock()
232 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT; in lmc_hssi_set_clock()
238 sc->lmc_gpio &= ~(LMC_GEP_HSSI_CLOCK); in lmc_hssi_set_clock()
239 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_hssi_set_clock()
240 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT; in lmc_hssi_set_clock()
251 lmc_hssi_get_link_status (lmc_softc_t * const sc) in lmc_hssi_get_link_status() argument
257 return lmc_ssi_get_link_status(sc); in lmc_hssi_get_link_status()
261 lmc_hssi_set_link_status (lmc_softc_t * const sc, int state) in lmc_hssi_set_link_status() argument
264 sc->lmc_miireg16 |= LMC_MII16_HSSI_TA; in lmc_hssi_set_link_status()
266 sc->lmc_miireg16 &= ~LMC_MII16_HSSI_TA; in lmc_hssi_set_link_status()
268 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_hssi_set_link_status()
275 lmc_hssi_set_crc_length (lmc_softc_t * const sc, int state) in lmc_hssi_set_crc_length() argument
280 sc->lmc_miireg16 |= LMC_MII16_HSSI_CRC; in lmc_hssi_set_crc_length()
281 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32; in lmc_hssi_set_crc_length()
286 sc->lmc_miireg16 &= ~LMC_MII16_HSSI_CRC; in lmc_hssi_set_crc_length()
287 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16; in lmc_hssi_set_crc_length()
290 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_hssi_set_crc_length()
294 lmc_hssi_watchdog (lmc_softc_t * const sc) in lmc_hssi_watchdog() argument
307 lmc_ds3_set_100ft (lmc_softc_t * const sc, int ie) in lmc_ds3_set_100ft() argument
311 sc->lmc_miireg16 &= ~LMC_MII16_DS3_ZERO; in lmc_ds3_set_100ft()
312 sc->ictl.cable_length = LMC_CTL_CABLE_LENGTH_GT_100FT; in lmc_ds3_set_100ft()
316 sc->lmc_miireg16 |= LMC_MII16_DS3_ZERO; in lmc_ds3_set_100ft()
317 sc->ictl.cable_length = LMC_CTL_CABLE_LENGTH_LT_100FT; in lmc_ds3_set_100ft()
319 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_ds3_set_100ft()
323 lmc_ds3_default (lmc_softc_t * const sc) in lmc_ds3_default() argument
325 sc->lmc_miireg16 = LMC_MII16_LED_ALL; in lmc_ds3_default()
327 sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN); in lmc_ds3_default()
328 sc->lmc_media->set_cable_length (sc, LMC_CTL_CABLE_LENGTH_LT_100FT); in lmc_ds3_default()
329 sc->lmc_media->set_scrambler (sc, LMC_CTL_OFF); in lmc_ds3_default()
330 sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16); in lmc_ds3_default()
338 lmc_ds3_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_ds3_set_status() argument
342 sc->lmc_media->set_cable_length (sc, sc->ictl.cable_length); in lmc_ds3_set_status()
343 sc->lmc_media->set_scrambler (sc, sc->ictl.scrambler_onoff); in lmc_ds3_set_status()
344 lmc_set_protocol (sc, NULL); in lmc_ds3_set_status()
352 if (ctl->cable_length && !sc->ictl.cable_length) in lmc_ds3_set_status()
353 lmc_ds3_set_100ft (sc, LMC_CTL_CABLE_LENGTH_GT_100FT); in lmc_ds3_set_status()
354 else if (!ctl->cable_length && sc->ictl.cable_length) in lmc_ds3_set_status()
355 lmc_ds3_set_100ft (sc, LMC_CTL_CABLE_LENGTH_LT_100FT); in lmc_ds3_set_status()
360 if (ctl->scrambler_onoff && !sc->ictl.scrambler_onoff) in lmc_ds3_set_status()
361 lmc_ds3_set_scram (sc, LMC_CTL_ON); in lmc_ds3_set_status()
362 else if (!ctl->scrambler_onoff && sc->ictl.scrambler_onoff) in lmc_ds3_set_status()
363 lmc_ds3_set_scram (sc, LMC_CTL_OFF); in lmc_ds3_set_status()
365 lmc_set_protocol (sc, ctl); in lmc_ds3_set_status()
369 lmc_ds3_init (lmc_softc_t * const sc) in lmc_ds3_init() argument
373 sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC5245; in lmc_ds3_init()
378 lmc_mii_writereg (sc, 0, 17, i); in lmc_ds3_init()
379 lmc_mii_writereg (sc, 0, 18, 0); in lmc_ds3_init()
383 lmc_mii_writereg (sc, 0, 17, 1); in lmc_ds3_init()
384 lmc_mii_writereg (sc, 0, 18, 0x25); /* ser, xtx */ in lmc_ds3_init()
386 lmc_mii_writereg (sc, 0, 17, 5); in lmc_ds3_init()
387 lmc_mii_writereg (sc, 0, 18, 0x80); /* emode */ in lmc_ds3_init()
389 lmc_mii_writereg (sc, 0, 17, 14); in lmc_ds3_init()
390 lmc_mii_writereg (sc, 0, 18, 0x30); /* rcgen, tcgen */ in lmc_ds3_init()
395 lmc_mii_writereg (sc, 0, 17, i); in lmc_ds3_init()
396 lmc_mii_readreg (sc, 0, 18); in lmc_ds3_init()
404 lmc_ds3_set_scram (lmc_softc_t * const sc, int ie) in lmc_ds3_set_scram() argument
408 sc->lmc_miireg16 |= LMC_MII16_DS3_SCRAM; in lmc_ds3_set_scram()
409 sc->ictl.scrambler_onoff = LMC_CTL_ON; in lmc_ds3_set_scram()
413 sc->lmc_miireg16 &= ~LMC_MII16_DS3_SCRAM; in lmc_ds3_set_scram()
414 sc->ictl.scrambler_onoff = LMC_CTL_OFF; in lmc_ds3_set_scram()
416 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_ds3_set_scram()
424 lmc_ds3_get_link_status (lmc_softc_t * const sc) in lmc_ds3_get_link_status() argument
429 lmc_mii_writereg (sc, 0, 17, 7); in lmc_ds3_get_link_status()
430 link_status = lmc_mii_readreg (sc, 0, 18); in lmc_ds3_get_link_status()
442 lmc_led_on(sc, LMC_DS3_LED2); in lmc_ds3_get_link_status()
447 if(sc->last_led_err[3] != 1){ in lmc_ds3_get_link_status()
449 lmc_mii_writereg (sc, 0, 17, 01); /* Turn on Xbit error as our cisco does */ in lmc_ds3_get_link_status()
450 r1 = lmc_mii_readreg (sc, 0, 18); in lmc_ds3_get_link_status()
452 lmc_mii_writereg(sc, 0, 18, r1); in lmc_ds3_get_link_status()
453 printk(KERN_WARNING "%s: Red Alarm - Loss of Signal or Loss of Framing\n", sc->name); in lmc_ds3_get_link_status()
455 lmc_led_on(sc, LMC_DS3_LED3); /* turn on red LED */ in lmc_ds3_get_link_status()
456 sc->last_led_err[3] = 1; in lmc_ds3_get_link_status()
459 lmc_led_off(sc, LMC_DS3_LED3); /* turn on red LED */ in lmc_ds3_get_link_status()
460 if(sc->last_led_err[3] == 1){ in lmc_ds3_get_link_status()
462 lmc_mii_writereg (sc, 0, 17, 01); /* Turn off Xbit error */ in lmc_ds3_get_link_status()
463 r1 = lmc_mii_readreg (sc, 0, 18); in lmc_ds3_get_link_status()
465 lmc_mii_writereg(sc, 0, 18, r1); in lmc_ds3_get_link_status()
467 sc->last_led_err[3] = 0; in lmc_ds3_get_link_status()
470 lmc_mii_writereg(sc, 0, 17, 0x10); in lmc_ds3_get_link_status()
471 link_status_11 = lmc_mii_readreg(sc, 0, 18); in lmc_ds3_get_link_status()
475 if(sc->last_led_err[0] != 1){ in lmc_ds3_get_link_status()
476 printk(KERN_WARNING "%s: AIS Alarm or XBit Error\n", sc->name); in lmc_ds3_get_link_status()
477 printk(KERN_WARNING "%s: Remote end has loss of signal or framing\n", sc->name); in lmc_ds3_get_link_status()
479 lmc_led_on(sc, LMC_DS3_LED0); in lmc_ds3_get_link_status()
480 sc->last_led_err[0] = 1; in lmc_ds3_get_link_status()
483 lmc_led_off(sc, LMC_DS3_LED0); in lmc_ds3_get_link_status()
484 sc->last_led_err[0] = 0; in lmc_ds3_get_link_status()
487 lmc_mii_writereg (sc, 0, 17, 9); in lmc_ds3_get_link_status()
488 link_status = lmc_mii_readreg (sc, 0, 18); in lmc_ds3_get_link_status()
492 if(sc->last_led_err[1] != 1){ in lmc_ds3_get_link_status()
493 printk(KERN_WARNING "%s: Blue Alarm - Receiving all 1's\n", sc->name); in lmc_ds3_get_link_status()
495 lmc_led_on(sc, LMC_DS3_LED1); in lmc_ds3_get_link_status()
496 sc->last_led_err[1] = 1; in lmc_ds3_get_link_status()
499 lmc_led_off(sc, LMC_DS3_LED1); in lmc_ds3_get_link_status()
500 sc->last_led_err[1] = 0; in lmc_ds3_get_link_status()
510 lmc_ds3_set_crc_length (lmc_softc_t * const sc, int state) in lmc_ds3_set_crc_length() argument
515 sc->lmc_miireg16 |= LMC_MII16_DS3_CRC; in lmc_ds3_set_crc_length()
516 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32; in lmc_ds3_set_crc_length()
521 sc->lmc_miireg16 &= ~LMC_MII16_DS3_CRC; in lmc_ds3_set_crc_length()
522 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16; in lmc_ds3_set_crc_length()
525 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_ds3_set_crc_length()
529 lmc_ds3_watchdog (lmc_softc_t * const sc) in lmc_ds3_watchdog() argument
539 static void lmc_ssi_init(lmc_softc_t * const sc) in lmc_ssi_init() argument
544 sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC1000; in lmc_ssi_init()
546 mii17 = lmc_mii_readreg(sc, 0, 17); in lmc_ssi_init()
549 sc->ictl.cable_type = cable; in lmc_ssi_init()
551 lmc_gpio_mkoutput(sc, LMC_GEP_SSI_TXCLOCK); in lmc_ssi_init()
555 lmc_ssi_default (lmc_softc_t * const sc) in lmc_ssi_default() argument
557 sc->lmc_miireg16 = LMC_MII16_LED_ALL; in lmc_ssi_default()
562 lmc_gpio_mkoutput (sc, LMC_GEP_SSI_TXCLOCK); in lmc_ssi_default()
564 sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN); in lmc_ssi_default()
565 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT); in lmc_ssi_default()
566 sc->lmc_media->set_speed (sc, NULL); in lmc_ssi_default()
567 sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16); in lmc_ssi_default()
575 lmc_ssi_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_ssi_set_status() argument
579 sc->lmc_media->set_clock_source (sc, sc->ictl.clock_source); in lmc_ssi_set_status()
580 sc->lmc_media->set_speed (sc, &sc->ictl); in lmc_ssi_set_status()
581 lmc_set_protocol (sc, NULL); in lmc_ssi_set_status()
590 && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_EXT) in lmc_ssi_set_status()
592 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_INT); in lmc_ssi_set_status()
593 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT; in lmc_ssi_set_status()
596 && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_INT) in lmc_ssi_set_status()
598 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT); in lmc_ssi_set_status()
599 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT; in lmc_ssi_set_status()
602 if (ctl->clock_rate != sc->ictl.clock_rate) in lmc_ssi_set_status()
603 sc->lmc_media->set_speed (sc, ctl); in lmc_ssi_set_status()
605 lmc_set_protocol (sc, ctl); in lmc_ssi_set_status()
612 lmc_ssi_set_clock (lmc_softc_t * const sc, int ie) in lmc_ssi_set_clock() argument
618 sc->lmc_gpio &= ~(LMC_GEP_SSI_TXCLOCK); in lmc_ssi_set_clock()
619 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_ssi_set_clock()
620 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT; in lmc_ssi_set_clock()
626 sc->lmc_gpio |= LMC_GEP_SSI_TXCLOCK; in lmc_ssi_set_clock()
627 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_ssi_set_clock()
628 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT; in lmc_ssi_set_clock()
635 lmc_ssi_set_speed (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_ssi_set_speed() argument
637 lmc_ctl_t *ictl = &sc->ictl; in lmc_ssi_set_speed()
657 write_av9110 (sc, av->n, av->m, av->v, av->x, av->r); in lmc_ssi_set_speed()
669 write_av9110 (sc, av->n, av->m, av->v, av->x, av->r); in lmc_ssi_set_speed()
677 lmc_ssi_get_link_status (lmc_softc_t * const sc) in lmc_ssi_get_link_status() argument
704 link_status = lmc_mii_readreg (sc, 0, 16); in lmc_ssi_get_link_status()
707 ticks = LMC_CSR_READ (sc, csr_gp_timer); in lmc_ssi_get_link_status()
710 lmc_led_on (sc, LMC_MII16_LED0); in lmc_ssi_get_link_status()
713 if (sc->lmc_timing == LMC_CTL_CLOCK_SOURCE_INT) { in lmc_ssi_get_link_status()
714 lmc_led_off(sc, LMC_MII16_LED3); in lmc_ssi_get_link_status()
718 if (sc->last_led_err[3] != 1) { in lmc_ssi_get_link_status()
719 sc->extra_stats.tx_lossOfClockCnt++; in lmc_ssi_get_link_status()
720 printk(KERN_WARNING "%s: Lost Clock, Link Down\n", sc->name); in lmc_ssi_get_link_status()
722 sc->last_led_err[3] = 1; in lmc_ssi_get_link_status()
723 lmc_led_on (sc, LMC_MII16_LED3); /* turn ON red LED */ in lmc_ssi_get_link_status()
726 if(sc->last_led_err[3] == 1) in lmc_ssi_get_link_status()
727 printk(KERN_WARNING "%s: Clock Returned\n", sc->name); in lmc_ssi_get_link_status()
728 sc->last_led_err[3] = 0; in lmc_ssi_get_link_status()
729 lmc_led_off (sc, LMC_MII16_LED3); /* turn OFF red LED */ in lmc_ssi_get_link_status()
745 if(sc->last_led_err[1] != 1) in lmc_ssi_get_link_status()
746 printk(KERN_WARNING "%s: DSR not asserted\n", sc->name); in lmc_ssi_get_link_status()
747 sc->last_led_err[1] = 1; in lmc_ssi_get_link_status()
748 lmc_led_off(sc, LMC_MII16_LED1); in lmc_ssi_get_link_status()
751 if(sc->last_led_err[1] != 0) in lmc_ssi_get_link_status()
752 printk(KERN_WARNING "%s: DSR now asserted\n", sc->name); in lmc_ssi_get_link_status()
753 sc->last_led_err[1] = 0; in lmc_ssi_get_link_status()
754 lmc_led_on(sc, LMC_MII16_LED1); in lmc_ssi_get_link_status()
758 lmc_led_on(sc, LMC_MII16_LED2); /* Over all good status? */ in lmc_ssi_get_link_status()
765 lmc_ssi_set_link_status (lmc_softc_t * const sc, int state) in lmc_ssi_set_link_status() argument
769 sc->lmc_miireg16 |= (LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS); in lmc_ssi_set_link_status()
774 sc->lmc_miireg16 &= ~(LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS); in lmc_ssi_set_link_status()
778 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_ssi_set_link_status()
786 lmc_ssi_set_crc_length (lmc_softc_t * const sc, int state) in lmc_ssi_set_crc_length() argument
791 sc->lmc_miireg16 |= LMC_MII16_SSI_CRC; in lmc_ssi_set_crc_length()
792 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32; in lmc_ssi_set_crc_length()
793 sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_4; in lmc_ssi_set_crc_length()
799 sc->lmc_miireg16 &= ~LMC_MII16_SSI_CRC; in lmc_ssi_set_crc_length()
800 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16; in lmc_ssi_set_crc_length()
801 sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_2; in lmc_ssi_set_crc_length()
804 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_ssi_set_crc_length()
811 write_av9110_bit (lmc_softc_t * sc, int c) in write_av9110_bit() argument
816 sc->lmc_gpio &= ~(LMC_GEP_CLK); in write_av9110_bit()
818 sc->lmc_gpio |= LMC_GEP_DATA; in write_av9110_bit()
820 sc->lmc_gpio &= ~(LMC_GEP_DATA); in write_av9110_bit()
821 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in write_av9110_bit()
826 sc->lmc_gpio |= LMC_GEP_CLK; in write_av9110_bit()
827 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in write_av9110_bit()
832 sc->lmc_gpio &= ~(LMC_GEP_CLK); in write_av9110_bit()
833 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in write_av9110_bit()
836 static void write_av9110(lmc_softc_t *sc, u32 n, u32 m, u32 v, u32 x, u32 r) in write_av9110() argument
842 LMC_PRINTF_ARGS, sc->ictl.clock_rate, n, m, v, x, r); in write_av9110()
845 sc->lmc_gpio |= LMC_GEP_SSI_GENERATOR; in write_av9110()
846 sc->lmc_gpio &= ~(LMC_GEP_DATA | LMC_GEP_CLK); in write_av9110()
847 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in write_av9110()
853 lmc_gpio_mkoutput (sc, (LMC_GEP_DATA | LMC_GEP_CLK in write_av9110()
856 sc->lmc_gpio &= ~(LMC_GEP_SSI_GENERATOR); in write_av9110()
857 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in write_av9110()
863 write_av9110_bit (sc, n >> i); in write_av9110()
865 write_av9110_bit (sc, m >> i); in write_av9110()
867 write_av9110_bit (sc, v >> i); in write_av9110()
869 write_av9110_bit (sc, x >> i); in write_av9110()
871 write_av9110_bit (sc, r >> i); in write_av9110()
873 write_av9110_bit (sc, 0x17 >> i); in write_av9110()
878 lmc_gpio_mkinput (sc, in write_av9110()
883 static void lmc_ssi_watchdog(lmc_softc_t * const sc) in lmc_ssi_watchdog() argument
885 u16 mii17 = lmc_mii_readreg(sc, 0, 17); in lmc_ssi_watchdog()
887 lmc_led_off(sc, LMC_MII16_LED2); in lmc_ssi_watchdog()
889 lmc_led_on(sc, LMC_MII16_LED2); in lmc_ssi_watchdog()
900 lmc_t1_write (lmc_softc_t * const sc, int a, int d) in lmc_t1_write() argument
902 lmc_mii_writereg (sc, 0, 17, a); in lmc_t1_write()
903 lmc_mii_writereg (sc, 0, 18, d); in lmc_t1_write()
917 lmc_t1_init (lmc_softc_t * const sc) in lmc_t1_init() argument
922 sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC1200; in lmc_t1_init()
923 mii16 = lmc_mii_readreg (sc, 0, 16); in lmc_t1_init()
927 lmc_mii_writereg (sc, 0, 16, mii16 | LMC_MII16_T1_RST); in lmc_t1_init()
928 lmc_mii_writereg (sc, 0, 16, mii16); in lmc_t1_init()
931 sc->lmc_miireg16 = mii16; in lmc_t1_init()
932 lmc_t1_set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_T1); in lmc_t1_init()
933 mii16 = sc->lmc_miireg16; in lmc_t1_init()
935 lmc_t1_write (sc, 0x01, 0x1B); /* CR0 - primary control */ in lmc_t1_init()
936 lmc_t1_write (sc, 0x02, 0x42); /* JAT_CR - jitter atten config */ in lmc_t1_init()
937 lmc_t1_write (sc, 0x14, 0x00); /* LOOP - loopback config */ in lmc_t1_init()
938 lmc_t1_write (sc, 0x15, 0x00); /* DL3_TS - external data link timeslot */ in lmc_t1_init()
939 lmc_t1_write (sc, 0x18, 0xFF); /* PIO - programmable I/O */ in lmc_t1_init()
940 lmc_t1_write (sc, 0x19, 0x30); /* POE - programmable OE */ in lmc_t1_init()
941 lmc_t1_write (sc, 0x1A, 0x0F); /* CMUX - clock input mux */ in lmc_t1_init()
942 lmc_t1_write (sc, 0x20, 0x41); /* LIU_CR - RX LIU config */ in lmc_t1_init()
943 lmc_t1_write (sc, 0x22, 0x76); /* RLIU_CR - RX LIU config */ in lmc_t1_init()
944 lmc_t1_write (sc, 0x40, 0x03); /* RCR0 - RX config */ in lmc_t1_init()
945 lmc_t1_write (sc, 0x45, 0x00); /* RALM - RX alarm config */ in lmc_t1_init()
946 lmc_t1_write (sc, 0x46, 0x05); /* LATCH - RX alarm/err/cntr latch */ in lmc_t1_init()
947 lmc_t1_write (sc, 0x68, 0x40); /* TLIU_CR - TX LIU config */ in lmc_t1_init()
948 lmc_t1_write (sc, 0x70, 0x0D); /* TCR0 - TX framer config */ in lmc_t1_init()
949 lmc_t1_write (sc, 0x71, 0x05); /* TCR1 - TX config */ in lmc_t1_init()
950 lmc_t1_write (sc, 0x72, 0x0B); /* TFRM - TX frame format */ in lmc_t1_init()
951 lmc_t1_write (sc, 0x73, 0x00); /* TERROR - TX error insert */ in lmc_t1_init()
952 lmc_t1_write (sc, 0x74, 0x00); /* TMAN - TX manual Sa/FEBE config */ in lmc_t1_init()
953 lmc_t1_write (sc, 0x75, 0x00); /* TALM - TX alarm signal config */ in lmc_t1_init()
954 lmc_t1_write (sc, 0x76, 0x00); /* TPATT - TX test pattern config */ in lmc_t1_init()
955 lmc_t1_write (sc, 0x77, 0x00); /* TLB - TX inband loopback config */ in lmc_t1_init()
956 lmc_t1_write (sc, 0x90, 0x05); /* CLAD_CR - clock rate adapter config */ in lmc_t1_init()
957 lmc_t1_write (sc, 0x91, 0x05); /* CSEL - clad freq sel */ in lmc_t1_init()
958 lmc_t1_write (sc, 0xA6, 0x00); /* DL1_CTL - DL1 control */ in lmc_t1_init()
959 lmc_t1_write (sc, 0xB1, 0x00); /* DL2_CTL - DL2 control */ in lmc_t1_init()
960 lmc_t1_write (sc, 0xD0, 0x47); /* SBI_CR - sys bus iface config */ in lmc_t1_init()
961 lmc_t1_write (sc, 0xD1, 0x70); /* RSB_CR - RX sys bus config */ in lmc_t1_init()
962 lmc_t1_write (sc, 0xD4, 0x30); /* TSB_CR - TX sys bus config */ in lmc_t1_init()
965 lmc_t1_write (sc, 0x0E0 + i, 0x00); /* SBCn - sys bus per-channel ctl */ in lmc_t1_init()
966 lmc_t1_write (sc, 0x100 + i, 0x00); /* TPCn - TX per-channel ctl */ in lmc_t1_init()
967 lmc_t1_write (sc, 0x180 + i, 0x00); /* RPCn - RX per-channel ctl */ in lmc_t1_init()
971 lmc_t1_write (sc, 0x0E0 + i, 0x0D); /* SBCn - sys bus per-channel ctl */ in lmc_t1_init()
975 lmc_mii_writereg (sc, 0, 16, mii16); in lmc_t1_init()
976 sc->lmc_miireg16 = mii16; in lmc_t1_init()
980 lmc_t1_default (lmc_softc_t * const sc) in lmc_t1_default() argument
982 sc->lmc_miireg16 = LMC_MII16_LED_ALL; in lmc_t1_default()
983 sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN); in lmc_t1_default()
984 sc->lmc_media->set_circuit_type (sc, LMC_CTL_CIRCUIT_TYPE_T1); in lmc_t1_default()
985 sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16); in lmc_t1_default()
987 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT; in lmc_t1_default()
992 lmc_t1_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_t1_set_status() argument
996 sc->lmc_media->set_circuit_type (sc, sc->ictl.circuit_type); in lmc_t1_set_status()
997 lmc_set_protocol (sc, NULL); in lmc_t1_set_status()
1004 && sc->ictl.circuit_type == in lmc_t1_set_status()
1005 LMC_CTL_CIRCUIT_TYPE_E1) sc->lmc_media->set_circuit_type (sc, in lmc_t1_set_status()
1008 && sc->ictl.circuit_type == LMC_CTL_CIRCUIT_TYPE_T1) in lmc_t1_set_status()
1009 sc->lmc_media->set_circuit_type (sc, LMC_CTL_CIRCUIT_TYPE_T1); in lmc_t1_set_status()
1010 lmc_set_protocol (sc, ctl); in lmc_t1_set_status()
1016 lmc_t1_get_link_status (lmc_softc_t * const sc) in lmc_t1_get_link_status() argument
1030 lmc_trace(sc->lmc_device, "lmc_t1_get_link_status in"); in lmc_t1_get_link_status()
1031 lmc_led_on(sc, LMC_DS3_LED2); in lmc_t1_get_link_status()
1033 lmc_mii_writereg (sc, 0, 17, T1FRAMER_ALARM1_STATUS); in lmc_t1_get_link_status()
1034 link_status = lmc_mii_readreg (sc, 0, 18); in lmc_t1_get_link_status()
1039 if(sc->last_led_err[1] != 1){ in lmc_t1_get_link_status()
1040 printk(KERN_WARNING "%s: Receive AIS/Blue Alarm. Far end in RED alarm\n", sc->name); in lmc_t1_get_link_status()
1042 lmc_led_on(sc, LMC_DS3_LED1); in lmc_t1_get_link_status()
1043 sc->last_led_err[1] = 1; in lmc_t1_get_link_status()
1046 if(sc->last_led_err[1] != 0){ in lmc_t1_get_link_status()
1047 printk(KERN_WARNING "%s: End AIS/Blue Alarm\n", sc->name); in lmc_t1_get_link_status()
1049 lmc_led_off (sc, LMC_DS3_LED1); in lmc_t1_get_link_status()
1050 sc->last_led_err[1] = 0; in lmc_t1_get_link_status()
1065 if(sc->last_led_err[0] != 1){ in lmc_t1_get_link_status()
1066 printk(KERN_WARNING "%s: Receive Yellow AIS Alarm\n", sc->name); in lmc_t1_get_link_status()
1068 lmc_led_on(sc, LMC_DS3_LED0); in lmc_t1_get_link_status()
1069 sc->last_led_err[0] = 1; in lmc_t1_get_link_status()
1072 if(sc->last_led_err[0] != 0){ in lmc_t1_get_link_status()
1073 printk(KERN_WARNING "%s: End of Yellow AIS Alarm\n", sc->name); in lmc_t1_get_link_status()
1075 lmc_led_off(sc, LMC_DS3_LED0); in lmc_t1_get_link_status()
1076 sc->last_led_err[0] = 0; in lmc_t1_get_link_status()
1085 if(sc->last_led_err[3] != 1){ in lmc_t1_get_link_status()
1086 printk(KERN_WARNING "%s: Local Red Alarm: Loss of Framing\n", sc->name); in lmc_t1_get_link_status()
1088 lmc_led_on(sc, LMC_DS3_LED3); in lmc_t1_get_link_status()
1089 sc->last_led_err[3] = 1; in lmc_t1_get_link_status()
1093 if(sc->last_led_err[3] != 0){ in lmc_t1_get_link_status()
1094 printk(KERN_WARNING "%s: End Red Alarm (LOF)\n", sc->name); in lmc_t1_get_link_status()
1097 lmc_led_off(sc, LMC_DS3_LED3); in lmc_t1_get_link_status()
1098 sc->last_led_err[3] = 0; in lmc_t1_get_link_status()
1103 if(sc->last_led_err[2] != 1){ in lmc_t1_get_link_status()
1104 printk(KERN_WARNING "%s: Local Red Alarm: Loss of Signal\n", sc->name); in lmc_t1_get_link_status()
1106 lmc_led_on(sc, LMC_DS3_LED3); in lmc_t1_get_link_status()
1107 sc->last_led_err[2] = 1; in lmc_t1_get_link_status()
1111 if(sc->last_led_err[2] != 0){ in lmc_t1_get_link_status()
1112 printk(KERN_WARNING "%s: End Red Alarm (LOS)\n", sc->name); in lmc_t1_get_link_status()
1115 lmc_led_off(sc, LMC_DS3_LED3); in lmc_t1_get_link_status()
1116 sc->last_led_err[2] = 0; in lmc_t1_get_link_status()
1119 sc->lmc_xinfo.t1_alarm1_status = link_status; in lmc_t1_get_link_status()
1121 lmc_mii_writereg (sc, 0, 17, T1FRAMER_ALARM2_STATUS); in lmc_t1_get_link_status()
1122 sc->lmc_xinfo.t1_alarm2_status = lmc_mii_readreg (sc, 0, 18); in lmc_t1_get_link_status()
1125 lmc_trace(sc->lmc_device, "lmc_t1_get_link_status out"); in lmc_t1_get_link_status()
1134 lmc_t1_set_circuit_type (lmc_softc_t * const sc, int ie) in lmc_t1_set_circuit_type() argument
1137 sc->lmc_miireg16 |= LMC_MII16_T1_Z; in lmc_t1_set_circuit_type()
1138 sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_T1; in lmc_t1_set_circuit_type()
1139 printk(KERN_INFO "%s: In T1 Mode\n", sc->name); in lmc_t1_set_circuit_type()
1142 sc->lmc_miireg16 &= ~LMC_MII16_T1_Z; in lmc_t1_set_circuit_type()
1143 sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_E1; in lmc_t1_set_circuit_type()
1144 printk(KERN_INFO "%s: In E1 Mode\n", sc->name); in lmc_t1_set_circuit_type()
1147 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_t1_set_circuit_type()
1154 lmc_t1_set_crc_length (lmc_softc_t * const sc, int state) in lmc_t1_set_crc_length() argument
1159 sc->lmc_miireg16 |= LMC_MII16_T1_CRC; in lmc_t1_set_crc_length()
1160 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32; in lmc_t1_set_crc_length()
1161 sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_4; in lmc_t1_set_crc_length()
1166 /* 16 bit */ sc->lmc_miireg16 &= ~LMC_MII16_T1_CRC; in lmc_t1_set_crc_length()
1167 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16; in lmc_t1_set_crc_length()
1168 sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_2; in lmc_t1_set_crc_length()
1172 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_t1_set_crc_length()
1179 lmc_t1_set_clock (lmc_softc_t * const sc, int ie) in lmc_t1_set_clock() argument
1185 sc->lmc_gpio &= ~(LMC_GEP_SSI_TXCLOCK); in lmc_t1_set_clock()
1186 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_t1_set_clock()
1187 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT; in lmc_t1_set_clock()
1193 sc->lmc_gpio |= LMC_GEP_SSI_TXCLOCK; in lmc_t1_set_clock()
1194 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_t1_set_clock()
1195 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT; in lmc_t1_set_clock()
1202 lmc_t1_watchdog (lmc_softc_t * const sc) in lmc_t1_watchdog() argument
1207 lmc_set_protocol (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_set_protocol() argument
1210 sc->ictl.keepalive_onoff = LMC_CTL_ON; in lmc_set_protocol()