Re: [PATCH 2/2] MPC52xx FEC: be more conservative when setting MII_SPEED register

2009-07-16 Thread Wolfgang Denk
Dear Grant Likely,

In message fa686aa40907151018n194a154cmb8549c98c673d...@mail.gmail.com you 
wrote:
 On Wed, Jul 15, 2009 at 9:18 AM, Wolfgang Denkw...@denx.de wrote:
  This patch adds error checking and prevents clobbering unrelated bits
  (reserved bits or the DIS_PREAMBLE bit) when writing the MII_SPEED
  register on MPC52xx systems.
...
 As I mentioned in the other patch, I don't want the 5121 and 5200 FEC
 devices using common code for this.  It is a tiny block of code and
 they are different devices.  Just open code the needed calculation
 into this driver.

OK, will do.
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


[PATCH 2/2] MPC52xx FEC: be more conservative when setting MII_SPEED register

2009-07-15 Thread Wolfgang Denk
This patch adds error checking and prevents clobbering unrelated bits
(reserved bits or the DIS_PREAMBLE bit) when writing the MII_SPEED
register on MPC52xx systems.

Signed-off-by: Wolfgang Denk w...@denx.de
Cc: Grant Likely grant.lik...@secretlab.ca
Cc: Kumar Gala ga...@kernel.crashing.org
Cc: net...@vger.kernel.org
---
 drivers/net/fec_mpc52xx.c |2 +-
 drivers/net/fec_mpc52xx_phy.c |6 --
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/net/fec_mpc52xx.c b/drivers/net/fec_mpc52xx.c
index cc78633..b69d440 100644
--- a/drivers/net/fec_mpc52xx.c
+++ b/drivers/net/fec_mpc52xx.c
@@ -639,7 +639,7 @@ static void mpc52xx_fec_hw_init(struct net_device *dev)
/* set phy speed.
 * this can't be done in phy driver, since it needs to be called
 * before fec stuff (even on resume) */
-   out_be32(fec-mii_speed, priv-mdio_speed);
+   clrsetbits_be32(fec-mii_speed, 0x7E, priv-mdio_speed);
 }
 
 /**
diff --git a/drivers/net/fec_mpc52xx_phy.c b/drivers/net/fec_mpc52xx_phy.c
index 31e6d62..f733d43 100644
--- a/drivers/net/fec_mpc52xx_phy.c
+++ b/drivers/net/fec_mpc52xx_phy.c
@@ -105,8 +105,10 @@ static int mpc52xx_fec_mdio_probe(struct of_device *of,
dev_set_drvdata(dev, bus);
 
/* set MII speed */
-   out_be32(priv-regs-mii_speed,
-   ((mpc5xxx_get_bus_frequency(of-node)  20) / 5)  1);
+   i = mpc5xxx_get_mii_speed(of);
+   if (i0)
+   goto out_unmap;
+   clrsetbits_be32(priv-regs-mii_speed, 0x7E, i);
 
err = of_mdiobus_register(bus, np);
if (err)
-- 
1.6.0.6

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


Re: [PATCH 2/2] MPC52xx FEC: be more conservative when setting MII_SPEED register

2009-07-15 Thread Grant Likely
On Wed, Jul 15, 2009 at 9:18 AM, Wolfgang Denkw...@denx.de wrote:
 This patch adds error checking and prevents clobbering unrelated bits
 (reserved bits or the DIS_PREAMBLE bit) when writing the MII_SPEED
 register on MPC52xx systems.

 Signed-off-by: Wolfgang Denk w...@denx.de
 Cc: Grant Likely grant.lik...@secretlab.ca
 Cc: Kumar Gala ga...@kernel.crashing.org
 Cc: net...@vger.kernel.org

As I mentioned in the other patch, I don't want the 5121 and 5200 FEC
devices using common code for this.  It is a tiny block of code and
they are different devices.  Just open code the needed calculation
into this driver.

g.

 ---
  drivers/net/fec_mpc52xx.c     |    2 +-
  drivers/net/fec_mpc52xx_phy.c |    6 --
  2 files changed, 5 insertions(+), 3 deletions(-)

 diff --git a/drivers/net/fec_mpc52xx.c b/drivers/net/fec_mpc52xx.c
 index cc78633..b69d440 100644
 --- a/drivers/net/fec_mpc52xx.c
 +++ b/drivers/net/fec_mpc52xx.c
 @@ -639,7 +639,7 @@ static void mpc52xx_fec_hw_init(struct net_device *dev)
        /* set phy speed.
         * this can't be done in phy driver, since it needs to be called
         * before fec stuff (even on resume) */
 -       out_be32(fec-mii_speed, priv-mdio_speed);
 +       clrsetbits_be32(fec-mii_speed, 0x7E, priv-mdio_speed);
  }

  /**
 diff --git a/drivers/net/fec_mpc52xx_phy.c b/drivers/net/fec_mpc52xx_phy.c
 index 31e6d62..f733d43 100644
 --- a/drivers/net/fec_mpc52xx_phy.c
 +++ b/drivers/net/fec_mpc52xx_phy.c
 @@ -105,8 +105,10 @@ static int mpc52xx_fec_mdio_probe(struct of_device *of,
        dev_set_drvdata(dev, bus);

        /* set MII speed */
 -       out_be32(priv-regs-mii_speed,
 -               ((mpc5xxx_get_bus_frequency(of-node)  20) / 5)  1);
 +       i = mpc5xxx_get_mii_speed(of);
 +       if (i0)
 +               goto out_unmap;
 +       clrsetbits_be32(priv-regs-mii_speed, 0x7E, i);

        err = of_mdiobus_register(bus, np);
        if (err)
 --
 1.6.0.6





-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev