fsldma: simplify IRQ probing and handling
authorIra Snyder <iws@ovro.caltech.edu>
Wed, 6 Jan 2010 13:34:04 +0000 (13:34 +0000)
committerDan Williams <dan.j.williams@intel.com>
Tue, 2 Feb 2010 21:51:41 +0000 (14:51 -0700)
commitd3f620b2c4fecdc8e060b70e8d92d29fc01c6126
tree652ddf41247241ef3f82419a80e36bb5ee5dd810
parente7a29151de1bd52081f27f149b68074fac0323be
fsldma: simplify IRQ probing and handling

The IRQ probing is needlessly complex. All off the 83xx device trees in
arch/powerpc/boot/dts/ specify 5 interrupts per DMA controller: one for the
controller, and one for each channel. These interrupts are all attached to
the same IRQ line.

This causes an interesting situation if two channels interrupt at the same
time. The per-controller handler will handle the first channel, and the
per-channel handler will handle the remaining channels.

Instead of this mess, we fix the bug in the per-controller handler, and
make it handle all channels that generated an interrupt. When a
per-controller handler is specified in the device tree, we prefer to use
the shared handler instead of the per-channel handler.

The 85xx/86xx controllers do not have a per-controller interrupt, and
instead use a per-channel interrupt. This behavior has not been changed.

Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Documentation/powerpc/dts-bindings/fsl/dma.txt
drivers/dma/fsldma.c