18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Arch specific extensions to struct device
48c2ecf20Sopenharmony_ci */
58c2ecf20Sopenharmony_ci#ifndef _ASM_POWERPC_DEVICE_H
68c2ecf20Sopenharmony_ci#define _ASM_POWERPC_DEVICE_H
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_cistruct device_node;
98c2ecf20Sopenharmony_ci#ifdef CONFIG_PPC64
108c2ecf20Sopenharmony_cistruct pci_dn;
118c2ecf20Sopenharmony_cistruct iommu_table;
128c2ecf20Sopenharmony_ci#endif
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci/*
158c2ecf20Sopenharmony_ci * Arch extensions to struct device.
168c2ecf20Sopenharmony_ci *
178c2ecf20Sopenharmony_ci * When adding fields, consider macio_add_one_device in
188c2ecf20Sopenharmony_ci * drivers/macintosh/macio_asic.c
198c2ecf20Sopenharmony_ci */
208c2ecf20Sopenharmony_cistruct dev_archdata {
218c2ecf20Sopenharmony_ci	/*
228c2ecf20Sopenharmony_ci	 * These two used to be a union. However, with the hybrid ops we need
238c2ecf20Sopenharmony_ci	 * both so here we store both a DMA offset for direct mappings and
248c2ecf20Sopenharmony_ci	 * an iommu_table for remapped DMA.
258c2ecf20Sopenharmony_ci	 */
268c2ecf20Sopenharmony_ci	dma_addr_t		dma_offset;
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci#ifdef CONFIG_PPC64
298c2ecf20Sopenharmony_ci	struct iommu_table	*iommu_table_base;
308c2ecf20Sopenharmony_ci#endif
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci#ifdef CONFIG_PPC64
338c2ecf20Sopenharmony_ci	struct pci_dn		*pci_data;
348c2ecf20Sopenharmony_ci#endif
358c2ecf20Sopenharmony_ci#ifdef CONFIG_EEH
368c2ecf20Sopenharmony_ci	struct eeh_dev		*edev;
378c2ecf20Sopenharmony_ci#endif
388c2ecf20Sopenharmony_ci#ifdef CONFIG_FAIL_IOMMU
398c2ecf20Sopenharmony_ci	int fail_iommu;
408c2ecf20Sopenharmony_ci#endif
418c2ecf20Sopenharmony_ci#ifdef CONFIG_CXL_BASE
428c2ecf20Sopenharmony_ci	struct cxl_context	*cxl_ctx;
438c2ecf20Sopenharmony_ci#endif
448c2ecf20Sopenharmony_ci#ifdef CONFIG_PCI_IOV
458c2ecf20Sopenharmony_ci	void *iov_data;
468c2ecf20Sopenharmony_ci#endif
478c2ecf20Sopenharmony_ci};
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_cistruct pdev_archdata {
508c2ecf20Sopenharmony_ci	u64 dma_mask;
518c2ecf20Sopenharmony_ci};
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci#endif /* _ASM_POWERPC_DEVICE_H */
54