diff options
Diffstat (limited to 'drivers/base/platform.c')
-rw-r--r-- | drivers/base/platform.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 9460139d9b02..dff82a3c2caa 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c | |||
@@ -1129,6 +1129,22 @@ int platform_pm_restore(struct device *dev) | |||
1129 | 1129 | ||
1130 | #endif /* CONFIG_HIBERNATE_CALLBACKS */ | 1130 | #endif /* CONFIG_HIBERNATE_CALLBACKS */ |
1131 | 1131 | ||
1132 | int platform_dma_configure(struct device *dev) | ||
1133 | { | ||
1134 | enum dev_dma_attr attr; | ||
1135 | int ret = 0; | ||
1136 | |||
1137 | if (dev->of_node) { | ||
1138 | ret = of_dma_configure(dev, dev->of_node, true); | ||
1139 | } else if (has_acpi_companion(dev)) { | ||
1140 | attr = acpi_get_dma_attr(to_acpi_device_node(dev->fwnode)); | ||
1141 | if (attr != DEV_DMA_NOT_SUPPORTED) | ||
1142 | ret = acpi_dma_configure(dev, attr); | ||
1143 | } | ||
1144 | |||
1145 | return ret; | ||
1146 | } | ||
1147 | |||
1132 | static const struct dev_pm_ops platform_dev_pm_ops = { | 1148 | static const struct dev_pm_ops platform_dev_pm_ops = { |
1133 | .runtime_suspend = pm_generic_runtime_suspend, | 1149 | .runtime_suspend = pm_generic_runtime_suspend, |
1134 | .runtime_resume = pm_generic_runtime_resume, | 1150 | .runtime_resume = pm_generic_runtime_resume, |
@@ -1140,8 +1156,8 @@ struct bus_type platform_bus_type = { | |||
1140 | .dev_groups = platform_dev_groups, | 1156 | .dev_groups = platform_dev_groups, |
1141 | .match = platform_match, | 1157 | .match = platform_match, |
1142 | .uevent = platform_uevent, | 1158 | .uevent = platform_uevent, |
1159 | .dma_configure = platform_dma_configure, | ||
1143 | .pm = &platform_dev_pm_ops, | 1160 | .pm = &platform_dev_pm_ops, |
1144 | .force_dma = true, | ||
1145 | }; | 1161 | }; |
1146 | EXPORT_SYMBOL_GPL(platform_bus_type); | 1162 | EXPORT_SYMBOL_GPL(platform_bus_type); |
1147 | 1163 | ||