Re: [PATCH 2/2] MPC52xx FEC: be more conservative when setting MII_SPEED register
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
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
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