forked from luck/tmp_suning_uos_patched
20d330645c
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>
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*/
|