Lines Matching refs:fec
42 #include <sysdev/bestcomm/fec.h>
46 #define DRIVER_NAME "mpc52xx-fec"
55 struct mpc52xx_fec __iomem *fec;
105 struct mpc52xx_fec __iomem *fec = priv->fec;
107 out_be32(&fec->paddr1, *(u32 *)(&mac[0]));
108 out_be32(&fec->paddr2, (*(u16 *)(&mac[4]) << 16) | FEC_PADDR2_TYPE);
114 struct mpc52xx_fec __iomem *fec = priv->fec;
116 *(u32 *)(&mac[0]) = in_be32(&fec->paddr1);
117 *(u16 *)(&mac[4]) = in_be32(&fec->paddr2) >> 16;
181 struct mpc52xx_fec __iomem *fec = priv->fec;
188 rcntrl = in_be32(&fec->r_cntrl);
189 tcntrl = in_be32(&fec->x_cntrl);
198 out_be32(&fec->r_cntrl, rcntrl);
199 out_be32(&fec->x_cntrl, tcntrl);
453 struct mpc52xx_fec __iomem *fec = priv->fec;
457 ievent = in_be32(&fec->ievent);
463 out_be32(&fec->ievent, ievent); /* clear pending events */
465 /* on fifo error, soft-reset fec */
494 struct mpc52xx_fec __iomem *fec = priv->fec;
496 stats->rx_bytes = in_be32(&fec->rmon_r_octets);
497 stats->rx_packets = in_be32(&fec->rmon_r_packets);
498 stats->rx_errors = in_be32(&fec->rmon_r_crc_align) +
499 in_be32(&fec->rmon_r_undersize) +
500 in_be32(&fec->rmon_r_oversize) +
501 in_be32(&fec->rmon_r_frag) +
502 in_be32(&fec->rmon_r_jab);
504 stats->tx_bytes = in_be32(&fec->rmon_t_octets);
505 stats->tx_packets = in_be32(&fec->rmon_t_packets);
506 stats->tx_errors = in_be32(&fec->rmon_t_crc_align) +
507 in_be32(&fec->rmon_t_undersize) +
508 in_be32(&fec->rmon_t_oversize) +
509 in_be32(&fec->rmon_t_frag) +
510 in_be32(&fec->rmon_t_jab);
512 stats->multicast = in_be32(&fec->rmon_r_mc_pkt);
513 stats->collisions = in_be32(&fec->rmon_t_col);
516 stats->rx_length_errors = in_be32(&fec->rmon_r_undersize)
517 + in_be32(&fec->rmon_r_oversize)
518 + in_be32(&fec->rmon_r_frag)
519 + in_be32(&fec->rmon_r_jab);
520 stats->rx_over_errors = in_be32(&fec->r_macerr);
521 stats->rx_crc_errors = in_be32(&fec->ieee_r_crc);
522 stats->rx_frame_errors = in_be32(&fec->ieee_r_align);
523 stats->rx_fifo_errors = in_be32(&fec->rmon_r_drop);
524 stats->rx_missed_errors = in_be32(&fec->rmon_r_drop);
528 stats->tx_carrier_errors = in_be32(&fec->ieee_t_cserr);
529 stats->tx_fifo_errors = in_be32(&fec->rmon_t_drop);
530 stats->tx_heartbeat_errors = in_be32(&fec->ieee_t_sqe);
531 stats->tx_window_errors = in_be32(&fec->ieee_t_lcol);
543 struct mpc52xx_fec __iomem *fec = priv->fec;
545 out_be32(&fec->mib_control, FEC_MIB_DISABLE);
546 memset_io(&fec->rmon_t_drop, 0,
549 out_be32(&fec->mib_control, 0);
560 struct mpc52xx_fec __iomem *fec = priv->fec;
563 rx_control = in_be32(&fec->r_cntrl);
567 out_be32(&fec->r_cntrl, rx_control);
570 out_be32(&fec->r_cntrl, rx_control);
573 out_be32(&fec->gaddr1, 0xffffffff);
574 out_be32(&fec->gaddr2, 0xffffffff);
588 out_be32(&fec->gaddr1, gaddr1);
589 out_be32(&fec->gaddr2, gaddr2);
603 struct mpc52xx_fec __iomem *fec = priv->fec;
607 out_be32(&fec->ecntrl, FEC_ECNTRL_RESET);
609 if ((in_be32(&fec->ecntrl) & FEC_ECNTRL_RESET) == 0)
617 out_be32(&fec->op_pause, FEC_OP_PAUSE_OPCODE | 0x20);
622 out_be32(&fec->rfifo_cntrl, FEC_FIFO_CNTRL_FRAME | FEC_FIFO_CNTRL_LTG_7);
623 out_be32(&fec->tfifo_cntrl, FEC_FIFO_CNTRL_FRAME | FEC_FIFO_CNTRL_LTG_7);
626 out_be32(&fec->rfifo_alarm, 0x0000030c);
627 out_be32(&fec->tfifo_alarm, 0x00000100);
630 out_be32(&fec->x_wmrk, FEC_FIFO_WMRK_256B);
633 out_be32(&fec->xmit_fsm, FEC_XMIT_FSM_APPEND_CRC | FEC_XMIT_FSM_ENABLE_CRC);
634 out_be32(&fec->iaddr1, 0x00000000); /* No individual filter */
635 out_be32(&fec->iaddr2, 0x00000000); /* No individual filter */
639 * before fec stuff (even on resume) */
640 out_be32(&fec->mii_speed, priv->mdio_speed);
654 struct mpc52xx_fec __iomem *fec = priv->fec;
661 out_be32(&fec->rfifo_status, in_be32(&fec->rfifo_status) & tmp);
662 out_be32(&fec->tfifo_status, in_be32(&fec->tfifo_status) & tmp);
665 out_be32(&fec->reset_cntrl, FEC_RESET_CNTRL_ENABLE_IS_RESET);
685 out_be32(&fec->r_cntrl, rcntrl);
686 out_be32(&fec->x_cntrl, tcntrl);
689 out_be32(&fec->ievent, 0xffffffff);
692 out_be32(&fec->imask, FEC_IMASK_ENABLE);
695 out_be32(&fec->ecntrl, FEC_ECNTRL_ETHER_EN);
696 out_be32(&fec->r_des_active, 0x01000000);
703 * stop all activity on fec and empty dma buffers
708 struct mpc52xx_fec __iomem *fec = priv->fec;
712 out_be32(&fec->imask, 0);
739 out_be32(&fec->ecntrl, in_be32(&fec->ecntrl) & ~FEC_ECNTRL_ETHER_EN);
742 /* reset fec and bestcomm tasks */
746 struct mpc52xx_fec __iomem *fec = priv->fec;
750 out_be32(&fec->rfifo_status, in_be32(&fec->rfifo_status));
751 out_be32(&fec->reset_cntrl, FEC_RESET_CNTRL_RESET_FIFO);
902 priv->fec = ioremap(mem.start, sizeof(struct mpc52xx_fec));
904 if (!priv->fec) {
986 iounmap(priv->fec);
1015 iounmap(priv->fec);
1051 { .compatible = "fsl,mpc5200b-fec", },
1052 { .compatible = "fsl,mpc5200-fec", },
1053 { .compatible = "mpc5200-fec", },