linux/arch/powerpc/include/asm/device.h
<<
>>
Prefs
   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 */
  64