From: Anton Vorontsov <hidden> Date: 2007-08-02 14:27:55
For MPC8349E input to SPIBRG is SYSCLK, but it's SYSCLK/2 for
MPC8323E (running in so-called "QE mode").
This fixes clocking issues I've noticed recently.
Probably someday mpc83xx_spi->sysclk should be renamed to
mpc83xx_spi->spiclk to be less confusing.
Signed-off-by: Anton Vorontsov <redacted>
---
drivers/spi/spi_mpc83xx.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
From: Kumar Gala <hidden> Date: 2007-08-02 15:18:55
On Aug 2, 2007, at 9:26 AM, Anton Vorontsov wrote:
For MPC8349E input to SPIBRG is SYSCLK, but it's SYSCLK/2 for
MPC8323E (running in so-called "QE mode").
QE mode or the SPI in QE running in CPU mode?
- k
quoted hunk
This fixes clocking issues I've noticed recently.
Probably someday mpc83xx_spi->sysclk should be renamed to
mpc83xx_spi->spiclk to be less confusing.
Signed-off-by: Anton Vorontsov <redacted>
---
drivers/spi/spi_mpc83xx.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
From: Anton Vorontsov <hidden> Date: 2007-08-02 15:28:58
On Thu, Aug 02, 2007 at 10:19:17AM -0500, Kumar Gala wrote:
On Aug 2, 2007, at 9:26 AM, Anton Vorontsov wrote:
quoted
For MPC8349E input to SPIBRG is SYSCLK, but it's SYSCLK/2 for
MPC8323E (running in so-called "QE mode").
QE mode or the SPI in QE running in CPU mode?
Yeah, "qe_mode" variable is confusing, but it wasn't me who introduced
it. ;-) So, "the SPI in QE running in CPU mode" is correct.
[ Unrelated to that particular patch.
Probably qe_mode should be renamed to something better, maybe
spi_in_qe? Or we could back to discussion about auto detecting it
somehow. ]
- k
Thanks,
--
Anton Vorontsov
email: cbou@mail.ru
backup email: ya-cbou@yandex.ru
irc://irc.freenode.net/bd2
From: Anton Vorontsov <hidden> Date: 2007-08-06 12:05:57
On Fri, Aug 03, 2007 at 04:29:48AM -0500, Kumar Gala wrote:
On Aug 2, 2007, at 4:47 PM, David Brownell wrote:
quoted
On Thursday 02 August 2007, Anton Vorontsov wrote:
quoted
Probably someday mpc83xx_spi->sysclk should be renamed to
mpc83xx_spi->spiclk to be less confusing.
Why not "today", with this patch? That would fix some of
the root cause of this bug...
I'm fine with this as well. I just called it sysclk to start with
since when I wrote the driver it was just for the MPC834x.
Ok, great.
Now I think that `spiclk' is the bad name either, because it's output
clock of the spi unit. `spibrg' should be the best name for this,
as it's input clock to the SPI unit. Patch below.
- - - -
From: Anton Vorontsov <redacted>
Subject: [PATCH] spi_mpc83xx: for SPI in QE spibrg's input is sysclk/2
For MPC8349E input to SPIBRG is SYSCLK, but it's SYSCLK/2 for
MPC8323E (SPI in QE).
Also mpc83xx_spi->sysclk renamed to mpc83xx_spi->spibrg.
Signed-off-by: Anton Vorontsov <redacted>
---
drivers/spi/spi_mpc83xx.c | 20 ++++++++++++--------
1 files changed, 12 insertions(+), 8 deletions(-)
@@ -86,7 +86,7 @@ struct mpc83xx_spi {unsignednsecs;/* (clock cycle time)/2 */-u32sysclk;+u32spibrg;/* SPIBRG input clock */u32rx_shift;/* RX data reg shift when in qe mode */u32tx_shift;/* TX data reg shift when in qe mode */
@@ -169,17 +169,17 @@ static void mpc83xx_spi_chipselect(struct spi_device *spi, int value)regval|=SPMODE_LEN(len);-if((mpc83xx_spi->sysclk/spi->max_speed_hz)>=64){-u8pm=mpc83xx_spi->sysclk/(spi->max_speed_hz*64);+if((mpc83xx_spi->spibrg/spi->max_speed_hz)>=64){+u8pm=mpc83xx_spi->spibrg/(spi->max_speed_hz*64);if(pm>0x0f){-printk(KERN_WARNING"MPC83xx SPI: SPICLK can't be less then a SYSCLK/1024!\n"-"Requested SPICLK is %d Hz. Will use %d Hz instead.\n",-spi->max_speed_hz,mpc83xx_spi->sysclk/1024);+dev_warn(&spi->dev,"Requested speed is too "+"low: %d Hz. Will use %d Hz instead.\n",+spi->max_speed_hz,mpc83xx_spi->spibrg/1024);pm=0x0f;}regval|=SPMODE_PM(pm)|SPMODE_DIV16;}else{-u8pm=mpc83xx_spi->sysclk/(spi->max_speed_hz*4);+u8pm=mpc83xx_spi->spibrg/(spi->max_speed_hz*4);regval|=SPMODE_PM(pm);}
@@ -429,13 +429,17 @@ static int __init mpc83xx_spi_probe(struct platform_device *dev)mpc83xx_spi->bitbang.chipselect=mpc83xx_spi_chipselect;mpc83xx_spi->bitbang.setup_transfer=mpc83xx_spi_setup_transfer;mpc83xx_spi->bitbang.txrx_bufs=mpc83xx_spi_bufs;-mpc83xx_spi->sysclk=pdata->sysclk;mpc83xx_spi->activate_cs=pdata->activate_cs;mpc83xx_spi->deactivate_cs=pdata->deactivate_cs;mpc83xx_spi->qe_mode=pdata->qe_mode;mpc83xx_spi->get_rx=mpc83xx_spi_rx_buf_u8;mpc83xx_spi->get_tx=mpc83xx_spi_tx_buf_u8;+if(mpc83xx_spi->qe_mode)+mpc83xx_spi->spibrg=pdata->sysclk/2;+else+mpc83xx_spi->spibrg=pdata->sysclk;+mpc83xx_spi->rx_shift=0;mpc83xx_spi->tx_shift=0;if(mpc83xx_spi->qe_mode){