On Fri, Jun 20, 2008 at 05:38:17PM +0800, Chen Gong wrote: > Signed-off-by: Chen Gong <[EMAIL PROTECTED]>
The patch lacks any description. E.g. at which frequencies the current math breaks, and why? > --- > drivers/spi/spi_mpc83xx.c | 29 ++++++++++++++++------------- > 1 files changed, 16 insertions(+), 13 deletions(-) > > diff --git a/drivers/spi/spi_mpc83xx.c b/drivers/spi/spi_mpc83xx.c > index 6832da6..070c621 100644 > --- a/drivers/spi/spi_mpc83xx.c > +++ b/drivers/spi/spi_mpc83xx.c > @@ -266,21 +266,24 @@ int mpc83xx_spi_setup_transfer(struct spi_device *spi, > struct spi_transfer *t) > > cs->hw_mode |= SPMODE_LEN(bits_per_word); > > - if ((mpc83xx_spi->spibrg / hz) >= 64) { > - pm = mpc83xx_spi->spibrg / (hz * 64) - 1; > - if (pm > 0x0f) { > - dev_err(&spi->dev, "Requested speed is too " > - "low: %d Hz. Will use %d Hz instead.\n", > - hz, mpc83xx_spi->spibrg / 1024); > - pm = 0x0f; > + if ((mpc83xx_spi->spibrg / hz) > 64) { > + pm = mpc83xx_spi->spibrg / (hz * 64); > + if (pm > 16) { Suppose this didn't happen. So we calculated: pm = mpc83xx_spi->spibrg / (hz * 64); And we didn't set any hw flag. > + cs->hw_mode |= SPMODE_DIV16; > + pm /= 16; > + if (pm > 16) { > + dev_err(&spi->dev, "Requested speed is too " > + "low: %d Hz. Will use %d Hz instead.\n", > + hz, mpc83xx_spi->spibrg / 1024); > + pm = 16; > + } > } > - cs->hw_mode |= SPMODE_PM(pm) | SPMODE_DIV16; > - } else { > + } else > pm = mpc83xx_spi->spibrg / (hz * 4); Now suppose this did happen. So we calculated: pm = mpc83xx_spi->spibrg / (hz * 4); And we didn't set any hw flag either. So, we used two different formulas with the same hw flags. Maybe I'm missing something, but this looks quite wrong. > - if (pm) > - pm--; > - cs->hw_mode |= SPMODE_PM(pm); > - } > + if (pm) > + pm--; > + > + cs->hw_mode |= SPMODE_PM(pm); > regval = mpc83xx_spi_read_reg(&mpc83xx_spi->base->mode); > if (cs->hw_mode != regval) { > unsigned long flags; > -- > 1.5.4 -- Anton Vorontsov email: [EMAIL PROTECTED] irc://irc.freenode.net/bd2 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev