linux/include/acpi
Lorenzo Pieralisi d760a1baf2 ACPI: Implement acpi_dma_configure
On DT based systems, the of_dma_configure() API implements DMA
configuration for a given device. On ACPI systems an API equivalent to
of_dma_configure() is missing which implies that it is currently not
possible to set-up DMA operations for devices through the ACPI generic
kernel layer.

This patch fills the gap by introducing acpi_dma_configure/deconfigure()
calls that for now are just wrappers around arch_setup_dma_ops() and
arch_teardown_dma_ops() and also updates ACPI and PCI core code to use
the newly introduced acpi_dma_configure/acpi_dma_deconfigure functions.

Since acpi_dma_configure() is used to configure DMA operations, the
function initializes the dma/coherent_dma masks to sane default values
if the current masks are uninitialized (also to keep the default values
consistent with DT systems) to make sure the device has a complete
default DMA set-up.

The DMA range size passed to arch_setup_dma_ops() is sized according
to the device coherent_dma_mask (starting at address 0x0), mirroring the
DT probing path behaviour when a dma-ranges property is not provided
for the device being probed; this changes the current arch_setup_dma_ops()
call parameters in the ACPI probing case, but since arch_setup_dma_ops()
is a NOP on all architectures but ARM/ARM64 this patch does not change
the current kernel behaviour on them.

Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com> [pci]
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Tomasz Nowicki <tn@semihalf.com>
Tested-by: Hanjun Guo <hanjun.guo@linaro.org>
Tested-by: Tomasz Nowicki <tn@semihalf.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Robin Murphy <robin.murphy@arm.com>
Cc: Tomasz Nowicki <tn@semihalf.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Signed-off-by: Will Deacon <will.deacon@arm.com>
2016-11-29 15:57:44 +00:00
..
platform ACPICA: OSL: Fix a regression that old GCC requires a workaround for strchr() 2016-08-13 03:16:39 +02:00
acbuffer.h ACPICA: Additional 2016 copyright changes 2016-01-15 22:18:09 +01:00
acconfig.h ACPICA: Simplify configuration for "Max Loops" system parameter 2016-08-13 03:09:32 +02:00
acexcep.h ACPICA: Additional 2016 copyright changes 2016-01-15 22:18:09 +01:00
acnames.h ACPICA: Additional 2016 copyright changes 2016-01-15 22:18:09 +01:00
acoutput.h ACPICA: Fix deconstification warnings (-Wcast-qual) with function traces. 2016-08-13 03:09:31 +02:00
acpi_bus.h ACPI: Implement acpi_dma_configure 2016-11-29 15:57:44 +00:00
acpi_drivers.h Revert "ACPI, PCI, IRQ: remove redundant code in acpi_irq_penalty_init()" 2016-07-02 01:38:34 +02:00
acpi_io.h treewide: replace obsolete _refok by __ref 2016-08-02 17:31:41 -04:00
acpi_lpat.h ACPI / LPAT: Common table processing functions 2015-01-29 21:02:10 +08:00
acpi_numa.h ACPI / NUMA: move bad_srat() and srat_disabled() to drivers/acpi/numa.c 2016-05-30 14:27:08 +02:00
acpi.h ACPICA: Additional 2016 copyright changes 2016-01-15 22:18:09 +01:00
acpiosxf.h ACPICA: Clib: Eliminate acpi_os_XXXFile()/acpi_log_error and link clibrary fxxx()/errno/perror() instead 2016-08-13 03:12:32 +02:00
acpixf.h ACPICA: Update version to 20160831 2016-09-10 02:43:03 +02:00
acrestyp.h ACPICA: ACPI 6.0, tools/iasl: Add support for new resource descriptors 2016-05-05 15:22:26 +02:00
actbl1.h ACPICA: ACPI 6.1: Add full support for this version of ACPI spec 2016-04-05 03:53:31 +02:00
actbl2.h ACPICA: Headers: Update DMAR table for October 2014 I/O spec 2016-04-05 03:53:31 +02:00
actbl3.h ACPICA: ACPI 6.1: Support for new PCCT subtable 2016-05-05 15:22:26 +02:00
actbl.h ACPICA: FADT support cleanup 2016-08-13 03:09:33 +02:00
actypes.h ACPICA: Tables: Add new table events indicating table installation/uninstallation 2016-09-10 02:43:01 +02:00
acuuid.h ACPICA: Additional 2016 copyright changes 2016-01-15 22:18:09 +01:00
apei.h acpi, apei, ghes: Factor out ioremap virtual memory for IRQ and NMI context. 2014-07-22 15:05:06 -07:00
button.h ACPI: Eliminate CONFIG_.*{, _MODULE} #ifdef in favor of IS_ENABLED() 2015-09-15 03:05:45 +02:00
cppc_acpi.h ACPI / CPPC: Add prefix cppc to cpudata structure name 2016-09-08 23:02:15 +02:00
ghes.h ACPICA: Restore error table definitions to reduce code differences between Linux and ACPICA upstream. 2014-06-16 22:33:50 +02:00
hed.h ACPI Hardware Error Device (PNP0C33) support 2010-05-19 22:40:24 -04:00
pcc.h mailbox: PCC: Fix return value of pcc_mbox_request_channel() 2016-10-17 14:26:49 +02:00
pdc_intel.h ACPI: Enable bit 11 in _PDC to advertise hw coord 2009-02-07 00:41:14 -05:00
processor.h ACPI/processor: Convert to hotplug state machine 2016-09-19 21:44:29 +02:00
reboot.h
video.h ACPI / video: Dummy acpi_video_register should return error code 2016-06-25 02:56:59 +02:00