Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
intel_vtd.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2020 Intel Corporation
3 * SPDX-License-Identifier: Apache-2.0
4 */
5
6#ifndef ZEPHYR_INCLUDE_DRIVERS_INTEL_VTD_H_
7#define ZEPHYR_INCLUDE_DRIVERS_INTEL_VTD_H_
8
9#include <drivers/pcie/msi.h>
10
11typedef int (*vtd_alloc_entries_f)(const struct device *dev,
12 uint8_t n_entries);
13
14typedef uint32_t (*vtd_remap_msi_f)(const struct device *dev,
15 msi_vector_t *vector);
16
17typedef int (*vtd_remap_f)(const struct device *dev,
18 msi_vector_t *vector);
19
24};
25
36static inline int vtd_allocate_entries(const struct device *dev,
37 uint8_t n_entries)
38{
39 const struct vtd_driver_api *api =
40 (const struct vtd_driver_api *)dev->api;
41
42 return api->allocate_entries(dev, n_entries);
43}
44
53static inline uint32_t vtd_remap_msi(const struct device *dev,
54 msi_vector_t *vector)
55{
56 const struct vtd_driver_api *api =
57 (const struct vtd_driver_api *)dev->api;
58
59 return api->remap_msi(dev, vector);
60}
61
70static inline int vtd_remap(const struct device *dev,
71 msi_vector_t *vector)
72{
73 const struct vtd_driver_api *api =
74 (const struct vtd_driver_api *)dev->api;
75
76 return api->remap(dev, vector);
77}
78
79
80#endif /* ZEPHYR_INCLUDE_DRIVERS_INTEL_VTD_H_ */
static int vtd_remap(const struct device *dev, msi_vector_t *vector)
Remap the given vector.
Definition: intel_vtd.h:70
int(* vtd_alloc_entries_f)(const struct device *dev, uint8_t n_entries)
Definition: intel_vtd.h:11
static int vtd_allocate_entries(const struct device *dev, uint8_t n_entries)
Allocate contiguous IRTEs.
Definition: intel_vtd.h:36
uint32_t(* vtd_remap_msi_f)(const struct device *dev, msi_vector_t *vector)
Definition: intel_vtd.h:14
static uint32_t vtd_remap_msi(const struct device *dev, msi_vector_t *vector)
Generate the MSI Message Address data for the given vector.
Definition: intel_vtd.h:53
int(* vtd_remap_f)(const struct device *dev, msi_vector_t *vector)
Definition: intel_vtd.h:17
__UINT32_TYPE__ uint32_t
Definition: stdint.h:60
__UINT8_TYPE__ uint8_t
Definition: stdint.h:58
Runtime device structure (in ROM) per driver instance.
Definition: device.h:367
const void * api
Definition: device.h:373
Definition: msi.h:27
Definition: intel_vtd.h:20
vtd_alloc_entries_f allocate_entries
Definition: intel_vtd.h:21
vtd_remap_msi_f remap_msi
Definition: intel_vtd.h:22
vtd_remap_f remap
Definition: intel_vtd.h:23