diff options
| author | Stephen Warren <swarren@nvidia.com> | 2013-12-11 18:38:41 -0500 |
|---|---|---|
| committer | Stephen Warren <swarren@nvidia.com> | 2013-12-11 18:38:41 -0500 |
| commit | 4e3ed8cd37d1f80b77f4f2fe27764b83cfcdcd01 (patch) | |
| tree | 2f72ff1065f9a4bd694864b690a5220417f16b9a /drivers/dma/dmaengine.c | |
| parent | 374b105797c3d4f29c685f3be535c35f5689b30e (diff) | |
| parent | 0ad7c00057dc1640647c1dc81ccbd009de17a767 (diff) | |
Merge branch 'for-3.14/deps-from-dma-defer_probe' into for-3.14/dmas-resets-rework
This merges git://git.infradead.org/users/vkoul/slave-dma.git topic/defer_probe
Diffstat (limited to 'drivers/dma/dmaengine.c')
| -rw-r--r-- | drivers/dma/dmaengine.c | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c index ea806bdc12ef..e17e9b22d85e 100644 --- a/drivers/dma/dmaengine.c +++ b/drivers/dma/dmaengine.c | |||
| @@ -540,6 +540,8 @@ EXPORT_SYMBOL_GPL(dma_get_slave_channel); | |||
| 540 | * @mask: capabilities that the channel must satisfy | 540 | * @mask: capabilities that the channel must satisfy |
| 541 | * @fn: optional callback to disposition available channels | 541 | * @fn: optional callback to disposition available channels |
| 542 | * @fn_param: opaque parameter to pass to dma_filter_fn | 542 | * @fn_param: opaque parameter to pass to dma_filter_fn |
| 543 | * | ||
| 544 | * Returns pointer to appropriate DMA channel on success or NULL. | ||
| 543 | */ | 545 | */ |
| 544 | struct dma_chan *__dma_request_channel(const dma_cap_mask_t *mask, | 546 | struct dma_chan *__dma_request_channel(const dma_cap_mask_t *mask, |
| 545 | dma_filter_fn fn, void *fn_param) | 547 | dma_filter_fn fn, void *fn_param) |
| @@ -591,18 +593,43 @@ EXPORT_SYMBOL_GPL(__dma_request_channel); | |||
| 591 | * dma_request_slave_channel - try to allocate an exclusive slave channel | 593 | * dma_request_slave_channel - try to allocate an exclusive slave channel |
| 592 | * @dev: pointer to client device structure | 594 | * @dev: pointer to client device structure |
| 593 | * @name: slave channel name | 595 | * @name: slave channel name |
| 596 | * | ||
| 597 | * Returns pointer to appropriate DMA channel on success or an error pointer. | ||
| 594 | */ | 598 | */ |
| 595 | struct dma_chan *dma_request_slave_channel(struct device *dev, const char *name) | 599 | struct dma_chan *dma_request_slave_channel_reason(struct device *dev, |
| 600 | const char *name) | ||
| 596 | { | 601 | { |
| 602 | struct dma_chan *chan; | ||
| 603 | |||
| 597 | /* If device-tree is present get slave info from here */ | 604 | /* If device-tree is present get slave info from here */ |
| 598 | if (dev->of_node) | 605 | if (dev->of_node) |
| 599 | return of_dma_request_slave_channel(dev->of_node, name); | 606 | return of_dma_request_slave_channel(dev->of_node, name); |
| 600 | 607 | ||
| 601 | /* If device was enumerated by ACPI get slave info from here */ | 608 | /* If device was enumerated by ACPI get slave info from here */ |
| 602 | if (ACPI_HANDLE(dev)) | 609 | if (ACPI_HANDLE(dev)) { |
| 603 | return acpi_dma_request_slave_chan_by_name(dev, name); | 610 | chan = acpi_dma_request_slave_chan_by_name(dev, name); |
| 611 | if (chan) | ||
| 612 | return chan; | ||
| 613 | } | ||
| 604 | 614 | ||
| 605 | return NULL; | 615 | return ERR_PTR(-ENODEV); |
| 616 | } | ||
| 617 | EXPORT_SYMBOL_GPL(dma_request_slave_channel_reason); | ||
| 618 | |||
| 619 | /** | ||
| 620 | * dma_request_slave_channel - try to allocate an exclusive slave channel | ||
| 621 | * @dev: pointer to client device structure | ||
| 622 | * @name: slave channel name | ||
| 623 | * | ||
| 624 | * Returns pointer to appropriate DMA channel on success or NULL. | ||
| 625 | */ | ||
| 626 | struct dma_chan *dma_request_slave_channel(struct device *dev, | ||
| 627 | const char *name) | ||
| 628 | { | ||
| 629 | struct dma_chan *ch = dma_request_slave_channel_reason(dev, name); | ||
| 630 | if (IS_ERR(ch)) | ||
| 631 | return NULL; | ||
| 632 | return ch; | ||
| 606 | } | 633 | } |
| 607 | EXPORT_SYMBOL_GPL(dma_request_slave_channel); | 634 | EXPORT_SYMBOL_GPL(dma_request_slave_channel); |
| 608 | 635 | ||
