Message ID | 4E02B33A.3060805@gmail.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On Thu, 23 Jun 2011 11:30:02 +0800 Dirk Brandewie <dirk.brandewie@gmail.com> wrote: > This patch should have been: > > spi-dw: Fix condition in spi_dw_{writer/reader} > > From: Dirk Brandewie <dirk.brandewie@gmail.com> > > Fix the condition based on whether the current transfer has a tx/rx > buffer. > > Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com> > --- > drivers/spi/spi-dw.c | 10 +++++----- > 1 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/spi/spi-dw.c b/drivers/spi/spi-dw.c > index 96ae4a7..0a848bc 100644 > --- a/drivers/spi/spi-dw.c > +++ b/drivers/spi/spi-dw.c > @@ -193,15 +193,15 @@ static void spi_dw_writer(struct spi_dw *dws) > u16 txw = 0; > > while (max--) { > - /* Set the tx word if the transfer's original "tx" is > not null */ > - if (dws->tx_end - dws->len) { > + /* Set the tx word if the transfer's "tx" is not null > */ > + if (dws->tx) { > if (dws->n_bytes == 1) > txw = *(u8 *)(dws->tx); > else > txw = *(u16 *)(dws->tx); > + dws->tx += dws->n_bytes; > } > dw_writew(dws, dr, txw); > - dws->tx += dws->n_bytes; > } > } emm, this patch still break the NULL original tx buf case, as it is used in /* Return the max entries we can fill into tx fifo */ static inline u32 tx_max(struct dw_spi *dws) { u32 tx_left, tx_room, rxtx_gap; tx_left = (dws->tx_end - dws->tx) / dws->n_bytes; tx_room = dws->fifo_len - dw_readw(dws, txflr); > > @@ -213,13 +213,13 @@ static void spi_dw_reader(struct spi_dw *dws) > while (max--) { > rxw = dw_readw(dws, dr); > /* Care rx only if the transfer's original "rx" is > not null */ > - if (dws->rx_end - dws->len) { > + if (dws->rx) { > if (dws->n_bytes == 1) > *(u8 *)(dws->rx) = rxw; > else > *(u16 *)(dws->rx) = rxw; > + dws->rx += dws->n_bytes; > } > - dws->rx += dws->n_bytes; > } > } > ------------------------------------------------------------------------------ Simplify data backup and recovery for your virtual environment with vRanger. Installation's a snap, and flexible recovery options mean your data is safe, secure and there when you need it. Data protection magic? Nope - It's vRanger. Get your free trial download today. http://p.sf.net/sfu/quest-sfdev2dev
diff --git a/drivers/spi/spi-dw.c b/drivers/spi/spi-dw.c index 96ae4a7..0a848bc 100644 --- a/drivers/spi/spi-dw.c +++ b/drivers/spi/spi-dw.c @@ -193,15 +193,15 @@ static void spi_dw_writer(struct spi_dw *dws) u16 txw = 0; while (max--) { - /* Set the tx word if the transfer's original "tx" is not null */ - if (dws->tx_end - dws->len) { + /* Set the tx word if the transfer's "tx" is not null */ + if (dws->tx) { if (dws->n_bytes == 1) txw = *(u8 *)(dws->tx); else txw = *(u16 *)(dws->tx); + dws->tx += dws->n_bytes; } dw_writew(dws, dr, txw); - dws->tx += dws->n_bytes; } } @@ -213,13 +213,13 @@ static void spi_dw_reader(struct spi_dw *dws) while (max--) { rxw = dw_readw(dws, dr); /* Care rx only if the transfer's original "rx" is not null */ - if (dws->rx_end - dws->len) { + if (dws->rx) { if (dws->n_bytes == 1) *(u8 *)(dws->rx) = rxw; else *(u16 *)(dws->rx) = rxw; + dws->rx += dws->n_bytes; } - dws->rx += dws->n_bytes; } }