|
@@ -3289,6 +3289,7 @@ static int bcmgenet_probe(struct platform_device *pdev)
|
|
|
const void *macaddr;
|
|
|
struct resource *r;
|
|
|
int err = -EIO;
|
|
|
+ const char *phy_mode_str;
|
|
|
|
|
|
/* Up to GENET_MAX_MQ_CNT + 1 TX queues and RX queues */
|
|
|
dev = alloc_etherdev_mqs(sizeof(*priv), GENET_MAX_MQ_CNT + 1,
|
|
@@ -3396,6 +3397,13 @@ static int bcmgenet_probe(struct platform_device *pdev)
|
|
|
priv->clk_eee = NULL;
|
|
|
}
|
|
|
|
|
|
+ /* If this is an internal GPHY, power it on now, before UniMAC is
|
|
|
+ * brought out of reset as absolutely no UniMAC activity is allowed
|
|
|
+ */
|
|
|
+ if (dn && !of_property_read_string(dn, "phy-mode", &phy_mode_str) &&
|
|
|
+ !strcasecmp(phy_mode_str, "internal"))
|
|
|
+ bcmgenet_power_up(priv, GENET_POWER_PASSIVE);
|
|
|
+
|
|
|
err = reset_umac(priv);
|
|
|
if (err)
|
|
|
goto err_clk_disable;
|