aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/amba
diff options
context:
space:
mode:
authorRussell King - ARM Linux <linux@arm.linux.org.uk>2011-01-03 17:45:17 -0500
committerDan Williams <dan.j.williams@intel.com>2011-01-04 22:16:14 -0500
commit8087aacda040bdbf84940712d132ce80c30b9d5d (patch)
tree3a59272bc4555eae854a012940a36f80a8f4c1a5 /include/linux/amba
parent501e67e82dee68d0a594ec0549f3d6a2943c91f5 (diff)
ARM: PL08x: introduce 'phychan_hold' to hold on to physical channels
Introduce 'phychan_hold' to hold on to physical DMA channels while we're preparing a new descriptor for it. This will be incremented when we allocate a physical channel and set the MUX registers during the preparation of the TXD, and will only be decremented when the TXD is submitted. This prevents the physical channel being given up before the new TXD is placed on the queue. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'include/linux/amba')
-rw-r--r--include/linux/amba/pl08x.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/amba/pl08x.h b/include/linux/amba/pl08x.h
index 08a9024e2d2f..95b76ea1829f 100644
--- a/include/linux/amba/pl08x.h
+++ b/include/linux/amba/pl08x.h
@@ -151,6 +151,8 @@ enum pl08x_dma_chan_state {
151 * struct pl08x_dma_chan - this structure wraps a DMA ENGINE channel 151 * struct pl08x_dma_chan - this structure wraps a DMA ENGINE channel
152 * @chan: wrappped abstract channel 152 * @chan: wrappped abstract channel
153 * @phychan: the physical channel utilized by this channel, if there is one 153 * @phychan: the physical channel utilized by this channel, if there is one
154 * @phychan_hold: if non-zero, hold on to the physical channel even if we
155 * have no pending entries
154 * @tasklet: tasklet scheduled by the IRQ to handle actual work etc 156 * @tasklet: tasklet scheduled by the IRQ to handle actual work etc
155 * @name: name of channel 157 * @name: name of channel
156 * @cd: channel platform data 158 * @cd: channel platform data
@@ -173,6 +175,7 @@ enum pl08x_dma_chan_state {
173struct pl08x_dma_chan { 175struct pl08x_dma_chan {
174 struct dma_chan chan; 176 struct dma_chan chan;
175 struct pl08x_phy_chan *phychan; 177 struct pl08x_phy_chan *phychan;
178 int phychan_hold;
176 struct tasklet_struct tasklet; 179 struct tasklet_struct tasklet;
177 char *name; 180 char *name;
178 struct pl08x_channel_data *cd; 181 struct pl08x_channel_data *cd;