Hi
I had the same effect when I first tried but I haven't checked in modifications yet.
These are however the changes I have against the checked in version as of today.
1. app_hw_iMX.h
#elif defined TEENSY_4_1
#define MII_MANAGEMENT_CLOCK_SPEED 2500000 // typ. 2.5MHz Speed
//#define MSCR_HOLDTIME 7
#define _DP83825I
#define ETHERNET_RMII // RMII mode of operation instead of MII
#define RESET_PHY PIN_GPIO_B0_14_GPIO2_IO14 // control the PHY's reset so that its configuration can be controlled
#define PHY_STRAP_A0 PIN_GPIO_B1_04_GPIO2_IO20
#define PHY_STRAP_RMII_SLAVE PIN_GPIO_B1_05_GPIO2_IO21
#define PHY_STRAP_A1 PIN_GPIO_B1_06_GPIO2_IO22
#define ASSERT_PHY_RST() _CONFIG_DRIVE_PORT_OUTPUT_VALUE(2, (RESET_PHY), (0), (PORT_SRE_SLOW | PORT_DSE_MID)) // start with PHY reset asserted and INTPR/NAND_TREE forced high
#define CONFIG_PHY_STRAPS() _CONFIG_DRIVE_PORT_OUTPUT_VALUE(2, (PHY_STRAP_A0 | PHY_STRAP_A1 | PHY_STRAP_RMII_SLAVE), (PHY_STRAP_A0 | PHY_STRAP_RMII_SLAVE), (PORT_SRE_SLOW | PORT_DSE_MID))
#define FNFORCE_PHY_CONFIG() _SETBITS(2, RESET_PHY); fnDelayLoop(5000) // take PHY out of reset and wait 5ms so that it will be ready for following operations
#define FORCE_PHY_CONFIG
#define PHY_ADDRESS 0x01 // address of external PHY on board (fixed address used when scan not enabled)
#define PHY_IDENTIFIER 0x2000a140 // National/TI DP83825I identifier
#define PHY_INTERRUPT PIN_GPIO_B0_15_GPIO2_IO15
#define PHY_INTERRUPT_PORT PORT2
#define MDIO_ON_PORT2
#define INTERRUPT_TASK_PHY TASK_NETWORK_INDICATOR // enable link state output messages
Note that in order to ensure the PHY starts as slave (and not master) the PHY_STRAP_RMII_SLAVE is added.
2. MDIO_ON_PORT2 controls the MDIO pin-out but in kinetis_ENET.h this setup needs to be corrected as follows:
#elif defined MDIO_ON_PORT2
_CONFIG_PERIPHERAL_LOOPBACK(GPIO_B1_14, ENET_MDC, (PORT_DSE_MID)); // ENET0_MDC on GPIO2-30 (alt. function 0)
IOMUXC_ENET_MDIO_SELECT_INPUT = IOMUXC_ENET_MDIO_SELECT_INPUT_GPIO_B1_15_ALT0;
_CONFIG_PERIPHERAL(GPIO_B1_15, ENET_MDIO, (PORT_PS_UP_ENABLE | PORT_DSE_MID | PORT_SRE_FAST | PORT_SPEED_MID)); // ENET0_MDIO on GPIO2-31 (alt. function 0) with pullup enabled
since the MDIO line was not set correctly for driving its output (it is bi-directional).
I believe these where the only changes needed for it to then operate., although I don't think that the state change interrupt is presently working (less important for basic operation). This is probably due to the need to set up the PHY interrupt registers a little differently.
Regards
Mark