FreeBSD kernel kern code
msi_if.m
Go to the documentation of this file.
1
#-
2
# Copyright (c) 2016 The FreeBSD Foundation
3
#
4
# This software was developed by Andrew Turner under
5
# sponsorship from the FreeBSD Foundation.
6
#
7
# Redistribution and use in source and binary forms, with or without
8
# modification, are permitted provided that the following conditions
9
# are met:
10
# 1. Redistributions of source code must retain the above copyright
11
# notice, this list of conditions and the following disclaimer.
12
# 2. Redistributions in binary form must reproduce the above copyright
13
# notice, this list of conditions and the following disclaimer in the
14
# documentation and/or other materials provided with the distribution.
15
#
16
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26
# SUCH DAMAGE.
27
#
28
# $FreeBSD$
29
#
30
31
INTERFACE
msi
;
32
33
HEADER
{
34
#include <machine/bus.h>
35
#include <dev/iommu/iommu_msi.h>
36
37
struct
intr_irqsrc;
38
};
39
40
#
41
# Default implementations of some methods.
42
#
43
CODE
{
44
static
int
45
iommu_init
(device_t dev, device_t
child
,
struct
iommu_domain **
domain
)
46
{
47
*
domain
= NULL;
48
return
(0);
49
}
50
static
void
51
iommu_deinit
(device_t dev, device_t
child
)
52
{
53
}
54
};
55
56
METHOD
int
alloc_msi
{
57
device_t dev;
58
device_t
child
;
59
int
count
;
60
int
maxcount
;
61
device_t *
pic
;
62
struct
intr_irqsrc **
srcs
;
63
};
64
65
METHOD
int
release_msi
{
66
device_t dev;
67
device_t
child
;
68
int
count
;
69
struct
intr_irqsrc **
srcs
;
70
};
71
72
METHOD
int
alloc_msix
{
73
device_t dev;
74
device_t
child
;
75
device_t *
pic
;
76
struct
intr_irqsrc **
src
;
77
};
78
79
METHOD
int
release_msix
{
80
device_t dev;
81
device_t
child
;
82
struct
intr_irqsrc *
src
;
83
};
84
85
METHOD
int
map_msi
{
86
device_t dev;
87
device_t
child
;
88
struct
intr_irqsrc *
src
;
89
uint64_t *
addr
;
90
uint32_t *
data
;
91
};
92
93
METHOD
int
iommu_init
{
94
device_t dev;
95
device_t
child
;
96
struct
iommu_domain **
domain
;
97
}
DEFAULT
iommu_init
;
98
99
METHOD
void
iommu_deinit
{
100
device_t dev;
101
device_t
child
;
102
}
DEFAULT
iommu_deinit
;
alloc_msi
METHOD int alloc_msi
Definition:
msi_if.m:56
iommu_init
METHOD int iommu_init
Definition:
msi_if.m:93
alloc_msix
METHOD int alloc_msix
Definition:
msi_if.m:72
domain
struct iommu_domain ** domain
Definition:
msi_if.m:96
child
device_t child
Definition:
msi_if.m:58
release_msi
METHOD int release_msi
Definition:
msi_if.m:65
maxcount
int maxcount
Definition:
msi_if.m:60
map_msi
METHOD int map_msi
Definition:
msi_if.m:85
HEADER
HEADER
Definition:
msi_if.m:33
data
uint32_t * data
Definition:
msi_if.m:90
pic
device_t * pic
Definition:
msi_if.m:61
addr
uint64_t * addr
Definition:
msi_if.m:89
msi
INTERFACE msi
Definition:
msi_if.m:31
CODE
CODE
Definition:
msi_if.m:43
count
int count
Definition:
msi_if.m:59
release_msix
METHOD int release_msix
Definition:
msi_if.m:79
srcs
struct intr_irqsrc ** srcs
Definition:
msi_if.m:62
iommu_deinit
METHOD void iommu_deinit
Definition:
msi_if.m:99
src
struct intr_irqsrc ** src
Definition:
msi_if.m:76
DEFAULT
#define DEFAULT(foo, bar)
kern
msi_if.m
Generated by
1.9.3