All of lore.kernel.org
 help / color / mirror / Atom feed
From: marex@denx.de (Marek Vasut)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 1/2] spi: spi-imx: enable dma support for escpi controller
Date: Tue, 14 Jan 2014 23:02:31 +0100	[thread overview]
Message-ID: <201401142302.31434.marex@denx.de> (raw)
In-Reply-To: <20140114215548.GD15567@sirena.org.uk>

On Tuesday, January 14, 2014 at 10:55:48 PM, Mark Brown wrote:
> On Tue, Jan 14, 2014 at 10:38:32PM +0100, Marek Vasut wrote:
> > I know the MXC SPI controller works in full-duplex mode, thus must have
> > two equally big buffers (one for RX and one for TX) even if used in
> > half-duplex mode, right?
> 
> We should factor this stuff out into the core, a bunch of controllers
> have that limitation.
> 
> > The problem I perceive here is that when I do for example 4 MB long
> > continuous half-duplex transfer with the IMX SPI, your code will happily
> > allocate 4MB big buffer, right ?
> 
> Or try to - the other trick here is getting 4MB of contiguous memory in
> the first place (unless there's an IOMMU making everything pretty).

Oh, but what if I want to make a really looong transfer ? Say, read entire SPI 
NOR of 128MB in size ... Spansion has such big SPI NORs in their new portfolio.

> > Hence my suggestion, won't it be better to split such long transfers into
> > a chain of DMA descriptors AND use a small (say, 16KiB) buffer for the
> > unwanted direction ? This way, you would allocate the small 16KiB block
> > only once (heck, you can even allocate it in probe() ), and each
> > descriptor would point to this block, overwriting it or sourcing zeroes
> > from it .
> 
> Yes, indeed.  I've half started working on some dmaengine code and was
> going to do something like this as part of it - the idea was to have the
> core generate a sg_list to pass to devices with DMAable transfers which
> would enable this sort of rewriting and would also mean we could do
> things like scatter/gather more effectively.  Not got as far as actually
> getting things into a nice shape for that though.  There's a lot of
> common patterns here which we shouldn't be open coding.

Indeed, full ACK on this.

Best regards,
Marek Vasut

  reply	other threads:[~2014-01-14 22:02 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-03 22:53 [PATCH v2 1/2] spi: spi-imx: enable dma support for escpi controller Frank Li
2014-01-03 22:53 ` [PATCH v2 2/2] ARM: dts: imx: enable dma for spi Frank Li
2014-01-06  5:58   ` Shawn Guo
2014-01-09 22:56 ` [PATCH v2 1/2] spi: spi-imx: enable dma support for escpi controller Frank Li
2014-01-14 21:49   ` Mark Brown
2014-01-14  6:02 ` Shawn Guo
2014-01-14 21:39   ` Marek Vasut
2014-01-14 21:52   ` Frank Li
2014-01-15  6:17     ` Shawn Guo
2014-01-14 21:38 ` Marek Vasut
2014-01-14 21:55   ` Mark Brown
2014-01-14 22:02     ` Marek Vasut [this message]
2014-01-14 22:13       ` Mark Brown
2014-01-14 22:25         ` Marek Vasut

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=201401142302.31434.marex@denx.de \
    --to=marex@denx.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.