linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/48] PL08x DMA
@ 2011-01-03 22:29 Russell King - ARM Linux
  2011-01-03 22:30 ` [PATCH 01/48] ARM: PL08x: fix spelling errors Russell King - ARM Linux
                   ` (47 more replies)
  0 siblings, 48 replies; 61+ messages in thread
From: Russell King - ARM Linux @ 2011-01-03 22:29 UTC (permalink / raw)
  To: linux-arm-kernel

Here's the current state of play with the PL08x driver - a massive 48
patches.  The diffstat doesn't look too impresive:

 drivers/dma/amba-pl08x.c   | 1040 +++++++++++++++++++++-----------------------
 include/linux/amba/pl08x.h |   56 ++--
 2 files changed, 520 insertions(+), 576 deletions(-)

except that the two files comprise some 2300 lines, so this covers
about a quarter of the driver.

The obvious fixes come first in the series, followed by the simpler
changes, gradually progressing towards more and more invasive stuff.

One thing I really don't like are APIs where a lock is held across two
calls - especially when it can be easily worked around.  Patches 45
and 46 which sort this are intentionally towards the end.

Another thing to point out is that platforms can now control which
buses the PL08x uses for transfers for memory, peripherals, etc.
The logic in pl08x_select_bus() is intentionally non-symetric to
prevent both source and destination transfers ending up on the same
bus when both are available.  However, the logic is only well
defined for non-zero values of the source and destination bus masks:

src dst M1      M2
01  01  SRC+DST
01  10  SRC     DST
01  11  SRC     DST
10  01  DST     SRC
10  10          SRC+DST
10  11  DST     SRC
11  01  DST     SRC
11  10  SRC     DST
11  11  SRC     DST

(src/dst bit0 = M1 available, bit1 = M2 available)

If they happen to be zero, then the result is:

src dst M1      M2
00  00          SRC+DST
00  01  DST     SRC    
00  10          SRC+DST
00  11  DST     SRC    
01  00  SRC     DST    
10  00          SRC+DST
11  00          SRC+DST

so not quite what would be expected - so don't have zero bus masks.

^ permalink raw reply	[flat|nested] 61+ messages in thread

end of thread, other threads:[~2011-01-17 19:43 UTC | newest]

Thread overview: 61+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-01-03 22:29 [PATCH 00/48] PL08x DMA Russell King - ARM Linux
2011-01-03 22:30 ` [PATCH 01/48] ARM: PL08x: fix spelling errors Russell King - ARM Linux
2011-01-03 22:30 ` [PATCH 02/48] ARM: PL08x: fix array overflow in dma_set_runtime_config() Russell King - ARM Linux
2011-01-03 22:31 ` [PATCH 03/48] ARM: PL08x: fix atomic_t usage and tx_submit() return value range Russell King - ARM Linux
2011-01-03 22:31 ` [PATCH 04/48] ARM: PL08x: fix locking in tasklet Russell King - ARM Linux
2011-01-03 22:31 ` [PATCH 05/48] ARM: PL08x: fix a leak when preparing TXDs Russell King - ARM Linux
2011-01-03 22:32 ` [PATCH 06/48] ARM: PL08x: fix missed spin-unlock in pl08x_issue_pending() Russell King - ARM Linux
2011-01-03 22:32 ` [PATCH 07/48] ARM: PL08x: fix deadlock in terminate_all Russell King - ARM Linux
2011-01-03 22:32 ` [PATCH 08/48] ARM: PL08x: fix sparse warnings Russell King - ARM Linux
2011-01-03 22:33 ` [PATCH 09/48] ARM: PL08x: add comment explaining the flow control methods Russell King - ARM Linux
2011-01-03 22:33 ` [PATCH 10/48] ARM: PL08x: improve the announcement printk Russell King - ARM Linux
2011-01-03 22:33 ` [PATCH 11/48] ARM: PL08x: prefix hex numbers with 0x Russell King - ARM Linux
2011-01-03 22:34 ` [PATCH 12/48] ARM: PL08x: remove unnecessary includes Russell King - ARM Linux
2011-01-03 22:34 ` [PATCH 13/48] ARM: PL08x: remove unnecessary NULL and BUG checks Russell King - ARM Linux
2011-01-03 22:34 ` [PATCH 14/48] ARM: PL08x: remove circular buffer support Russell King - ARM Linux
2011-01-03 22:35 ` [PATCH 15/48] ARM: PL08x: constify vendor data pointers Russell King - ARM Linux
2011-01-03 22:35 ` [PATCH 16/48] ARM: PL08x: avoid 'void *' struct fields when we can type them properly Russell King - ARM Linux
2011-01-03 22:35 ` [PATCH 17/48] ARM: PL08x: consolidate common txd initialization Russell King - ARM Linux
2011-01-03 22:36 ` [PATCH 18/48] ARM: PL08x: consolidate physical channel release code Russell King - ARM Linux
2011-01-03 22:36 ` [PATCH 19/48] ARM: PL08x: ensure loops use cpu_relax() Russell King - ARM Linux
2011-01-03 22:36 ` [PATCH 20/48] ARM: PL08x: don't assume that the LLI pointer has the bus bit clear Russell King - ARM Linux
2011-01-03 22:37 ` [PATCH 21/48] ARM: PL08x: don't try to use llis_bus as a pointer Russell King - ARM Linux
2011-01-03 22:37 ` [PATCH 22/48] ARM: PL08x: use 'size_t' for lengths Russell King - ARM Linux
2011-01-03 22:37 ` [PATCH 23/48] ARM: PL08x: use 'u32' for LLI structure members, not dma_addr_t Russell King - ARM Linux
2011-01-03 22:38 ` [PATCH 24/48] ARM: PL08x: rename lli.next to lli.lli Russell King - ARM Linux
2011-01-03 22:38 ` [PATCH 25/48] ARM: PL08x: clean up LLI lookup Russell King - ARM Linux
2011-01-03 22:38 ` [PATCH 26/48] ARM: PL08x: combine functions to start DMA into one function Russell King - ARM Linux
2011-01-03 22:39 ` [PATCH 27/48] ARM: PL08x: avoid duplicating registers in txd and phychan structures Russell King - ARM Linux
2011-01-15  1:35   ` Dan Williams
2011-01-15  9:23     ` Russell King - ARM Linux
2011-01-16  7:17       ` Dan Williams
2011-01-16 12:20         ` Shinya Kuribayashi
2011-01-16 12:36         ` Russell King - ARM Linux
2011-01-16 19:56           ` Dan Williams
2011-01-16 19:59             ` Russell King - ARM Linux
2011-01-16 20:03               ` Dan Williams
2011-01-16 20:18                 ` Russell King - ARM Linux
2011-01-17  1:36                   ` Dan Williams
2011-01-17  8:50                     ` Russell King - ARM Linux
2011-01-17 19:43                       ` Dan Williams
2011-01-03 22:39 ` [PATCH 28/48] ARM: PL08x: move ccfg into txd structure Russell King - ARM Linux
2011-01-03 22:39 ` [PATCH 29/48] ARM: PL08x: assign ccfg DMA request signal in prep_phy_channel() Russell King - ARM Linux
2011-01-03 22:40 ` [PATCH 30/48] ARM: PL08x: move default cctl into txd structure Russell King - ARM Linux
2011-01-03 22:40 ` [PATCH 31/48] ARM: PL08x: move cctl increment and protection setup to prep_slave_sg Russell King - ARM Linux
2011-01-03 22:40 ` [PATCH 32/48] ARM: PL08x: move AHB master port selection into prep_* functions Russell King - ARM Linux
2011-01-03 22:41 ` [PATCH 33/48] ARM: PL08x: allow AHB master port selection to be configured Russell King - ARM Linux
2011-01-03 22:41 ` [PATCH 34/48] ARM: PL08x: move callback outside spinlock'd region Russell King - ARM Linux
2011-01-03 22:41 ` [PATCH 35/48] ARM: PL08x: make pl08x_fill_lli_for_desc() return void Russell King - ARM Linux
2011-01-03 22:42 ` [PATCH 36/48] ARM: PL08x: ensure pl08x_pre_boundary() works for any value of addr Russell King - ARM Linux
2011-01-03 22:42 ` [PATCH 37/48] ARM: PL08x: use min() to calculate target_len Russell King - ARM Linux
2011-01-03 22:42 ` [PATCH 38/48] ARM: PL08x: fix fill_bytes calculation Russell King - ARM Linux
2011-01-03 22:43 ` [PATCH 39/48] ARM: PL08x: don't manipulate txd->srcbus or txd->dstbus during LLI fill Russell King - ARM Linux
2011-01-03 22:43 ` [PATCH 40/48] ARM: PL08x: shrink srcbus/dstbus in txd structure Russell King - ARM Linux
2011-01-03 22:43 ` [PATCH 41/48] ARM: PL08x: store prep_* flags in async_tx structure Russell King - ARM Linux
2011-01-03 22:44 ` [PATCH 42/48] ARM: PL08x: implement unmapping of memcpy buffers Russell King - ARM Linux
2011-01-03 22:44 ` [PATCH 43/48] ARM: PL08x: rename 'desc_list' as 'pend_list' Russell King - ARM Linux
2011-01-03 22:44 ` [PATCH 44/48] ARM: PL08x: put txd's on the pending list in pl08x_tx_submit() Russell King - ARM Linux
2011-01-03 22:45 ` [PATCH 45/48] ARM: PL08x: introduce 'phychan_hold' to hold on to physical channels Russell King - ARM Linux
2011-01-03 22:45 ` [PATCH 46/48] ARM: PL08x: fix locking between prepare function and submit function Russell King - ARM Linux
2011-01-03 22:45 ` [PATCH 47/48] ARM: PL08x: allow dma_set_runtime_config() to return errors Russell King - ARM Linux
2011-01-03 22:46 ` [PATCH 48/48] ARM: PL08x: prevent dma_set_runtime_config() reconfiguring memcpy channels Russell King - ARM Linux

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).