mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
dmaengine: dmatest: Use dmaengine_get_dma_device
By using the dmaengine_get_dma_device() to get the device for dma_api use, the dmatest can support per channel coherency if it is supported by the DMA controller. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Link: https://lore.kernel.org/r/20201208090440.31792-11-peter.ujfalusi@ti.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
committed by
Vinod Koul
parent
f082c6df97
commit
adc0f941f9
@@ -573,6 +573,7 @@ static int dmatest_func(void *data)
|
|||||||
struct dmatest_params *params;
|
struct dmatest_params *params;
|
||||||
struct dma_chan *chan;
|
struct dma_chan *chan;
|
||||||
struct dma_device *dev;
|
struct dma_device *dev;
|
||||||
|
struct device *dma_dev;
|
||||||
unsigned int error_count;
|
unsigned int error_count;
|
||||||
unsigned int failed_tests = 0;
|
unsigned int failed_tests = 0;
|
||||||
unsigned int total_tests = 0;
|
unsigned int total_tests = 0;
|
||||||
@@ -606,6 +607,8 @@ static int dmatest_func(void *data)
|
|||||||
params = &info->params;
|
params = &info->params;
|
||||||
chan = thread->chan;
|
chan = thread->chan;
|
||||||
dev = chan->device;
|
dev = chan->device;
|
||||||
|
dma_dev = dmaengine_get_dma_device(chan);
|
||||||
|
|
||||||
src = &thread->src;
|
src = &thread->src;
|
||||||
dst = &thread->dst;
|
dst = &thread->dst;
|
||||||
if (thread->type == DMA_MEMCPY) {
|
if (thread->type == DMA_MEMCPY) {
|
||||||
@@ -730,7 +733,7 @@ static int dmatest_func(void *data)
|
|||||||
filltime = ktime_add(filltime, diff);
|
filltime = ktime_add(filltime, diff);
|
||||||
}
|
}
|
||||||
|
|
||||||
um = dmaengine_get_unmap_data(dev->dev, src->cnt + dst->cnt,
|
um = dmaengine_get_unmap_data(dma_dev, src->cnt + dst->cnt,
|
||||||
GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
if (!um) {
|
if (!um) {
|
||||||
failed_tests++;
|
failed_tests++;
|
||||||
@@ -745,10 +748,10 @@ static int dmatest_func(void *data)
|
|||||||
struct page *pg = virt_to_page(buf);
|
struct page *pg = virt_to_page(buf);
|
||||||
unsigned long pg_off = offset_in_page(buf);
|
unsigned long pg_off = offset_in_page(buf);
|
||||||
|
|
||||||
um->addr[i] = dma_map_page(dev->dev, pg, pg_off,
|
um->addr[i] = dma_map_page(dma_dev, pg, pg_off,
|
||||||
um->len, DMA_TO_DEVICE);
|
um->len, DMA_TO_DEVICE);
|
||||||
srcs[i] = um->addr[i] + src->off;
|
srcs[i] = um->addr[i] + src->off;
|
||||||
ret = dma_mapping_error(dev->dev, um->addr[i]);
|
ret = dma_mapping_error(dma_dev, um->addr[i]);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
result("src mapping error", total_tests,
|
result("src mapping error", total_tests,
|
||||||
src->off, dst->off, len, ret);
|
src->off, dst->off, len, ret);
|
||||||
@@ -763,9 +766,9 @@ static int dmatest_func(void *data)
|
|||||||
struct page *pg = virt_to_page(buf);
|
struct page *pg = virt_to_page(buf);
|
||||||
unsigned long pg_off = offset_in_page(buf);
|
unsigned long pg_off = offset_in_page(buf);
|
||||||
|
|
||||||
dsts[i] = dma_map_page(dev->dev, pg, pg_off, um->len,
|
dsts[i] = dma_map_page(dma_dev, pg, pg_off, um->len,
|
||||||
DMA_BIDIRECTIONAL);
|
DMA_BIDIRECTIONAL);
|
||||||
ret = dma_mapping_error(dev->dev, dsts[i]);
|
ret = dma_mapping_error(dma_dev, dsts[i]);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
result("dst mapping error", total_tests,
|
result("dst mapping error", total_tests,
|
||||||
src->off, dst->off, len, ret);
|
src->off, dst->off, len, ret);
|
||||||
|
Reference in New Issue
Block a user