linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Brownell <david-b@pacbell.net>
To: Alessandro Rubini <rubini-list@gnudd.com>
Cc: linux-input@vger.kernel.org, linux@arm.linux.org.uk,
	linux-arm-kernel@lists.arm.linux.org.uk
Subject: Re: [PATCH] ads7846: allocate separate cache lines for tx and rx data
Date: Thu, 16 Jul 2009 00:51:04 -0700	[thread overview]
Message-ID: <200907160051.04506.david-b@pacbell.net> (raw)
In-Reply-To: <20090715193326.GA13306@mail.gnudd.com>

On Wednesday 15 July 2009, Alessandro Rubini wrote:
> >> Since the SPI master might use DMA, tx and rx buffers must live on
> >> different cache lines.
> > 
> > Not true.  Full duplex tranfsers using a single buffer are
> > explicitly allowed.
> 
> Ok, thanks.
> 
> > If that spi_master driver mis-handles this, it's a bug in that
> > driver.
> 
> Well, the driver receives one spi message made of 4 or 6 transfers.
> It does one at a time, shouldn't it?

Yes, where each transfer may be full or half duplex.


> If the transfer description is 
> intermixed with the data buffer, we fetch a line from ram with
> not-yet-filled input buffers. So I get invalid data from the analog
> inputs -- usually zero, as the structure is kzalloced.

If you're referring to the way the spi_message and spi_transfer
structs sit in the same cache lines as the data buffers, that's
something that should get fixed.  It started out that way since
none of the *initial* configurations used DMA, and the driver was
evolved from existing code.  Sometime later this was noted to be
a bug when used with DMA...

It seems that e8f462d202026d8e99f553ed5a09422321226ac9 wasn't a
complete fix ... this explains why the touchscreen behaves but
not the ADC inputs (as you noted).

Note that this issue is unrelated to full duplex DMA support.
Full duplex DMA is no problem.  It's not at all common, but that's
exactly what DMA_BIDIRECTIONAL means.  If you look at atmel_spi
you will notice that it maps the TX first, flushing caches; then
the RX next.  The other way around would break; some drivers
got that wrong, and had to be fixed last year sometime.

 
> >> The issue was discussed with Russell King on linux-arm-kernel.
> > 
> > Gee, but not with the author of that driver or the maintainer of
> > the SPI framework.   Who could have pointed out instantly where
> > the true bug resides.
> 
> So, where is it? I don't get it I'm sorry.

See above; this something an earlier patch didn't quite cover.


> ps: yes, it's a revB silicon.

Good.  That SPI bug in revA made it pretty useless for SPI stuff.
Bitbanging works annoyingly slowly!

- Dave



  parent reply	other threads:[~2009-07-16  7:51 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-15  9:33 [PATCH] ads7846: allocate separate cache lines for tx and rx data Alessandro Rubini
2009-07-15 18:06 ` David Brownell
2009-07-15 19:33 ` Alessandro Rubini
2009-07-16  7:15   ` Russell King - ARM Linux
2009-07-16  7:22     ` Russell King - ARM Linux
2009-07-16  7:56       ` David Brownell
2009-07-16  7:28     ` David Brownell
2009-07-16 10:00       ` Marek Vasut
2009-07-16 15:35         ` David Brownell
2009-07-16 20:06         ` Russell King - ARM Linux
2009-07-16  7:51   ` David Brownell [this message]
2009-07-16  8:15   ` Alessandro Rubini
2009-07-16  8:35     ` David Brownell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200907160051.04506.david-b@pacbell.net \
    --to=david-b@pacbell.net \
    --cc=linux-arm-kernel@lists.arm.linux.org.uk \
    --cc=linux-input@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=rubini-list@gnudd.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).