diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2013-03-04 04:09:28 -0500 |
---|---|---|
committer | Vinod Koul <vinod.koul@intel.com> | 2013-04-15 00:21:17 -0400 |
commit | 838cc704ce5c8ab2a6d64d1324e37e040fcae3d8 (patch) | |
tree | 0bf417659f9fb40c574cda87c2d1000494acaee4 /drivers | |
parent | e03e93a976d0f0da63f02fd3384c4b99cac8d715 (diff) |
dmatest: move dmatest_channels and nr_channels to dmatest_info
We don't need to have them global and later we would like to protect access to
them as well.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/dma/dmatest.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c index 7f9e3cc9361b..475a21ad6657 100644 --- a/drivers/dma/dmatest.c +++ b/drivers/dma/dmatest.c | |||
@@ -109,6 +109,7 @@ struct dmatest_chan { | |||
109 | * @timeout: transfer timeout in msec, -1 for infinite timeout | 109 | * @timeout: transfer timeout in msec, -1 for infinite timeout |
110 | */ | 110 | */ |
111 | struct dmatest_info { | 111 | struct dmatest_info { |
112 | /* Test parameters */ | ||
112 | unsigned int buf_size; | 113 | unsigned int buf_size; |
113 | char channel[20]; | 114 | char channel[20]; |
114 | char device[20]; | 115 | char device[20]; |
@@ -118,17 +119,14 @@ struct dmatest_info { | |||
118 | unsigned int xor_sources; | 119 | unsigned int xor_sources; |
119 | unsigned int pq_sources; | 120 | unsigned int pq_sources; |
120 | int timeout; | 121 | int timeout; |
122 | |||
123 | /* Internal state */ | ||
124 | struct list_head channels; | ||
125 | unsigned int nr_channels; | ||
121 | }; | 126 | }; |
122 | 127 | ||
123 | static struct dmatest_info test_info; | 128 | static struct dmatest_info test_info; |
124 | 129 | ||
125 | /* | ||
126 | * These are protected by dma_list_mutex since they're only used by | ||
127 | * the DMA filter function callback | ||
128 | */ | ||
129 | static LIST_HEAD(dmatest_channels); | ||
130 | static unsigned int nr_channels; | ||
131 | |||
132 | static bool dmatest_match_channel(struct dmatest_info *info, | 130 | static bool dmatest_match_channel(struct dmatest_info *info, |
133 | struct dma_chan *chan) | 131 | struct dma_chan *chan) |
134 | { | 132 | { |
@@ -690,8 +688,8 @@ static int dmatest_add_channel(struct dmatest_info *info, | |||
690 | pr_info("dmatest: Started %u threads using %s\n", | 688 | pr_info("dmatest: Started %u threads using %s\n", |
691 | thread_count, dma_chan_name(chan)); | 689 | thread_count, dma_chan_name(chan)); |
692 | 690 | ||
693 | list_add_tail(&dtc->node, &dmatest_channels); | 691 | list_add_tail(&dtc->node, &info->channels); |
694 | nr_channels++; | 692 | info->nr_channels++; |
695 | 693 | ||
696 | return 0; | 694 | return 0; |
697 | } | 695 | } |
@@ -725,7 +723,8 @@ static int run_threaded_test(struct dmatest_info *info) | |||
725 | } | 723 | } |
726 | } else | 724 | } else |
727 | break; /* no more channels available */ | 725 | break; /* no more channels available */ |
728 | if (info->max_channels && nr_channels >= info->max_channels) | 726 | if (info->max_channels && |
727 | info->nr_channels >= info->max_channels) | ||
729 | break; /* we have all we need */ | 728 | break; /* we have all we need */ |
730 | } | 729 | } |
731 | return err; | 730 | return err; |
@@ -736,14 +735,15 @@ static void stop_threaded_test(struct dmatest_info *info) | |||
736 | struct dmatest_chan *dtc, *_dtc; | 735 | struct dmatest_chan *dtc, *_dtc; |
737 | struct dma_chan *chan; | 736 | struct dma_chan *chan; |
738 | 737 | ||
739 | list_for_each_entry_safe(dtc, _dtc, &dmatest_channels, node) { | 738 | list_for_each_entry_safe(dtc, _dtc, &info->channels, node) { |
740 | list_del(&dtc->node); | 739 | list_del(&dtc->node); |
741 | chan = dtc->chan; | 740 | chan = dtc->chan; |
742 | dmatest_cleanup_channel(dtc); | 741 | dmatest_cleanup_channel(dtc); |
743 | pr_debug("dmatest: dropped channel %s\n", | 742 | pr_debug("dmatest: dropped channel %s\n", dma_chan_name(chan)); |
744 | dma_chan_name(chan)); | ||
745 | dma_release_channel(chan); | 743 | dma_release_channel(chan); |
746 | } | 744 | } |
745 | |||
746 | info->nr_channels = 0; | ||
747 | } | 747 | } |
748 | 748 | ||
749 | static int __init dmatest_init(void) | 749 | static int __init dmatest_init(void) |
@@ -752,6 +752,9 @@ static int __init dmatest_init(void) | |||
752 | 752 | ||
753 | memset(info, 0, sizeof(*info)); | 753 | memset(info, 0, sizeof(*info)); |
754 | 754 | ||
755 | INIT_LIST_HEAD(&info->channels); | ||
756 | |||
757 | /* Set default parameters */ | ||
755 | info->buf_size = test_buf_size; | 758 | info->buf_size = test_buf_size; |
756 | strlcpy(info->channel, test_channel, sizeof(info->channel)); | 759 | strlcpy(info->channel, test_channel, sizeof(info->channel)); |
757 | strlcpy(info->device, test_device, sizeof(info->device)); | 760 | strlcpy(info->device, test_device, sizeof(info->device)); |