• Home
  • Raw
  • Download

Lines Matching refs:sc

156 lmc_dummy_set_1 (lmc_softc_t * const sc, int a)  in lmc_dummy_set_1()  argument
161 lmc_dummy_set2_1 (lmc_softc_t * const sc, lmc_ctl_t * a) in lmc_dummy_set2_1() argument
170 lmc_hssi_init (lmc_softc_t * const sc) in lmc_hssi_init() argument
172 sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC5200; in lmc_hssi_init()
174 lmc_gpio_mkoutput (sc, LMC_GEP_HSSI_CLOCK); in lmc_hssi_init()
178 lmc_hssi_default (lmc_softc_t * const sc) in lmc_hssi_default() argument
180 sc->lmc_miireg16 = LMC_MII16_LED_ALL; in lmc_hssi_default()
182 sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN); in lmc_hssi_default()
183 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT); in lmc_hssi_default()
184 sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16); in lmc_hssi_default()
192 lmc_hssi_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_hssi_set_status() argument
196 sc->lmc_media->set_clock_source (sc, sc->ictl.clock_source); in lmc_hssi_set_status()
197 lmc_set_protocol (sc, NULL); in lmc_hssi_set_status()
205 if (ctl->clock_source && !sc->ictl.clock_source) in lmc_hssi_set_status()
207 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_INT); in lmc_hssi_set_status()
208 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT; in lmc_hssi_set_status()
210 else if (!ctl->clock_source && sc->ictl.clock_source) in lmc_hssi_set_status()
212 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT; in lmc_hssi_set_status()
213 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT); in lmc_hssi_set_status()
216 lmc_set_protocol (sc, ctl); in lmc_hssi_set_status()
223 lmc_hssi_set_clock (lmc_softc_t * const sc, int ie) in lmc_hssi_set_clock() argument
226 old = sc->ictl.clock_source; in lmc_hssi_set_clock()
229 sc->lmc_gpio |= LMC_GEP_HSSI_CLOCK; in lmc_hssi_set_clock()
230 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_hssi_set_clock()
231 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT; in lmc_hssi_set_clock()
237 sc->lmc_gpio &= ~(LMC_GEP_HSSI_CLOCK); in lmc_hssi_set_clock()
238 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_hssi_set_clock()
239 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT; in lmc_hssi_set_clock()
250 lmc_hssi_get_link_status (lmc_softc_t * const sc) in lmc_hssi_get_link_status() argument
256 return lmc_ssi_get_link_status(sc); in lmc_hssi_get_link_status()
260 lmc_hssi_set_link_status (lmc_softc_t * const sc, int state) in lmc_hssi_set_link_status() argument
263 sc->lmc_miireg16 |= LMC_MII16_HSSI_TA; in lmc_hssi_set_link_status()
265 sc->lmc_miireg16 &= ~LMC_MII16_HSSI_TA; in lmc_hssi_set_link_status()
267 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_hssi_set_link_status()
274 lmc_hssi_set_crc_length (lmc_softc_t * const sc, int state) in lmc_hssi_set_crc_length() argument
279 sc->lmc_miireg16 |= LMC_MII16_HSSI_CRC; in lmc_hssi_set_crc_length()
280 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32; in lmc_hssi_set_crc_length()
285 sc->lmc_miireg16 &= ~LMC_MII16_HSSI_CRC; in lmc_hssi_set_crc_length()
286 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16; in lmc_hssi_set_crc_length()
289 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_hssi_set_crc_length()
293 lmc_hssi_watchdog (lmc_softc_t * const sc) in lmc_hssi_watchdog() argument
306 lmc_ds3_set_100ft (lmc_softc_t * const sc, int ie) in lmc_ds3_set_100ft() argument
310 sc->lmc_miireg16 &= ~LMC_MII16_DS3_ZERO; in lmc_ds3_set_100ft()
311 sc->ictl.cable_length = LMC_CTL_CABLE_LENGTH_GT_100FT; in lmc_ds3_set_100ft()
315 sc->lmc_miireg16 |= LMC_MII16_DS3_ZERO; in lmc_ds3_set_100ft()
316 sc->ictl.cable_length = LMC_CTL_CABLE_LENGTH_LT_100FT; in lmc_ds3_set_100ft()
318 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_ds3_set_100ft()
322 lmc_ds3_default (lmc_softc_t * const sc) in lmc_ds3_default() argument
324 sc->lmc_miireg16 = LMC_MII16_LED_ALL; in lmc_ds3_default()
326 sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN); in lmc_ds3_default()
327 sc->lmc_media->set_cable_length (sc, LMC_CTL_CABLE_LENGTH_LT_100FT); in lmc_ds3_default()
328 sc->lmc_media->set_scrambler (sc, LMC_CTL_OFF); in lmc_ds3_default()
329 sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16); in lmc_ds3_default()
337 lmc_ds3_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_ds3_set_status() argument
341 sc->lmc_media->set_cable_length (sc, sc->ictl.cable_length); in lmc_ds3_set_status()
342 sc->lmc_media->set_scrambler (sc, sc->ictl.scrambler_onoff); in lmc_ds3_set_status()
343 lmc_set_protocol (sc, NULL); in lmc_ds3_set_status()
351 if (ctl->cable_length && !sc->ictl.cable_length) in lmc_ds3_set_status()
352 lmc_ds3_set_100ft (sc, LMC_CTL_CABLE_LENGTH_GT_100FT); in lmc_ds3_set_status()
353 else if (!ctl->cable_length && sc->ictl.cable_length) in lmc_ds3_set_status()
354 lmc_ds3_set_100ft (sc, LMC_CTL_CABLE_LENGTH_LT_100FT); in lmc_ds3_set_status()
359 if (ctl->scrambler_onoff && !sc->ictl.scrambler_onoff) in lmc_ds3_set_status()
360 lmc_ds3_set_scram (sc, LMC_CTL_ON); in lmc_ds3_set_status()
361 else if (!ctl->scrambler_onoff && sc->ictl.scrambler_onoff) in lmc_ds3_set_status()
362 lmc_ds3_set_scram (sc, LMC_CTL_OFF); in lmc_ds3_set_status()
364 lmc_set_protocol (sc, ctl); in lmc_ds3_set_status()
368 lmc_ds3_init (lmc_softc_t * const sc) in lmc_ds3_init() argument
372 sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC5245; in lmc_ds3_init()
377 lmc_mii_writereg (sc, 0, 17, i); in lmc_ds3_init()
378 lmc_mii_writereg (sc, 0, 18, 0); in lmc_ds3_init()
382 lmc_mii_writereg (sc, 0, 17, 1); in lmc_ds3_init()
383 lmc_mii_writereg (sc, 0, 18, 0x25); /* ser, xtx */ in lmc_ds3_init()
385 lmc_mii_writereg (sc, 0, 17, 5); in lmc_ds3_init()
386 lmc_mii_writereg (sc, 0, 18, 0x80); /* emode */ in lmc_ds3_init()
388 lmc_mii_writereg (sc, 0, 17, 14); in lmc_ds3_init()
389 lmc_mii_writereg (sc, 0, 18, 0x30); /* rcgen, tcgen */ in lmc_ds3_init()
394 lmc_mii_writereg (sc, 0, 17, i); in lmc_ds3_init()
395 lmc_mii_readreg (sc, 0, 18); in lmc_ds3_init()
403 lmc_ds3_set_scram (lmc_softc_t * const sc, int ie) in lmc_ds3_set_scram() argument
407 sc->lmc_miireg16 |= LMC_MII16_DS3_SCRAM; in lmc_ds3_set_scram()
408 sc->ictl.scrambler_onoff = LMC_CTL_ON; in lmc_ds3_set_scram()
412 sc->lmc_miireg16 &= ~LMC_MII16_DS3_SCRAM; in lmc_ds3_set_scram()
413 sc->ictl.scrambler_onoff = LMC_CTL_OFF; in lmc_ds3_set_scram()
415 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_ds3_set_scram()
423 lmc_ds3_get_link_status (lmc_softc_t * const sc) in lmc_ds3_get_link_status() argument
428 lmc_mii_writereg (sc, 0, 17, 7); in lmc_ds3_get_link_status()
429 link_status = lmc_mii_readreg (sc, 0, 18); in lmc_ds3_get_link_status()
441 lmc_led_on(sc, LMC_DS3_LED2); in lmc_ds3_get_link_status()
446 if(sc->last_led_err[3] != 1){ in lmc_ds3_get_link_status()
448 lmc_mii_writereg (sc, 0, 17, 01); /* Turn on Xbit error as our cisco does */ in lmc_ds3_get_link_status()
449 r1 = lmc_mii_readreg (sc, 0, 18); in lmc_ds3_get_link_status()
451 lmc_mii_writereg(sc, 0, 18, r1); in lmc_ds3_get_link_status()
452 printk(KERN_WARNING "%s: Red Alarm - Loss of Signal or Loss of Framing\n", sc->name); in lmc_ds3_get_link_status()
454 lmc_led_on(sc, LMC_DS3_LED3); /* turn on red LED */ in lmc_ds3_get_link_status()
455 sc->last_led_err[3] = 1; in lmc_ds3_get_link_status()
458 lmc_led_off(sc, LMC_DS3_LED3); /* turn on red LED */ in lmc_ds3_get_link_status()
459 if(sc->last_led_err[3] == 1){ in lmc_ds3_get_link_status()
461 lmc_mii_writereg (sc, 0, 17, 01); /* Turn off Xbit error */ in lmc_ds3_get_link_status()
462 r1 = lmc_mii_readreg (sc, 0, 18); in lmc_ds3_get_link_status()
464 lmc_mii_writereg(sc, 0, 18, r1); in lmc_ds3_get_link_status()
466 sc->last_led_err[3] = 0; in lmc_ds3_get_link_status()
469 lmc_mii_writereg(sc, 0, 17, 0x10); in lmc_ds3_get_link_status()
470 link_status_11 = lmc_mii_readreg(sc, 0, 18); in lmc_ds3_get_link_status()
474 if(sc->last_led_err[0] != 1){ in lmc_ds3_get_link_status()
475 printk(KERN_WARNING "%s: AIS Alarm or XBit Error\n", sc->name); in lmc_ds3_get_link_status()
476 printk(KERN_WARNING "%s: Remote end has loss of signal or framing\n", sc->name); in lmc_ds3_get_link_status()
478 lmc_led_on(sc, LMC_DS3_LED0); in lmc_ds3_get_link_status()
479 sc->last_led_err[0] = 1; in lmc_ds3_get_link_status()
482 lmc_led_off(sc, LMC_DS3_LED0); in lmc_ds3_get_link_status()
483 sc->last_led_err[0] = 0; in lmc_ds3_get_link_status()
486 lmc_mii_writereg (sc, 0, 17, 9); in lmc_ds3_get_link_status()
487 link_status = lmc_mii_readreg (sc, 0, 18); in lmc_ds3_get_link_status()
491 if(sc->last_led_err[1] != 1){ in lmc_ds3_get_link_status()
492 printk(KERN_WARNING "%s: Blue Alarm - Receiving all 1's\n", sc->name); in lmc_ds3_get_link_status()
494 lmc_led_on(sc, LMC_DS3_LED1); in lmc_ds3_get_link_status()
495 sc->last_led_err[1] = 1; in lmc_ds3_get_link_status()
498 lmc_led_off(sc, LMC_DS3_LED1); in lmc_ds3_get_link_status()
499 sc->last_led_err[1] = 0; in lmc_ds3_get_link_status()
509 lmc_ds3_set_crc_length (lmc_softc_t * const sc, int state) in lmc_ds3_set_crc_length() argument
514 sc->lmc_miireg16 |= LMC_MII16_DS3_CRC; in lmc_ds3_set_crc_length()
515 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32; in lmc_ds3_set_crc_length()
520 sc->lmc_miireg16 &= ~LMC_MII16_DS3_CRC; in lmc_ds3_set_crc_length()
521 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16; in lmc_ds3_set_crc_length()
524 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_ds3_set_crc_length()
528 lmc_ds3_watchdog (lmc_softc_t * const sc) in lmc_ds3_watchdog() argument
538 static void lmc_ssi_init(lmc_softc_t * const sc) in lmc_ssi_init() argument
543 sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC1000; in lmc_ssi_init()
545 mii17 = lmc_mii_readreg(sc, 0, 17); in lmc_ssi_init()
548 sc->ictl.cable_type = cable; in lmc_ssi_init()
550 lmc_gpio_mkoutput(sc, LMC_GEP_SSI_TXCLOCK); in lmc_ssi_init()
554 lmc_ssi_default (lmc_softc_t * const sc) in lmc_ssi_default() argument
556 sc->lmc_miireg16 = LMC_MII16_LED_ALL; in lmc_ssi_default()
561 lmc_gpio_mkoutput (sc, LMC_GEP_SSI_TXCLOCK); in lmc_ssi_default()
563 sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN); in lmc_ssi_default()
564 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT); in lmc_ssi_default()
565 sc->lmc_media->set_speed (sc, NULL); in lmc_ssi_default()
566 sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16); in lmc_ssi_default()
574 lmc_ssi_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_ssi_set_status() argument
578 sc->lmc_media->set_clock_source (sc, sc->ictl.clock_source); in lmc_ssi_set_status()
579 sc->lmc_media->set_speed (sc, &sc->ictl); in lmc_ssi_set_status()
580 lmc_set_protocol (sc, NULL); in lmc_ssi_set_status()
589 && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_EXT) in lmc_ssi_set_status()
591 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_INT); in lmc_ssi_set_status()
592 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT; in lmc_ssi_set_status()
595 && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_INT) in lmc_ssi_set_status()
597 sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT); in lmc_ssi_set_status()
598 sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT; in lmc_ssi_set_status()
601 if (ctl->clock_rate != sc->ictl.clock_rate) in lmc_ssi_set_status()
602 sc->lmc_media->set_speed (sc, ctl); in lmc_ssi_set_status()
604 lmc_set_protocol (sc, ctl); in lmc_ssi_set_status()
611 lmc_ssi_set_clock (lmc_softc_t * const sc, int ie) in lmc_ssi_set_clock() argument
617 sc->lmc_gpio &= ~(LMC_GEP_SSI_TXCLOCK); in lmc_ssi_set_clock()
618 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_ssi_set_clock()
619 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT; in lmc_ssi_set_clock()
625 sc->lmc_gpio |= LMC_GEP_SSI_TXCLOCK; in lmc_ssi_set_clock()
626 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_ssi_set_clock()
627 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT; in lmc_ssi_set_clock()
634 lmc_ssi_set_speed (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_ssi_set_speed() argument
636 lmc_ctl_t *ictl = &sc->ictl; in lmc_ssi_set_speed()
656 write_av9110 (sc, av->n, av->m, av->v, av->x, av->r); in lmc_ssi_set_speed()
668 write_av9110 (sc, av->n, av->m, av->v, av->x, av->r); in lmc_ssi_set_speed()
676 lmc_ssi_get_link_status (lmc_softc_t * const sc) in lmc_ssi_get_link_status() argument
703 link_status = lmc_mii_readreg (sc, 0, 16); in lmc_ssi_get_link_status()
706 ticks = LMC_CSR_READ (sc, csr_gp_timer); in lmc_ssi_get_link_status()
709 lmc_led_on (sc, LMC_MII16_LED0); in lmc_ssi_get_link_status()
712 if (sc->lmc_timing == LMC_CTL_CLOCK_SOURCE_INT) { in lmc_ssi_get_link_status()
713 lmc_led_off(sc, LMC_MII16_LED3); in lmc_ssi_get_link_status()
717 if (sc->last_led_err[3] != 1) { in lmc_ssi_get_link_status()
718 sc->extra_stats.tx_lossOfClockCnt++; in lmc_ssi_get_link_status()
719 printk(KERN_WARNING "%s: Lost Clock, Link Down\n", sc->name); in lmc_ssi_get_link_status()
721 sc->last_led_err[3] = 1; in lmc_ssi_get_link_status()
722 lmc_led_on (sc, LMC_MII16_LED3); /* turn ON red LED */ in lmc_ssi_get_link_status()
725 if(sc->last_led_err[3] == 1) in lmc_ssi_get_link_status()
726 printk(KERN_WARNING "%s: Clock Returned\n", sc->name); in lmc_ssi_get_link_status()
727 sc->last_led_err[3] = 0; in lmc_ssi_get_link_status()
728 lmc_led_off (sc, LMC_MII16_LED3); /* turn OFF red LED */ in lmc_ssi_get_link_status()
744 if(sc->last_led_err[1] != 1) in lmc_ssi_get_link_status()
745 printk(KERN_WARNING "%s: DSR not asserted\n", sc->name); in lmc_ssi_get_link_status()
746 sc->last_led_err[1] = 1; in lmc_ssi_get_link_status()
747 lmc_led_off(sc, LMC_MII16_LED1); in lmc_ssi_get_link_status()
750 if(sc->last_led_err[1] != 0) in lmc_ssi_get_link_status()
751 printk(KERN_WARNING "%s: DSR now asserted\n", sc->name); in lmc_ssi_get_link_status()
752 sc->last_led_err[1] = 0; in lmc_ssi_get_link_status()
753 lmc_led_on(sc, LMC_MII16_LED1); in lmc_ssi_get_link_status()
757 lmc_led_on(sc, LMC_MII16_LED2); /* Over all good status? */ in lmc_ssi_get_link_status()
764 lmc_ssi_set_link_status (lmc_softc_t * const sc, int state) in lmc_ssi_set_link_status() argument
768 sc->lmc_miireg16 |= (LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS); in lmc_ssi_set_link_status()
773 sc->lmc_miireg16 &= ~(LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS); in lmc_ssi_set_link_status()
777 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_ssi_set_link_status()
785 lmc_ssi_set_crc_length (lmc_softc_t * const sc, int state) in lmc_ssi_set_crc_length() argument
790 sc->lmc_miireg16 |= LMC_MII16_SSI_CRC; in lmc_ssi_set_crc_length()
791 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32; in lmc_ssi_set_crc_length()
792 sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_4; in lmc_ssi_set_crc_length()
798 sc->lmc_miireg16 &= ~LMC_MII16_SSI_CRC; in lmc_ssi_set_crc_length()
799 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16; in lmc_ssi_set_crc_length()
800 sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_2; in lmc_ssi_set_crc_length()
803 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_ssi_set_crc_length()
810 write_av9110_bit (lmc_softc_t * sc, int c) in write_av9110_bit() argument
815 sc->lmc_gpio &= ~(LMC_GEP_CLK); in write_av9110_bit()
817 sc->lmc_gpio |= LMC_GEP_DATA; in write_av9110_bit()
819 sc->lmc_gpio &= ~(LMC_GEP_DATA); in write_av9110_bit()
820 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in write_av9110_bit()
825 sc->lmc_gpio |= LMC_GEP_CLK; in write_av9110_bit()
826 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in write_av9110_bit()
831 sc->lmc_gpio &= ~(LMC_GEP_CLK); in write_av9110_bit()
832 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in write_av9110_bit()
835 static void write_av9110(lmc_softc_t *sc, u32 n, u32 m, u32 v, u32 x, u32 r) in write_av9110() argument
841 LMC_PRINTF_ARGS, sc->ictl.clock_rate, n, m, v, x, r); in write_av9110()
844 sc->lmc_gpio |= LMC_GEP_SSI_GENERATOR; in write_av9110()
845 sc->lmc_gpio &= ~(LMC_GEP_DATA | LMC_GEP_CLK); in write_av9110()
846 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in write_av9110()
852 lmc_gpio_mkoutput (sc, (LMC_GEP_DATA | LMC_GEP_CLK in write_av9110()
855 sc->lmc_gpio &= ~(LMC_GEP_SSI_GENERATOR); in write_av9110()
856 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in write_av9110()
862 write_av9110_bit (sc, n >> i); in write_av9110()
864 write_av9110_bit (sc, m >> i); in write_av9110()
866 write_av9110_bit (sc, v >> i); in write_av9110()
868 write_av9110_bit (sc, x >> i); in write_av9110()
870 write_av9110_bit (sc, r >> i); in write_av9110()
872 write_av9110_bit (sc, 0x17 >> i); in write_av9110()
877 lmc_gpio_mkinput (sc, in write_av9110()
882 static void lmc_ssi_watchdog(lmc_softc_t * const sc) in lmc_ssi_watchdog() argument
884 u16 mii17 = lmc_mii_readreg(sc, 0, 17); in lmc_ssi_watchdog()
886 lmc_led_off(sc, LMC_MII16_LED2); in lmc_ssi_watchdog()
888 lmc_led_on(sc, LMC_MII16_LED2); in lmc_ssi_watchdog()
899 lmc_t1_write (lmc_softc_t * const sc, int a, int d) in lmc_t1_write() argument
901 lmc_mii_writereg (sc, 0, 17, a); in lmc_t1_write()
902 lmc_mii_writereg (sc, 0, 18, d); in lmc_t1_write()
916 lmc_t1_init (lmc_softc_t * const sc) in lmc_t1_init() argument
921 sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC1200; in lmc_t1_init()
922 mii16 = lmc_mii_readreg (sc, 0, 16); in lmc_t1_init()
926 lmc_mii_writereg (sc, 0, 16, mii16 | LMC_MII16_T1_RST); in lmc_t1_init()
927 lmc_mii_writereg (sc, 0, 16, mii16); in lmc_t1_init()
930 sc->lmc_miireg16 = mii16; in lmc_t1_init()
931 lmc_t1_set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_T1); in lmc_t1_init()
932 mii16 = sc->lmc_miireg16; in lmc_t1_init()
934 lmc_t1_write (sc, 0x01, 0x1B); /* CR0 - primary control */ in lmc_t1_init()
935 lmc_t1_write (sc, 0x02, 0x42); /* JAT_CR - jitter atten config */ in lmc_t1_init()
936 lmc_t1_write (sc, 0x14, 0x00); /* LOOP - loopback config */ in lmc_t1_init()
937 lmc_t1_write (sc, 0x15, 0x00); /* DL3_TS - external data link timeslot */ in lmc_t1_init()
938 lmc_t1_write (sc, 0x18, 0xFF); /* PIO - programmable I/O */ in lmc_t1_init()
939 lmc_t1_write (sc, 0x19, 0x30); /* POE - programmable OE */ in lmc_t1_init()
940 lmc_t1_write (sc, 0x1A, 0x0F); /* CMUX - clock input mux */ in lmc_t1_init()
941 lmc_t1_write (sc, 0x20, 0x41); /* LIU_CR - RX LIU config */ in lmc_t1_init()
942 lmc_t1_write (sc, 0x22, 0x76); /* RLIU_CR - RX LIU config */ in lmc_t1_init()
943 lmc_t1_write (sc, 0x40, 0x03); /* RCR0 - RX config */ in lmc_t1_init()
944 lmc_t1_write (sc, 0x45, 0x00); /* RALM - RX alarm config */ in lmc_t1_init()
945 lmc_t1_write (sc, 0x46, 0x05); /* LATCH - RX alarm/err/cntr latch */ in lmc_t1_init()
946 lmc_t1_write (sc, 0x68, 0x40); /* TLIU_CR - TX LIU config */ in lmc_t1_init()
947 lmc_t1_write (sc, 0x70, 0x0D); /* TCR0 - TX framer config */ in lmc_t1_init()
948 lmc_t1_write (sc, 0x71, 0x05); /* TCR1 - TX config */ in lmc_t1_init()
949 lmc_t1_write (sc, 0x72, 0x0B); /* TFRM - TX frame format */ in lmc_t1_init()
950 lmc_t1_write (sc, 0x73, 0x00); /* TERROR - TX error insert */ in lmc_t1_init()
951 lmc_t1_write (sc, 0x74, 0x00); /* TMAN - TX manual Sa/FEBE config */ in lmc_t1_init()
952 lmc_t1_write (sc, 0x75, 0x00); /* TALM - TX alarm signal config */ in lmc_t1_init()
953 lmc_t1_write (sc, 0x76, 0x00); /* TPATT - TX test pattern config */ in lmc_t1_init()
954 lmc_t1_write (sc, 0x77, 0x00); /* TLB - TX inband loopback config */ in lmc_t1_init()
955 lmc_t1_write (sc, 0x90, 0x05); /* CLAD_CR - clock rate adapter config */ in lmc_t1_init()
956 lmc_t1_write (sc, 0x91, 0x05); /* CSEL - clad freq sel */ in lmc_t1_init()
957 lmc_t1_write (sc, 0xA6, 0x00); /* DL1_CTL - DL1 control */ in lmc_t1_init()
958 lmc_t1_write (sc, 0xB1, 0x00); /* DL2_CTL - DL2 control */ in lmc_t1_init()
959 lmc_t1_write (sc, 0xD0, 0x47); /* SBI_CR - sys bus iface config */ in lmc_t1_init()
960 lmc_t1_write (sc, 0xD1, 0x70); /* RSB_CR - RX sys bus config */ in lmc_t1_init()
961 lmc_t1_write (sc, 0xD4, 0x30); /* TSB_CR - TX sys bus config */ in lmc_t1_init()
964 lmc_t1_write (sc, 0x0E0 + i, 0x00); /* SBCn - sys bus per-channel ctl */ in lmc_t1_init()
965 lmc_t1_write (sc, 0x100 + i, 0x00); /* TPCn - TX per-channel ctl */ in lmc_t1_init()
966 lmc_t1_write (sc, 0x180 + i, 0x00); /* RPCn - RX per-channel ctl */ in lmc_t1_init()
970 lmc_t1_write (sc, 0x0E0 + i, 0x0D); /* SBCn - sys bus per-channel ctl */ in lmc_t1_init()
974 lmc_mii_writereg (sc, 0, 16, mii16); in lmc_t1_init()
975 sc->lmc_miireg16 = mii16; in lmc_t1_init()
979 lmc_t1_default (lmc_softc_t * const sc) in lmc_t1_default() argument
981 sc->lmc_miireg16 = LMC_MII16_LED_ALL; in lmc_t1_default()
982 sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN); in lmc_t1_default()
983 sc->lmc_media->set_circuit_type (sc, LMC_CTL_CIRCUIT_TYPE_T1); in lmc_t1_default()
984 sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16); in lmc_t1_default()
986 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT; in lmc_t1_default()
991 lmc_t1_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_t1_set_status() argument
995 sc->lmc_media->set_circuit_type (sc, sc->ictl.circuit_type); in lmc_t1_set_status()
996 lmc_set_protocol (sc, NULL); in lmc_t1_set_status()
1003 && sc->ictl.circuit_type == in lmc_t1_set_status()
1004 LMC_CTL_CIRCUIT_TYPE_E1) sc->lmc_media->set_circuit_type (sc, in lmc_t1_set_status()
1007 && sc->ictl.circuit_type == LMC_CTL_CIRCUIT_TYPE_T1) in lmc_t1_set_status()
1008 sc->lmc_media->set_circuit_type (sc, LMC_CTL_CIRCUIT_TYPE_T1); in lmc_t1_set_status()
1009 lmc_set_protocol (sc, ctl); in lmc_t1_set_status()
1015 lmc_t1_get_link_status (lmc_softc_t * const sc) in lmc_t1_get_link_status() argument
1029 lmc_trace(sc->lmc_device, "lmc_t1_get_link_status in"); in lmc_t1_get_link_status()
1030 lmc_led_on(sc, LMC_DS3_LED2); in lmc_t1_get_link_status()
1032 lmc_mii_writereg (sc, 0, 17, T1FRAMER_ALARM1_STATUS); in lmc_t1_get_link_status()
1033 link_status = lmc_mii_readreg (sc, 0, 18); in lmc_t1_get_link_status()
1038 if(sc->last_led_err[1] != 1){ in lmc_t1_get_link_status()
1039 printk(KERN_WARNING "%s: Receive AIS/Blue Alarm. Far end in RED alarm\n", sc->name); in lmc_t1_get_link_status()
1041 lmc_led_on(sc, LMC_DS3_LED1); in lmc_t1_get_link_status()
1042 sc->last_led_err[1] = 1; in lmc_t1_get_link_status()
1045 if(sc->last_led_err[1] != 0){ in lmc_t1_get_link_status()
1046 printk(KERN_WARNING "%s: End AIS/Blue Alarm\n", sc->name); in lmc_t1_get_link_status()
1048 lmc_led_off (sc, LMC_DS3_LED1); in lmc_t1_get_link_status()
1049 sc->last_led_err[1] = 0; in lmc_t1_get_link_status()
1064 if(sc->last_led_err[0] != 1){ in lmc_t1_get_link_status()
1065 printk(KERN_WARNING "%s: Receive Yellow AIS Alarm\n", sc->name); in lmc_t1_get_link_status()
1067 lmc_led_on(sc, LMC_DS3_LED0); in lmc_t1_get_link_status()
1068 sc->last_led_err[0] = 1; in lmc_t1_get_link_status()
1071 if(sc->last_led_err[0] != 0){ in lmc_t1_get_link_status()
1072 printk(KERN_WARNING "%s: End of Yellow AIS Alarm\n", sc->name); in lmc_t1_get_link_status()
1074 lmc_led_off(sc, LMC_DS3_LED0); in lmc_t1_get_link_status()
1075 sc->last_led_err[0] = 0; in lmc_t1_get_link_status()
1084 if(sc->last_led_err[3] != 1){ in lmc_t1_get_link_status()
1085 printk(KERN_WARNING "%s: Local Red Alarm: Loss of Framing\n", sc->name); in lmc_t1_get_link_status()
1087 lmc_led_on(sc, LMC_DS3_LED3); in lmc_t1_get_link_status()
1088 sc->last_led_err[3] = 1; in lmc_t1_get_link_status()
1092 if(sc->last_led_err[3] != 0){ in lmc_t1_get_link_status()
1093 printk(KERN_WARNING "%s: End Red Alarm (LOF)\n", sc->name); in lmc_t1_get_link_status()
1096 lmc_led_off(sc, LMC_DS3_LED3); in lmc_t1_get_link_status()
1097 sc->last_led_err[3] = 0; in lmc_t1_get_link_status()
1102 if(sc->last_led_err[2] != 1){ in lmc_t1_get_link_status()
1103 printk(KERN_WARNING "%s: Local Red Alarm: Loss of Signal\n", sc->name); in lmc_t1_get_link_status()
1105 lmc_led_on(sc, LMC_DS3_LED3); in lmc_t1_get_link_status()
1106 sc->last_led_err[2] = 1; in lmc_t1_get_link_status()
1110 if(sc->last_led_err[2] != 0){ in lmc_t1_get_link_status()
1111 printk(KERN_WARNING "%s: End Red Alarm (LOS)\n", sc->name); in lmc_t1_get_link_status()
1114 lmc_led_off(sc, LMC_DS3_LED3); in lmc_t1_get_link_status()
1115 sc->last_led_err[2] = 0; in lmc_t1_get_link_status()
1118 sc->lmc_xinfo.t1_alarm1_status = link_status; in lmc_t1_get_link_status()
1120 lmc_mii_writereg (sc, 0, 17, T1FRAMER_ALARM2_STATUS); in lmc_t1_get_link_status()
1121 sc->lmc_xinfo.t1_alarm2_status = lmc_mii_readreg (sc, 0, 18); in lmc_t1_get_link_status()
1124 lmc_trace(sc->lmc_device, "lmc_t1_get_link_status out"); in lmc_t1_get_link_status()
1133 lmc_t1_set_circuit_type (lmc_softc_t * const sc, int ie) in lmc_t1_set_circuit_type() argument
1136 sc->lmc_miireg16 |= LMC_MII16_T1_Z; in lmc_t1_set_circuit_type()
1137 sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_T1; in lmc_t1_set_circuit_type()
1138 printk(KERN_INFO "%s: In T1 Mode\n", sc->name); in lmc_t1_set_circuit_type()
1141 sc->lmc_miireg16 &= ~LMC_MII16_T1_Z; in lmc_t1_set_circuit_type()
1142 sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_E1; in lmc_t1_set_circuit_type()
1143 printk(KERN_INFO "%s: In E1 Mode\n", sc->name); in lmc_t1_set_circuit_type()
1146 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_t1_set_circuit_type()
1153 lmc_t1_set_crc_length (lmc_softc_t * const sc, int state) in lmc_t1_set_crc_length() argument
1158 sc->lmc_miireg16 |= LMC_MII16_T1_CRC; in lmc_t1_set_crc_length()
1159 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32; in lmc_t1_set_crc_length()
1160 sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_4; in lmc_t1_set_crc_length()
1165 /* 16 bit */ sc->lmc_miireg16 &= ~LMC_MII16_T1_CRC; in lmc_t1_set_crc_length()
1166 sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16; in lmc_t1_set_crc_length()
1167 sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_2; in lmc_t1_set_crc_length()
1171 lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16); in lmc_t1_set_crc_length()
1178 lmc_t1_set_clock (lmc_softc_t * const sc, int ie) in lmc_t1_set_clock() argument
1184 sc->lmc_gpio &= ~(LMC_GEP_SSI_TXCLOCK); in lmc_t1_set_clock()
1185 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_t1_set_clock()
1186 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT; in lmc_t1_set_clock()
1192 sc->lmc_gpio |= LMC_GEP_SSI_TXCLOCK; in lmc_t1_set_clock()
1193 LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio); in lmc_t1_set_clock()
1194 sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT; in lmc_t1_set_clock()
1201 lmc_t1_watchdog (lmc_softc_t * const sc) in lmc_t1_watchdog() argument
1206 lmc_set_protocol (lmc_softc_t * const sc, lmc_ctl_t * ctl) in lmc_set_protocol() argument
1209 sc->ictl.keepalive_onoff = LMC_CTL_ON; in lmc_set_protocol()