On 05/05/11 07:51, Alexander Stein wrote: > req.sample needs its own cacheline otherwise accessing req.msg fetches > it in again. > > Note: This effect doesn't occur if the underlying SPI driver doesn't use > DMA at all. I would say the comment is a bit obvious, but then you are fixing a bug because it was wrong - so fair call. > > Signed-off-by: Alexander Stein <alexander.stein@xxxxxxxxxxxxxxxxxxxxx> Acked-by: Jonathan Cameron <jic23@xxxxxxxxx> > --- > This obsoletes the patch > [PATCH 1/2] ads7846: Make buffers in ads7846_read12_ser and ads7845_read12_ser DMA save > > drivers/input/touchscreen/ads7846.c | 12 ++++++++++-- > 1 files changed, 10 insertions(+), 2 deletions(-) > > diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c > index c24946f..ab51a8d 100644 > --- a/drivers/input/touchscreen/ads7846.c > +++ b/drivers/input/touchscreen/ads7846.c > @@ -281,17 +281,25 @@ struct ser_req { > u8 command; > u8 ref_off; > u16 scratch; > - __be16 sample; > struct spi_message msg; > struct spi_transfer xfer[6]; > + /* > + * DMA (thus cache coherency maintenance) requires the > + * transfer buffers to live in their own cache lines. > + */ > + __be16 sample ____cacheline_aligned; > }; > > struct ads7845_ser_req { > u8 command[3]; > u8 pwrdown[3]; > - u8 sample[3]; > struct spi_message msg; > struct spi_transfer xfer[2]; > + /* > + * DMA (thus cache coherency maintenance) requires the > + * transfer buffers to live in their own cache lines. > + */ > + u8 sample[3] ____cacheline_aligned; > }; > > static int ads7846_read12_ser(struct device *dev, unsigned command) -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html