diff options
Diffstat (limited to 'drivers/dma/dmaengine.c')
-rw-r--r-- | drivers/dma/dmaengine.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c index b2728d6ba2fd..93f7992bee5c 100644 --- a/drivers/dma/dmaengine.c +++ b/drivers/dma/dmaengine.c | |||
@@ -62,6 +62,8 @@ | |||
62 | #include <linux/rculist.h> | 62 | #include <linux/rculist.h> |
63 | #include <linux/idr.h> | 63 | #include <linux/idr.h> |
64 | #include <linux/slab.h> | 64 | #include <linux/slab.h> |
65 | #include <linux/acpi.h> | ||
66 | #include <linux/acpi_dma.h> | ||
65 | #include <linux/of_dma.h> | 67 | #include <linux/of_dma.h> |
66 | 68 | ||
67 | static DEFINE_MUTEX(dma_list_mutex); | 69 | static DEFINE_MUTEX(dma_list_mutex); |
@@ -174,7 +176,8 @@ static struct class dma_devclass = { | |||
174 | #define dma_device_satisfies_mask(device, mask) \ | 176 | #define dma_device_satisfies_mask(device, mask) \ |
175 | __dma_device_satisfies_mask((device), &(mask)) | 177 | __dma_device_satisfies_mask((device), &(mask)) |
176 | static int | 178 | static int |
177 | __dma_device_satisfies_mask(struct dma_device *device, dma_cap_mask_t *want) | 179 | __dma_device_satisfies_mask(struct dma_device *device, |
180 | const dma_cap_mask_t *want) | ||
178 | { | 181 | { |
179 | dma_cap_mask_t has; | 182 | dma_cap_mask_t has; |
180 | 183 | ||
@@ -463,7 +466,8 @@ static void dma_channel_rebalance(void) | |||
463 | } | 466 | } |
464 | } | 467 | } |
465 | 468 | ||
466 | static struct dma_chan *private_candidate(dma_cap_mask_t *mask, struct dma_device *dev, | 469 | static struct dma_chan *private_candidate(const dma_cap_mask_t *mask, |
470 | struct dma_device *dev, | ||
467 | dma_filter_fn fn, void *fn_param) | 471 | dma_filter_fn fn, void *fn_param) |
468 | { | 472 | { |
469 | struct dma_chan *chan; | 473 | struct dma_chan *chan; |
@@ -505,7 +509,8 @@ static struct dma_chan *private_candidate(dma_cap_mask_t *mask, struct dma_devic | |||
505 | * @fn: optional callback to disposition available channels | 509 | * @fn: optional callback to disposition available channels |
506 | * @fn_param: opaque parameter to pass to dma_filter_fn | 510 | * @fn_param: opaque parameter to pass to dma_filter_fn |
507 | */ | 511 | */ |
508 | struct dma_chan *__dma_request_channel(dma_cap_mask_t *mask, dma_filter_fn fn, void *fn_param) | 512 | struct dma_chan *__dma_request_channel(const dma_cap_mask_t *mask, |
513 | dma_filter_fn fn, void *fn_param) | ||
509 | { | 514 | { |
510 | struct dma_device *device, *_d; | 515 | struct dma_device *device, *_d; |
511 | struct dma_chan *chan = NULL; | 516 | struct dma_chan *chan = NULL; |
@@ -555,12 +560,16 @@ EXPORT_SYMBOL_GPL(__dma_request_channel); | |||
555 | * @dev: pointer to client device structure | 560 | * @dev: pointer to client device structure |
556 | * @name: slave channel name | 561 | * @name: slave channel name |
557 | */ | 562 | */ |
558 | struct dma_chan *dma_request_slave_channel(struct device *dev, char *name) | 563 | struct dma_chan *dma_request_slave_channel(struct device *dev, const char *name) |
559 | { | 564 | { |
560 | /* If device-tree is present get slave info from here */ | 565 | /* If device-tree is present get slave info from here */ |
561 | if (dev->of_node) | 566 | if (dev->of_node) |
562 | return of_dma_request_slave_channel(dev->of_node, name); | 567 | return of_dma_request_slave_channel(dev->of_node, name); |
563 | 568 | ||
569 | /* If device was enumerated by ACPI get slave info from here */ | ||
570 | if (ACPI_HANDLE(dev)) | ||
571 | return acpi_dma_request_slave_chan_by_name(dev, name); | ||
572 | |||
564 | return NULL; | 573 | return NULL; |
565 | } | 574 | } |
566 | EXPORT_SYMBOL_GPL(dma_request_slave_channel); | 575 | EXPORT_SYMBOL_GPL(dma_request_slave_channel); |