.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-or-later |
---|
1 | 2 | /* |
---|
2 | 3 | * Freescale MPC85xx, MPC83xx DMA Engine support |
---|
3 | 4 | * |
---|
.. | .. |
---|
16 | 17 | * command for PCI read operations, instead of using the default PCI Read Line |
---|
17 | 18 | * command. Please be aware that this setting may result in read pre-fetching |
---|
18 | 19 | * on some platforms. |
---|
19 | | - * |
---|
20 | | - * This is free software; you can redistribute it and/or modify |
---|
21 | | - * it under the terms of the GNU General Public License as published by |
---|
22 | | - * the Free Software Foundation; either version 2 of the License, or |
---|
23 | | - * (at your option) any later version. |
---|
24 | | - * |
---|
25 | 20 | */ |
---|
26 | 21 | |
---|
27 | 22 | #include <linux/init.h> |
---|
.. | .. |
---|
53 | 48 | |
---|
54 | 49 | static void set_sr(struct fsldma_chan *chan, u32 val) |
---|
55 | 50 | { |
---|
56 | | - DMA_OUT(chan, &chan->regs->sr, val, 32); |
---|
| 51 | + FSL_DMA_OUT(chan, &chan->regs->sr, val, 32); |
---|
57 | 52 | } |
---|
58 | 53 | |
---|
59 | 54 | static u32 get_sr(struct fsldma_chan *chan) |
---|
60 | 55 | { |
---|
61 | | - return DMA_IN(chan, &chan->regs->sr, 32); |
---|
| 56 | + return FSL_DMA_IN(chan, &chan->regs->sr, 32); |
---|
62 | 57 | } |
---|
63 | 58 | |
---|
64 | 59 | static void set_mr(struct fsldma_chan *chan, u32 val) |
---|
65 | 60 | { |
---|
66 | | - DMA_OUT(chan, &chan->regs->mr, val, 32); |
---|
| 61 | + FSL_DMA_OUT(chan, &chan->regs->mr, val, 32); |
---|
67 | 62 | } |
---|
68 | 63 | |
---|
69 | 64 | static u32 get_mr(struct fsldma_chan *chan) |
---|
70 | 65 | { |
---|
71 | | - return DMA_IN(chan, &chan->regs->mr, 32); |
---|
| 66 | + return FSL_DMA_IN(chan, &chan->regs->mr, 32); |
---|
72 | 67 | } |
---|
73 | 68 | |
---|
74 | 69 | static void set_cdar(struct fsldma_chan *chan, dma_addr_t addr) |
---|
75 | 70 | { |
---|
76 | | - DMA_OUT(chan, &chan->regs->cdar, addr | FSL_DMA_SNEN, 64); |
---|
| 71 | + FSL_DMA_OUT(chan, &chan->regs->cdar, addr | FSL_DMA_SNEN, 64); |
---|
77 | 72 | } |
---|
78 | 73 | |
---|
79 | 74 | static dma_addr_t get_cdar(struct fsldma_chan *chan) |
---|
80 | 75 | { |
---|
81 | | - return DMA_IN(chan, &chan->regs->cdar, 64) & ~FSL_DMA_SNEN; |
---|
| 76 | + return FSL_DMA_IN(chan, &chan->regs->cdar, 64) & ~FSL_DMA_SNEN; |
---|
82 | 77 | } |
---|
83 | 78 | |
---|
84 | 79 | static void set_bcr(struct fsldma_chan *chan, u32 val) |
---|
85 | 80 | { |
---|
86 | | - DMA_OUT(chan, &chan->regs->bcr, val, 32); |
---|
| 81 | + FSL_DMA_OUT(chan, &chan->regs->bcr, val, 32); |
---|
87 | 82 | } |
---|
88 | 83 | |
---|
89 | 84 | static u32 get_bcr(struct fsldma_chan *chan) |
---|
90 | 85 | { |
---|
91 | | - return DMA_IN(chan, &chan->regs->bcr, 32); |
---|
| 86 | + return FSL_DMA_IN(chan, &chan->regs->bcr, 32); |
---|
92 | 87 | } |
---|
93 | 88 | |
---|
94 | 89 | /* |
---|
.. | .. |
---|
981 | 976 | return IRQ_HANDLED; |
---|
982 | 977 | } |
---|
983 | 978 | |
---|
984 | | -static void dma_do_tasklet(unsigned long data) |
---|
| 979 | +static void dma_do_tasklet(struct tasklet_struct *t) |
---|
985 | 980 | { |
---|
986 | | - struct fsldma_chan *chan = (struct fsldma_chan *)data; |
---|
| 981 | + struct fsldma_chan *chan = from_tasklet(chan, t, tasklet); |
---|
987 | 982 | |
---|
988 | 983 | chan_dbg(chan, "tasklet entry\n"); |
---|
989 | 984 | |
---|
990 | | - spin_lock_bh(&chan->desc_lock); |
---|
| 985 | + spin_lock(&chan->desc_lock); |
---|
991 | 986 | |
---|
992 | 987 | /* the hardware is now idle and ready for more */ |
---|
993 | 988 | chan->idle = true; |
---|
.. | .. |
---|
995 | 990 | /* Run all cleanup for descriptors which have been completed */ |
---|
996 | 991 | fsldma_cleanup_descriptors(chan); |
---|
997 | 992 | |
---|
998 | | - spin_unlock_bh(&chan->desc_lock); |
---|
| 993 | + spin_unlock(&chan->desc_lock); |
---|
999 | 994 | |
---|
1000 | 995 | chan_dbg(chan, "tasklet exit\n"); |
---|
1001 | 996 | } |
---|
.. | .. |
---|
1156 | 1151 | } |
---|
1157 | 1152 | |
---|
1158 | 1153 | fdev->chan[chan->id] = chan; |
---|
1159 | | - tasklet_init(&chan->tasklet, dma_do_tasklet, (unsigned long)chan); |
---|
| 1154 | + tasklet_setup(&chan->tasklet, dma_do_tasklet); |
---|
1160 | 1155 | snprintf(chan->name, sizeof(chan->name), "chan%d", chan->id); |
---|
1161 | 1156 | |
---|
1162 | 1157 | /* Initialize the channel */ |
---|
.. | .. |
---|
1168 | 1163 | switch (chan->feature & FSL_DMA_IP_MASK) { |
---|
1169 | 1164 | case FSL_DMA_IP_85XX: |
---|
1170 | 1165 | chan->toggle_ext_pause = fsl_chan_toggle_ext_pause; |
---|
| 1166 | + fallthrough; |
---|
1171 | 1167 | case FSL_DMA_IP_83XX: |
---|
1172 | 1168 | chan->toggle_ext_start = fsl_chan_toggle_ext_start; |
---|
1173 | 1169 | chan->set_src_loop_size = fsl_chan_set_src_loop_size; |
---|