linux/include/linux/acpi_iort.h
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2016, Semihalf
   3 *      Author: Tomasz Nowicki <tn@semihalf.com>
   4 *
   5 * This program is free software; you can redistribute it and/or modify it
   6 * under the terms and conditions of the GNU General Public License,
   7 * version 2, as published by the Free Software Foundation.
   8 *
   9 * This program is distributed in the hope it will be useful, but WITHOUT
  10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  12 * more details.
  13 *
  14 * You should have received a copy of the GNU General Public License along with
  15 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
  16 * Place - Suite 330, Boston, MA 02111-1307 USA.
  17 */
  18
  19#ifndef __ACPI_IORT_H__
  20#define __ACPI_IORT_H__
  21
  22#include <linux/acpi.h>
  23#include <linux/fwnode.h>
  24#include <linux/irqdomain.h>
  25
  26#define IORT_IRQ_MASK(irq)              (irq & 0xffffffffULL)
  27#define IORT_IRQ_TRIGGER_MASK(irq)      ((irq >> 32) & 0xffffffffULL)
  28
  29int iort_register_domain_token(int trans_id, struct fwnode_handle *fw_node);
  30void iort_deregister_domain_token(int trans_id);
  31struct fwnode_handle *iort_find_domain_token(int trans_id);
  32#ifdef CONFIG_ACPI_IORT
  33void acpi_iort_init(void);
  34u32 iort_msi_map_rid(struct device *dev, u32 req_id);
  35struct irq_domain *iort_get_device_domain(struct device *dev, u32 req_id);
  36void acpi_configure_pmsi_domain(struct device *dev);
  37int iort_pmsi_get_dev_id(struct device *dev, u32 *dev_id);
  38/* IOMMU interface */
  39void iort_dma_setup(struct device *dev, u64 *dma_addr, u64 *size);
  40const struct iommu_ops *iort_iommu_configure(struct device *dev);
  41#else
  42static inline void acpi_iort_init(void) { }
  43static inline u32 iort_msi_map_rid(struct device *dev, u32 req_id)
  44{ return req_id; }
  45static inline struct irq_domain *iort_get_device_domain(struct device *dev,
  46                                                        u32 req_id)
  47{ return NULL; }
  48static inline void acpi_configure_pmsi_domain(struct device *dev) { }
  49/* IOMMU interface */
  50static inline void iort_dma_setup(struct device *dev, u64 *dma_addr,
  51                                  u64 *size) { }
  52static inline
  53const struct iommu_ops *iort_iommu_configure(struct device *dev)
  54{ return NULL; }
  55#endif
  56
  57#endif /* __ACPI_IORT_H__ */
  58