Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/*
2 * Arch specific extensions to struct device
3 *
4 * This file is released under the GPLv2
5 */
6#ifndef _ASM_POWERPC_DEVICE_H
7#define _ASM_POWERPC_DEVICE_H
8
9struct dma_map_ops;
10struct device_node;
11#ifdef CONFIG_PPC64
12struct pci_dn;
13struct iommu_table;
14#endif
15
16/*
17 * Arch extensions to struct device.
18 *
19 * When adding fields, consider macio_add_one_device in
20 * drivers/macintosh/macio_asic.c
21 */
22struct dev_archdata {
23 /* DMA operations on that device */
24 struct dma_map_ops *dma_ops;
25
26 /*
27 * These two used to be a union. However, with the hybrid ops we need
28 * both so here we store both a DMA offset for direct mappings and
29 * an iommu_table for remapped DMA.
30 */
31 dma_addr_t dma_offset;
32
33#ifdef CONFIG_PPC64
34 struct iommu_table *iommu_table_base;
35#endif
36
37#ifdef CONFIG_IOMMU_API
38 void *iommu_domain;
39#endif
40#ifdef CONFIG_SWIOTLB
41 dma_addr_t max_direct_dma_addr;
42#endif
43#ifdef CONFIG_PPC64
44 struct pci_dn *pci_data;
45#endif
46#ifdef CONFIG_EEH
47 struct eeh_dev *edev;
48#endif
49#ifdef CONFIG_FAIL_IOMMU
50 int fail_iommu;
51#endif
52#ifdef CONFIG_CXL_BASE
53 struct cxl_context *cxl_ctx;
54#endif
55};
56
57struct pdev_archdata {
58 u64 dma_mask;
59};
60
61#define ARCH_HAS_DMA_GET_REQUIRED_MASK
62
63#endif /* _ASM_POWERPC_DEVICE_H */