mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
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:
commit
e193cd15ae
15 changed files with 228 additions and 89 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue