Merge branch 'acpi-cca'

* acpi-cca:
  ufs: fix TRUE and FALSE re-define build error
  megaraid_sas: fix TRUE and FALSE re-define build error
  amd-xgbe: Unify coherency checking logic with device_dma_is_coherent()
  crypto: ccp - Unify coherency checking logic with device_dma_is_coherent()
  device property: Introduces device_dma_is_coherent()
  arm64 : Introduce support for ACPI _CCA object
  ACPI / scan: Parse _CCA and setup device coherency
This commit is contained in:
Rafael J. Wysocki 2015-06-19 01:17:35 +02:00
commit e193cd15ae
15 changed files with 228 additions and 89 deletions

View file

@ -209,7 +209,9 @@ struct acpi_device_flags {
u32 hotplug_notify:1;
u32 is_dock_station:1;
u32 of_compatible_ok:1;
u32 reserved:22;
u32 coherent_dma:1;
u32 cca_seen:1;
u32 reserved:20;
};
/* File System */
@ -380,6 +382,39 @@ struct acpi_device {
void (*remove)(struct acpi_device *);
};
static inline bool acpi_check_dma(struct acpi_device *adev, bool *coherent)
{
bool ret = false;
if (!adev)
return ret;
/**
* Currently, we only support _CCA=1 (i.e. coherent_dma=1)
* This should be equivalent to specifyig dma-coherent for
* a device in OF.
*
* For the case when _CCA=0 (i.e. coherent_dma=0 && cca_seen=1),
* There are two cases:
* case 1. Do not support and disable DMA.
* case 2. Support but rely on arch-specific cache maintenance for
* non-coherence DMA operations.
* Currently, we implement case 1 above.
*
* For the case when _CCA is missing (i.e. cca_seen=0) and
* platform specifies ACPI_CCA_REQUIRED, we do not support DMA,
* and fallback to arch-specific default handling.
*
* See acpi_init_coherency() for more info.
*/
if (adev->flags.coherent_dma) {
ret = true;
if (coherent)
*coherent = adev->flags.coherent_dma;
}
return ret;
}
static inline bool is_acpi_node(struct fwnode_handle *fwnode)
{
return fwnode && fwnode->type == FWNODE_ACPI;