Patchwork [U-Boot,V3,3/9] net: fec_mxc: change fec_mii_setspeed parameter

login
register
mail settings
Submitter Troy Kisky
Date Oct. 23, 2012, 2:40 a.m.
Message ID <1350960047-23404-4-git-send-email-troy.kisky@boundarydevices.com>
Download mbox | patch
Permalink /patch/193313/
State Awaiting Upstream
Delegated to: Stefano Babic
Headers show

Comments

Troy Kisky - Oct. 23, 2012, 2:40 a.m.
Only the hardware ethernet registers are needed
for this function, so don't pass the more general
structure. I'm trying to separate MII and fec.

This also fixes MX28 fec_mii_setspeed use on secondary ethernet port

This was found by inspection of the code and should be
checked on real hardware.

Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
---
 drivers/net/fec_mxc.c |   10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

Patch

diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
index 6596ceb..eb89e57 100644
--- a/drivers/net/fec_mxc.c
+++ b/drivers/net/fec_mxc.c
@@ -135,15 +135,15 @@  static int fec_mdio_read(struct ethernet_regs *eth, uint8_t phyAddr,
 	return val;
 }
 
-static void fec_mii_setspeed(struct fec_priv *fec)
+static void fec_mii_setspeed(struct ethernet_regs *eth)
 {
 	/*
 	 * Set MII_SPEED = (1/(mii_speed * 2)) * System Clock
 	 * and do not drop the Preamble.
 	 */
 	writel((((imx_get_fecclk() / 1000000) + 2) / 5) << 1,
-			&fec->eth->mii_speed);
-	debug("%s: mii_speed %08x\n", __func__, readl(&fec->eth->mii_speed));
+			&eth->mii_speed);
+	debug("%s: mii_speed %08x\n", __func__, readl(&eth->mii_speed));
 }
 
 static int fec_mdio_write(struct ethernet_regs *eth, uint8_t phyAddr,
@@ -611,7 +611,7 @@  static int fec_init(struct eth_device *dev, bd_t* bd)
 	fec_reg_setup(fec);
 
 	if (fec->xcv_type != SEVENWIRE)
-		fec_mii_setspeed(fec);
+		fec_mii_setspeed(fec->bus->priv);
 
 	/*
 	 * Set Opcode/Pause Duration Register
@@ -966,7 +966,6 @@  static int fec_probe(bd_t *bd, int dev_id, int phy_id, uint32_t base_addr)
 	}
 
 	fec_reg_setup(fec);
-	fec_mii_setspeed(fec);
 
 	if (dev_id == -1) {
 		sprintf(edev->name, "FEC");
@@ -995,6 +994,7 @@  static int fec_probe(bd_t *bd, int dev_id, int phy_id, uint32_t base_addr)
 #else
 	bus->priv = fec->eth;
 #endif
+	fec_mii_setspeed(bus->priv);
 	ret = mdio_register(bus);
 	if (ret) {
 		printf("mdio_register failed\n");