I'm currently using an i.MX8MP running the Zephyr OS and want to utilize enet qos under this system. The externally connected PHY is a DP83630 using the RMII bus. The DP83630 acts as the master providing a 50MHz clock. The enet qos clock configuration is as follows:
CLOCK_DisableClock(kCLOCK_Enet_Qos);
CLOCK_SetRootMux(kCLOCK_RootEnetAxi, kCLOCK_EnetAxiRootmuxSysPll1Div3);
CLOCK_SetRootDivider(kCLOCK_RootEnetAxi, 1U, 1U);
CLOCK_SetRootMux(kCLOCK_RootEnetQos, kCLOCK_EnetQosRootmuxSysPll2Div20);
CLOCK_SetRootDivider(kCLOCK_RootEnetQos, 1U, 1U);
CLOCK_SetRootMux(kCLOCK_RootEnetQosTimer, kCLOCK_EnetQosTimerRootmuxSysPll2Div10);
CLOCK_SetRootDivider(kCLOCK_RootEnetQosTimer, 1U, 1U);
CLOCK_EnableClock(kCLOCK_Enet_Qos);
When initializing MDIO, the system hangs after calling the ENET_QOS_SetSMI(ENET_QOS_Type *base, uint32_t csrClock_Hz) function. Specifically, it hangs at the line:
base->MAC_MDIO_ADDRESS = ENET_QOS_MAC_MDIO_ADDRESS_CR(crDiv);
It appears that accessing the enet qos registers causes the system to hang. Could this issue be related to an error in the clock configuration?