Lines Matching refs:fec
47 #include <linux/fsl/bestcomm/fec.h>
51 #define DRIVER_NAME "mpc52xx-fec"
60 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);
172 struct mpc52xx_fec __iomem *fec = priv->fec;
179 rcntrl = in_be32(&fec->r_cntrl);
180 tcntrl = in_be32(&fec->x_cntrl);
189 out_be32(&fec->r_cntrl, rcntrl);
190 out_be32(&fec->x_cntrl, tcntrl);
445 struct mpc52xx_fec __iomem *fec = priv->fec;
448 ievent = in_be32(&fec->ievent);
454 out_be32(&fec->ievent, ievent); /* clear pending events */
456 /* on fifo error, soft-reset fec */
485 struct mpc52xx_fec __iomem *fec = priv->fec;
487 stats->rx_bytes = in_be32(&fec->rmon_r_octets);
488 stats->rx_packets = in_be32(&fec->rmon_r_packets);
489 stats->rx_errors = in_be32(&fec->rmon_r_crc_align) +
490 in_be32(&fec->rmon_r_undersize) +
491 in_be32(&fec->rmon_r_oversize) +
492 in_be32(&fec->rmon_r_frag) +
493 in_be32(&fec->rmon_r_jab);
495 stats->tx_bytes = in_be32(&fec->rmon_t_octets);
496 stats->tx_packets = in_be32(&fec->rmon_t_packets);
497 stats->tx_errors = in_be32(&fec->rmon_t_crc_align) +
498 in_be32(&fec->rmon_t_undersize) +
499 in_be32(&fec->rmon_t_oversize) +
500 in_be32(&fec->rmon_t_frag) +
501 in_be32(&fec->rmon_t_jab);
503 stats->multicast = in_be32(&fec->rmon_r_mc_pkt);
504 stats->collisions = in_be32(&fec->rmon_t_col);
507 stats->rx_length_errors = in_be32(&fec->rmon_r_undersize)
508 + in_be32(&fec->rmon_r_oversize)
509 + in_be32(&fec->rmon_r_frag)
510 + in_be32(&fec->rmon_r_jab);
511 stats->rx_over_errors = in_be32(&fec->r_macerr);
512 stats->rx_crc_errors = in_be32(&fec->ieee_r_crc);
513 stats->rx_frame_errors = in_be32(&fec->ieee_r_align);
514 stats->rx_fifo_errors = in_be32(&fec->rmon_r_drop);
515 stats->rx_missed_errors = in_be32(&fec->rmon_r_drop);
519 stats->tx_carrier_errors = in_be32(&fec->ieee_t_cserr);
520 stats->tx_fifo_errors = in_be32(&fec->rmon_t_drop);
521 stats->tx_heartbeat_errors = in_be32(&fec->ieee_t_sqe);
522 stats->tx_window_errors = in_be32(&fec->ieee_t_lcol);
534 struct mpc52xx_fec __iomem *fec = priv->fec;
536 out_be32(&fec->mib_control, FEC_MIB_DISABLE);
537 memset_io(&fec->rmon_t_drop, 0,
540 out_be32(&fec->mib_control, 0);
551 struct mpc52xx_fec __iomem *fec = priv->fec;
554 rx_control = in_be32(&fec->r_cntrl);
558 out_be32(&fec->r_cntrl, rx_control);
561 out_be32(&fec->r_cntrl, rx_control);
564 out_be32(&fec->gaddr1, 0xffffffff);
565 out_be32(&fec->gaddr2, 0xffffffff);
579 out_be32(&fec->gaddr1, gaddr1);
580 out_be32(&fec->gaddr2, gaddr2);
594 struct mpc52xx_fec __iomem *fec = priv->fec;
598 out_be32(&fec->ecntrl, FEC_ECNTRL_RESET);
600 if ((in_be32(&fec->ecntrl) & FEC_ECNTRL_RESET) == 0)
608 out_be32(&fec->op_pause, FEC_OP_PAUSE_OPCODE | 0x20);
613 out_be32(&fec->rfifo_cntrl, FEC_FIFO_CNTRL_FRAME | FEC_FIFO_CNTRL_LTG_7);
614 out_be32(&fec->tfifo_cntrl, FEC_FIFO_CNTRL_FRAME | FEC_FIFO_CNTRL_LTG_7);
617 out_be32(&fec->rfifo_alarm, 0x0000030c);
618 out_be32(&fec->tfifo_alarm, 0x00000100);
621 out_be32(&fec->x_wmrk, FEC_FIFO_WMRK_256B);
624 out_be32(&fec->xmit_fsm, FEC_XMIT_FSM_APPEND_CRC | FEC_XMIT_FSM_ENABLE_CRC);
625 out_be32(&fec->iaddr1, 0x00000000); /* No individual filter */
626 out_be32(&fec->iaddr2, 0x00000000); /* No individual filter */
630 * before fec stuff (even on resume) */
631 out_be32(&fec->mii_speed, priv->mdio_speed);
645 struct mpc52xx_fec __iomem *fec = priv->fec;
652 out_be32(&fec->rfifo_status, in_be32(&fec->rfifo_status) & tmp);
653 out_be32(&fec->tfifo_status, in_be32(&fec->tfifo_status) & tmp);
656 out_be32(&fec->reset_cntrl, FEC_RESET_CNTRL_ENABLE_IS_RESET);
676 out_be32(&fec->r_cntrl, rcntrl);
677 out_be32(&fec->x_cntrl, tcntrl);
680 out_be32(&fec->ievent, 0xffffffff);
683 out_be32(&fec->imask, FEC_IMASK_ENABLE);
686 out_be32(&fec->ecntrl, FEC_ECNTRL_ETHER_EN);
687 out_be32(&fec->r_des_active, 0x01000000);
694 * stop all activity on fec and empty dma buffers
699 struct mpc52xx_fec __iomem *fec = priv->fec;
703 out_be32(&fec->imask, 0);
732 out_be32(&fec->ecntrl, in_be32(&fec->ecntrl) & ~FEC_ECNTRL_ETHER_EN);
735 /* reset fec and bestcomm tasks */
739 struct mpc52xx_fec __iomem *fec = priv->fec;
743 out_be32(&fec->rfifo_status, in_be32(&fec->rfifo_status));
744 out_be32(&fec->reset_cntrl, FEC_RESET_CNTRL_RESET_FIFO);
859 priv->fec = ioremap(mem.start, sizeof(struct mpc52xx_fec));
861 if (!priv->fec) {
898 struct mpc52xx_fec __iomem *fec = priv->fec;
904 *(u32 *)(&ndev->dev_addr[0]) = in_be32(&fec->paddr1);
905 *(u16 *)(&ndev->dev_addr[4]) = in_be32(&fec->paddr2) >> 16;
967 iounmap(priv->fec);
995 iounmap(priv->fec);
1030 { .compatible = "fsl,mpc5200b-fec", },
1031 { .compatible = "fsl,mpc5200-fec", },
1032 { .compatible = "mpc5200-fec", },