Commit 7a73b135 authored by Peter Ujfalusi's avatar Peter Ujfalusi Committed by Vinod Koul

dmaengine: edma: Rename bitfields for slot and channel usage tracking

The names chosen for the bitfields were quite confusing and given no real
information on what they are used for...

edma_inuse -> slot_inuse: tracks the slot usage/availability
edma_unused -> channel_unused: tracks the channel usage/availability
Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
parent 4ab54f69
...@@ -227,16 +227,16 @@ struct edma_cc { ...@@ -227,16 +227,16 @@ struct edma_cc {
enum dma_event_q default_queue; enum dma_event_q default_queue;
bool unused_chan_list_done; bool unused_chan_list_done;
/* The edma_inuse bit for each PaRAM slot is clear unless the /* The slot_inuse bit for each PaRAM slot is clear unless the
* channel is in use ... by ARM or DSP, for QDMA, or whatever. * channel is in use ... by ARM or DSP, for QDMA, or whatever.
*/ */
unsigned long *edma_inuse; unsigned long *slot_inuse;
/* The edma_unused bit for each channel is clear unless /* The channel_unused bit for each channel is clear unless
* it is not being used on this platform. It uses a bit * it is not being used on this platform. It uses a bit
* of SOC-specific initialization code. * of SOC-specific initialization code.
*/ */
unsigned long *edma_unused; unsigned long *channel_unused;
struct dma_device dma_slave; struct dma_device dma_slave;
struct edma_chan *slave_chans; struct edma_chan *slave_chans;
...@@ -452,7 +452,7 @@ static int prepare_unused_channel_list(struct device *dev, void *data) ...@@ -452,7 +452,7 @@ static int prepare_unused_channel_list(struct device *dev, void *data)
continue; continue;
clear_bit(EDMA_CHAN_SLOT(dma_spec.args[0]), clear_bit(EDMA_CHAN_SLOT(dma_spec.args[0]),
ecc->edma_unused); ecc->channel_unused);
of_node_put(dma_spec.np); of_node_put(dma_spec.np);
} }
return 0; return 0;
...@@ -469,7 +469,7 @@ static int prepare_unused_channel_list(struct device *dev, void *data) ...@@ -469,7 +469,7 @@ static int prepare_unused_channel_list(struct device *dev, void *data)
dma_req = (int)res->start; dma_req = (int)res->start;
if (dma_req >= dma_req_min && dma_req < dma_req_max) if (dma_req >= dma_req_min && dma_req < dma_req_max)
clear_bit(EDMA_CHAN_SLOT(pdev->resource[i].start), clear_bit(EDMA_CHAN_SLOT(pdev->resource[i].start),
ecc->edma_unused); ecc->channel_unused);
} }
return 0; return 0;
...@@ -533,17 +533,17 @@ static int edma_alloc_slot(struct edma_cc *ecc, int slot) ...@@ -533,17 +533,17 @@ static int edma_alloc_slot(struct edma_cc *ecc, int slot)
if (slot < 0) { if (slot < 0) {
slot = ecc->num_channels; slot = ecc->num_channels;
for (;;) { for (;;) {
slot = find_next_zero_bit(ecc->edma_inuse, slot = find_next_zero_bit(ecc->slot_inuse,
ecc->num_slots, ecc->num_slots,
slot); slot);
if (slot == ecc->num_slots) if (slot == ecc->num_slots)
return -ENOMEM; return -ENOMEM;
if (!test_and_set_bit(slot, ecc->edma_inuse)) if (!test_and_set_bit(slot, ecc->slot_inuse))
break; break;
} }
} else if (slot < ecc->num_channels || slot >= ecc->num_slots) { } else if (slot < ecc->num_channels || slot >= ecc->num_slots) {
return -EINVAL; return -EINVAL;
} else if (test_and_set_bit(slot, ecc->edma_inuse)) { } else if (test_and_set_bit(slot, ecc->slot_inuse)) {
return -EBUSY; return -EBUSY;
} }
...@@ -559,7 +559,7 @@ static void edma_free_slot(struct edma_cc *ecc, unsigned slot) ...@@ -559,7 +559,7 @@ static void edma_free_slot(struct edma_cc *ecc, unsigned slot)
return; return;
edma_write_slot(ecc, slot, &dummy_paramset); edma_write_slot(ecc, slot, &dummy_paramset);
clear_bit(slot, ecc->edma_inuse); clear_bit(slot, ecc->slot_inuse);
} }
/** /**
...@@ -631,7 +631,7 @@ static int edma_start(struct edma_cc *ecc, unsigned channel) ...@@ -631,7 +631,7 @@ static int edma_start(struct edma_cc *ecc, unsigned channel)
unsigned int mask = BIT(channel & 0x1f); unsigned int mask = BIT(channel & 0x1f);
/* EDMA channels without event association */ /* EDMA channels without event association */
if (test_bit(channel, ecc->edma_unused)) { if (test_bit(channel, ecc->channel_unused)) {
dev_dbg(ecc->dev, "ESR%d %08x\n", j, dev_dbg(ecc->dev, "ESR%d %08x\n", j,
edma_shadow0_read_array(ecc, SH_ESR, j)); edma_shadow0_read_array(ecc, SH_ESR, j));
edma_shadow0_write_array(ecc, SH_ESR, j, mask); edma_shadow0_write_array(ecc, SH_ESR, j, mask);
...@@ -835,11 +835,11 @@ static int edma_alloc_channel(struct edma_cc *ecc, int channel, ...@@ -835,11 +835,11 @@ static int edma_alloc_channel(struct edma_cc *ecc, int channel,
if (channel < 0) { if (channel < 0) {
channel = 0; channel = 0;
for (;;) { for (;;) {
channel = find_next_bit(ecc->edma_unused, channel = find_next_bit(ecc->channel_unused,
ecc->num_channels, channel); ecc->num_channels, channel);
if (channel == ecc->num_channels) if (channel == ecc->num_channels)
break; break;
if (!test_and_set_bit(channel, ecc->edma_inuse)) { if (!test_and_set_bit(channel, ecc->slot_inuse)) {
done = 1; done = 1;
break; break;
} }
...@@ -849,7 +849,7 @@ static int edma_alloc_channel(struct edma_cc *ecc, int channel, ...@@ -849,7 +849,7 @@ static int edma_alloc_channel(struct edma_cc *ecc, int channel,
return -ENOMEM; return -ENOMEM;
} else if (channel >= ecc->num_channels) { } else if (channel >= ecc->num_channels) {
return -EINVAL; return -EINVAL;
} else if (test_and_set_bit(channel, ecc->edma_inuse)) { } else if (test_and_set_bit(channel, ecc->slot_inuse)) {
return -EBUSY; return -EBUSY;
} }
...@@ -895,7 +895,7 @@ static void edma_free_channel(struct edma_cc *ecc, unsigned channel) ...@@ -895,7 +895,7 @@ static void edma_free_channel(struct edma_cc *ecc, unsigned channel)
/* REVISIT should probably take out of shadow region 0 */ /* REVISIT should probably take out of shadow region 0 */
edma_write_slot(ecc, channel, &dummy_paramset); edma_write_slot(ecc, channel, &dummy_paramset);
clear_bit(channel, ecc->edma_inuse); clear_bit(channel, ecc->slot_inuse);
} }
/* Move channel to a specific event queue */ /* Move channel to a specific event queue */
...@@ -2137,14 +2137,15 @@ static int edma_probe(struct platform_device *pdev) ...@@ -2137,14 +2137,15 @@ static int edma_probe(struct platform_device *pdev)
if (!ecc->slave_chans) if (!ecc->slave_chans)
return -ENOMEM; return -ENOMEM;
ecc->edma_unused = devm_kcalloc(dev, BITS_TO_LONGS(ecc->num_channels), ecc->channel_unused = devm_kcalloc(dev,
BITS_TO_LONGS(ecc->num_channels),
sizeof(unsigned long), GFP_KERNEL); sizeof(unsigned long), GFP_KERNEL);
if (!ecc->edma_unused) if (!ecc->channel_unused)
return -ENOMEM; return -ENOMEM;
ecc->edma_inuse = devm_kcalloc(dev, BITS_TO_LONGS(ecc->num_slots), ecc->slot_inuse = devm_kcalloc(dev, BITS_TO_LONGS(ecc->num_slots),
sizeof(unsigned long), GFP_KERNEL); sizeof(unsigned long), GFP_KERNEL);
if (!ecc->edma_inuse) if (!ecc->slot_inuse)
return -ENOMEM; return -ENOMEM;
ecc->default_queue = info->default_queue; ecc->default_queue = info->default_queue;
...@@ -2153,7 +2154,7 @@ static int edma_probe(struct platform_device *pdev) ...@@ -2153,7 +2154,7 @@ static int edma_probe(struct platform_device *pdev)
edma_write_slot(ecc, i, &dummy_paramset); edma_write_slot(ecc, i, &dummy_paramset);
/* Mark all channels as unused */ /* Mark all channels as unused */
memset(ecc->edma_unused, 0xff, sizeof(ecc->edma_unused)); memset(ecc->channel_unused, 0xff, sizeof(ecc->channel_unused));
if (info->rsv) { if (info->rsv) {
/* Clear the reserved channels in unused list */ /* Clear the reserved channels in unused list */
...@@ -2162,7 +2163,7 @@ static int edma_probe(struct platform_device *pdev) ...@@ -2162,7 +2163,7 @@ static int edma_probe(struct platform_device *pdev)
for (i = 0; rsv_chans[i][0] != -1; i++) { for (i = 0; rsv_chans[i][0] != -1; i++) {
off = rsv_chans[i][0]; off = rsv_chans[i][0];
ln = rsv_chans[i][1]; ln = rsv_chans[i][1];
clear_bits(off, ln, ecc->edma_unused); clear_bits(off, ln, ecc->channel_unused);
} }
} }
...@@ -2172,7 +2173,7 @@ static int edma_probe(struct platform_device *pdev) ...@@ -2172,7 +2173,7 @@ static int edma_probe(struct platform_device *pdev)
for (i = 0; rsv_slots[i][0] != -1; i++) { for (i = 0; rsv_slots[i][0] != -1; i++) {
off = rsv_slots[i][0]; off = rsv_slots[i][0];
ln = rsv_slots[i][1]; ln = rsv_slots[i][1];
set_bits(off, ln, ecc->edma_inuse); set_bits(off, ln, ecc->slot_inuse);
} }
} }
} }
...@@ -2182,7 +2183,7 @@ static int edma_probe(struct platform_device *pdev) ...@@ -2182,7 +2183,7 @@ static int edma_probe(struct platform_device *pdev)
if (xbar_chans) { if (xbar_chans) {
for (i = 0; xbar_chans[i][1] != -1; i++) { for (i = 0; xbar_chans[i][1] != -1; i++) {
off = xbar_chans[i][1]; off = xbar_chans[i][1];
clear_bits(off, 1, ecc->edma_unused); clear_bits(off, 1, ecc->channel_unused);
} }
} }
...@@ -2301,7 +2302,7 @@ static int edma_pm_resume(struct device *dev) ...@@ -2301,7 +2302,7 @@ static int edma_pm_resume(struct device *dev)
edma_direct_dmach_to_param_mapping(ecc); edma_direct_dmach_to_param_mapping(ecc);
for (i = 0; i < ecc->num_channels; i++) { for (i = 0; i < ecc->num_channels; i++) {
if (test_bit(i, ecc->edma_inuse)) { if (test_bit(i, ecc->slot_inuse)) {
/* ensure access through shadow region 0 */ /* ensure access through shadow region 0 */
edma_or_array2(ecc, EDMA_DRAE, 0, i >> 5, edma_or_array2(ecc, EDMA_DRAE, 0, i >> 5,
BIT(i & 0x1f)); BIT(i & 0x1f));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment