On Tue, Dec 21, 2010 at 09:27:02AM +0800, Mingkai Hu wrote: > Or else we cann't operate on the right address when the trans length > is greater than 65535. > > Signed-off-by: Mingkai Hu <mingkai...@freescale.com>
Applied to merge branch for 2.6.27, thanks. g. > --- > drivers/spi/spi_fsl_espi.c | 16 +++++++++------- > 1 files changed, 9 insertions(+), 7 deletions(-) > > diff --git a/drivers/spi/spi_fsl_espi.c b/drivers/spi/spi_fsl_espi.c > index ae78926..a99e233 100644 > --- a/drivers/spi/spi_fsl_espi.c > +++ b/drivers/spi/spi_fsl_espi.c > @@ -258,18 +258,18 @@ static int fsl_espi_bufs(struct spi_device *spi, struct > spi_transfer *t) > return mpc8xxx_spi->count; > } > > -static void fsl_espi_addr2cmd(unsigned int addr, u8 *cmd) > +static inline void fsl_espi_addr2cmd(unsigned int addr, u8 *cmd) > { > - if (cmd[1] && cmd[2] && cmd[3]) { > + if (cmd) { > cmd[1] = (u8)(addr >> 16); > cmd[2] = (u8)(addr >> 8); > cmd[3] = (u8)(addr >> 0); > } > } > > -static unsigned int fsl_espi_cmd2addr(u8 *cmd) > +static inline unsigned int fsl_espi_cmd2addr(u8 *cmd) > { > - if (cmd[1] && cmd[2] && cmd[3]) > + if (cmd) > return cmd[1] << 16 | cmd[2] << 8 | cmd[3] << 0; > > return 0; > @@ -395,9 +395,11 @@ static void fsl_espi_rw_trans(struct spi_message *m, > } > } > > - addr = fsl_espi_cmd2addr(local_buf); > - addr += pos; > - fsl_espi_addr2cmd(addr, local_buf); > + if (pos > 0) { > + addr = fsl_espi_cmd2addr(local_buf); > + addr += pos; > + fsl_espi_addr2cmd(addr, local_buf); > + } > > espi_trans->n_tx = n_tx; > espi_trans->n_rx = trans_len; > -- > 1.6.4 > > _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev