--- uLan/ports/driver/tms570_emac/ti_drv_emac.h | 19 +++++++++++++++++++ uLan/ports/driver/tms570_emac/tms570_netif.c | 6 ++++++ 2 files changed, 25 insertions(+)
diff --git a/uLan/ports/driver/tms570_emac/ti_drv_emac.h b/uLan/ports/driver/tms570_emac/ti_drv_emac.h index 54f22c8..a829edd 100644 --- a/uLan/ports/driver/tms570_emac/ti_drv_emac.h +++ b/uLan/ports/driver/tms570_emac/ti_drv_emac.h @@ -163,6 +163,25 @@ EMACDuplexSet(volatile tms570_emacm_t *emacBase, int duplexMode) } } +/** + * \brief This API sets the RMII interface speeed for MAC. + * + * \param emacBase Base address of the EMAC Module registers. + * \param use100Mbps indicates if the RMII interface speed shall be 100 Mbps. + * + * \return None + * + **/ +static inline void +EMACUse100Mbps(volatile tms570_emacm_t *emacBase, bool use100Mbps) +{ + if (use100Mbps) { + emacBase->MACCONTROL |= TMS570_EMACM_MACCONTROL_RMIISPEED; + } else { + emacBase->MACCONTROL &= ~TMS570_EMACM_MACCONTROL_RMIISPEED; + } +} + /** * \brief API to enable the transmit in the TX Control Register * After the transmit is enabled, any write to TXHDP of diff --git a/uLan/ports/driver/tms570_emac/tms570_netif.c b/uLan/ports/driver/tms570_emac/tms570_netif.c index 46e025a..b484a42 100644 --- a/uLan/ports/driver/tms570_emac/tms570_netif.c +++ b/uLan/ports/driver/tms570_emac/tms570_netif.c @@ -468,6 +468,12 @@ tms570_eth_init_hw_post_init(struct tms570_netif_state *nf_state) return UNKN_DUPLEX_MODE; } + if (regContent & (PHY_100BASETX_m | PHY_100BASETXDUPL_m)) { + EMACUse100Mbps(nf_state->emac_base, true); + } else { + EMACUse100Mbps(nf_state->emac_base, false); + } + /* enable hostpend interrupts in emac module */ nf_state->emac_base->MACINTMASKSET |= TMS570_EMACM_MACINTMASKSET_HOSTMASK; -- 2.35.3 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel