mirror of
https://github.com/hardkernel/linux.git
synced 2026-04-10 23:18:10 +09:00
On some MIPS systems, a subset of devices may have DMA coherent with CPU
caches. For example in systems including a MIPS I/O Coherence Unit
(IOCU), some devices may be connected to that IOCU whilst others are
not.
Prior to this patch, we have a plat_device_is_coherent() function but no
implementation which does anything besides return a global true or
false, optionally chosen at runtime. For devices such as those described
above this is insufficient.
Fix this by tracking DMA coherence on a per-device basis with a
dma_coherent field in struct dev_archdata. Setting this from
arch_setup_dma_ops() takes care of devices which set the dma-coherent
property via device tree, and any PCI devices beneath a bridge described
in DT, automatically.
Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/14349/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
(cherry picked from commit 20d330645c)
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
25 lines
436 B
C
25 lines
436 B
C
/*
|
|
* Arch specific extensions to struct device
|
|
*
|
|
* This file is released under the GPLv2
|
|
*/
|
|
#ifndef _ASM_MIPS_DEVICE_H
|
|
#define _ASM_MIPS_DEVICE_H
|
|
|
|
struct dma_map_ops;
|
|
|
|
struct dev_archdata {
|
|
/* DMA operations on that device */
|
|
struct dma_map_ops *dma_ops;
|
|
|
|
#ifdef CONFIG_DMA_PERDEV_COHERENT
|
|
/* Non-zero if DMA is coherent with CPU caches */
|
|
bool dma_coherent;
|
|
#endif
|
|
};
|
|
|
|
struct pdev_archdata {
|
|
};
|
|
|
|
#endif /* _ASM_MIPS_DEVICE_H*/
|