Hello, I’m trying to activate the RGMII interface for my AGX ORIN custom carrier
. I’m using an Ethernet chip, the PHY MxL86111, but I’m having trouble with the configuration.
When the agx orin kernel starts, the logs show a “Failed to poll MAC Software reset” error, keeping the PHY in reset mode, preventing my MDI connection.
To disable this error, I made changes in core_common.c and prevented it from staying in reset state.
After that, I was able to access the PHY chip via MDI and Phytool. I can identify the problem here.
the MxL86111 initially requests a reset trigger and then, while in reset state, reads whether the relevant pins are pulled up or pulled down using pin strapping, and configures its internal settings accordingly. Here is my hardware configuration:
My RD0/RXDLY pin does not contain any pull-up or pull-down resistors.
RXD1/CFG_MODE0 has a external pull-down resistor,
RXD2/CFG_MODE1 has a external pull-down resistor,
and RXD3/CFG_MODE2 has a external pull-down resistor.
———————————————————————————————————————————————————
When I read this register with MDIO, the value I get is 0x8147 in binary form (0b1000000101000111), so the problem seems to be here.
We can see that the last bits need to be 000 for UTP to rgmii, but there’s an error here.
it supposed to be 0b1000000111100000
I changed this via MDIO ,I applied write in phytool , but I think it’s ignoring my correction because it didn’t initially appear in the kernel as rgmii.
————————————————————————————————————————————————-
I’m configuring the agx orin pinmux like this:
Req. Initial State is working as it should.
At first I suspected Req.InitialState, but I realized it wasn’t related; it determines the pin states before the kernel starts.
I’m sure I’ve applied the changes visible in Pinmux
—the problem is that after the kernel starts and sends a phy reset, these pins appear as active high, and it messes up my configuration. How can I fix this?
So how can I set the states of the relevant pins the moment the kernel starts up?




