root/include/linux/acpi_iort.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. acpi_iort_init
  2. iort_msi_map_rid
  3. iort_get_device_domain
  4. acpi_configure_pmsi_domain
  5. iort_dma_setup
  6. iort_iommu_configure
  7. iort_iommu_msi_get_resv_regions

   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * Copyright (C) 2016, Semihalf
   4  *      Author: Tomasz Nowicki <tn@semihalf.com>
   5  */
   6 
   7 #ifndef __ACPI_IORT_H__
   8 #define __ACPI_IORT_H__
   9 
  10 #include <linux/acpi.h>
  11 #include <linux/fwnode.h>
  12 #include <linux/irqdomain.h>
  13 
  14 #define IORT_IRQ_MASK(irq)              (irq & 0xffffffffULL)
  15 #define IORT_IRQ_TRIGGER_MASK(irq)      ((irq >> 32) & 0xffffffffULL)
  16 
  17 /*
  18  * PMCG model identifiers for use in smmu pmu driver. Please note
  19  * that this is purely for the use of software and has nothing to
  20  * do with hardware or with IORT specification.
  21  */
  22 #define IORT_SMMU_V3_PMCG_GENERIC        0x00000000 /* Generic SMMUv3 PMCG */
  23 #define IORT_SMMU_V3_PMCG_HISI_HIP08     0x00000001 /* HiSilicon HIP08 PMCG */
  24 
  25 int iort_register_domain_token(int trans_id, phys_addr_t base,
  26                                struct fwnode_handle *fw_node);
  27 void iort_deregister_domain_token(int trans_id);
  28 struct fwnode_handle *iort_find_domain_token(int trans_id);
  29 #ifdef CONFIG_ACPI_IORT
  30 void acpi_iort_init(void);
  31 u32 iort_msi_map_rid(struct device *dev, u32 req_id);
  32 struct irq_domain *iort_get_device_domain(struct device *dev, u32 req_id);
  33 void acpi_configure_pmsi_domain(struct device *dev);
  34 int iort_pmsi_get_dev_id(struct device *dev, u32 *dev_id);
  35 /* IOMMU interface */
  36 void iort_dma_setup(struct device *dev, u64 *dma_addr, u64 *size);
  37 const struct iommu_ops *iort_iommu_configure(struct device *dev);
  38 int iort_iommu_msi_get_resv_regions(struct device *dev, struct list_head *head);
  39 #else
  40 static inline void acpi_iort_init(void) { }
  41 static inline u32 iort_msi_map_rid(struct device *dev, u32 req_id)
  42 { return req_id; }
  43 static inline struct irq_domain *iort_get_device_domain(struct device *dev,
  44                                                         u32 req_id)
  45 { return NULL; }
  46 static inline void acpi_configure_pmsi_domain(struct device *dev) { }
  47 /* IOMMU interface */
  48 static inline void iort_dma_setup(struct device *dev, u64 *dma_addr,
  49                                   u64 *size) { }
  50 static inline const struct iommu_ops *iort_iommu_configure(
  51                                       struct device *dev)
  52 { return NULL; }
  53 static inline
  54 int iort_iommu_msi_get_resv_regions(struct device *dev, struct list_head *head)
  55 { return 0; }
  56 #endif
  57 
  58 #endif /* __ACPI_IORT_H__ */

/* [<][>][^][v][top][bottom][index][help] */