From f5b9e736418422f9f3501b9854294b38275f4abd Mon Sep 17 00:00:00 2001
From: Kumar Gala <galak@kernel.crashing.org>
Date: Fri, 14 Oct 2011 03:17:56 -0500
Subject: [PATCH] fm: Don't allow disabling of FM1-DTSEC1

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(+)

diff --git a/drivers/net/fm/p1023.c b/drivers/net/fm/p1023.c
index b17dc40b8a8..9765da5b235 100644
--- a/drivers/net/fm/p1023.c
+++ b/drivers/net/fm/p1023.c
@@ -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]);
 }
 
diff --git a/drivers/net/fm/p3060.c b/drivers/net/fm/p3060.c
index 176e1d292cf..c9748a954cc 100644
--- a/drivers/net/fm/p3060.c
+++ b/drivers/net/fm/p3060.c
@@ -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]);
 }
 
diff --git a/drivers/net/fm/p4080.c b/drivers/net/fm/p4080.c
index 791caab7ecd..9dc6049c360 100644
--- a/drivers/net/fm/p4080.c
+++ b/drivers/net/fm/p4080.c
@@ -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]);
 }
 
diff --git a/drivers/net/fm/p5020.c b/drivers/net/fm/p5020.c
index 69c27d22371..a7a6e43fe2c 100644
--- a/drivers/net/fm/p5020.c
+++ b/drivers/net/fm/p5020.c
@@ -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]);
 }
 
-- 
GitLab