@@ -39,6 +39,11 @@ static int is_device_disabled(enum fm_port port)
void fman_disable_port(enum fm_port port)
{
ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+
+ /* don't allow disabling of DTSEC1 as its needed for MDIO */
+ if (port == FM1_DTSEC1)
+ return;
+
setbits_be32(&gur->devdisr, port_to_devdisr[port]);
}
@@ -45,6 +45,11 @@ static int is_device_disabled(enum fm_port port)
void fman_disable_port(enum fm_port port)
{
ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+
+ /* don't allow disabling of DTSEC1 as its needed for MDIO */
+ if (port == FM1_DTSEC1)
+ return;
+
setbits_be32(&gur->devdisr2, port_to_devdisr[port]);
}
@@ -47,6 +47,11 @@ static int is_device_disabled(enum fm_port port)
void fman_disable_port(enum fm_port port)
{
ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+
+ /* don't allow disabling of DTSEC1 as its needed for MDIO */
+ if (port == FM1_DTSEC1)
+ return;
+
setbits_be32(&gur->devdisr2, port_to_devdisr[port]);
}
@@ -43,6 +43,11 @@ static int is_device_disabled(enum fm_port port)
void fman_disable_port(enum fm_port port)
{
ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+
+ /* don't allow disabling of DTSEC1 as its needed for MDIO */
+ if (port == FM1_DTSEC1)
+ return;
+
setbits_be32(&gur->devdisr2, port_to_devdisr[port]);
}
The MDIO controller to talk to external PHYs is on FM1-DTSEC1 so don't allow disabling. If we disable it we end up powering the block down in the SoC and thus can't communicate to any external PHYs. Signed-off-by: Kumar Gala <galak@kernel.crashing.org> --- drivers/net/fm/p1023.c | 5 +++++ drivers/net/fm/p3060.c | 5 +++++ drivers/net/fm/p4080.c | 5 +++++ drivers/net/fm/p5020.c | 5 +++++ 4 files changed, 20 insertions(+), 0 deletions(-)