diff --git a/drivers/net/phy/dp83822.c b/drivers/net/phy/dp83822.c
index 89887a05f23d..2741081d6988 100644
--- a/drivers/net/phy/dp83822.c
+++ b/drivers/net/phy/dp83822.c
@@ -387,6 +387,11 @@ static int dp83822_config_init(struct phy_device *phydev)
 	int err = 0;
 	int bmcr;
 
+	if (!phy_interface_is_rgmii(phydev) &&
+	    phy->interface != PHY_INTERFACE_MODE_RMII &&
+	    phy->interface != PHY_INTERFACE_MODE_MII)
+		return -ENODEV;
+
 	if (phy_interface_is_rgmii(phydev)) {
 		trx_int_delay = phy_get_internal_delay(phydev, dev, NULL, 0,
 						      true);
