Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
msi.h
Go to the documentation of this file.
1
#ifndef LINUX_MSI_H
2
#define LINUX_MSI_H
3
4
#include <
linux/kobject.h
>
5
#include <linux/list.h>
6
7
struct
msi_msg
{
8
u32
address_lo
;
/* low 32 bits of msi message address */
9
u32
address_hi
;
/* high 32 bits of msi message address */
10
u32
data
;
/* 16 bits of msi message data */
11
};
12
13
/* Helper functions */
14
struct
irq_data
;
15
struct
msi_desc
;
16
extern
void
mask_msi_irq
(
struct
irq_data
*
data
);
17
extern
void
unmask_msi_irq
(
struct
irq_data
*
data
);
18
extern
void
__read_msi_msg
(
struct
msi_desc
*
entry
,
struct
msi_msg
*
msg
);
19
extern
void
__get_cached_msi_msg
(
struct
msi_desc
*
entry
,
struct
msi_msg
*
msg
);
20
extern
void
__write_msi_msg
(
struct
msi_desc
*
entry
,
struct
msi_msg
*
msg
);
21
extern
void
read_msi_msg
(
unsigned
int
irq
,
struct
msi_msg
*
msg
);
22
extern
void
get_cached_msi_msg
(
unsigned
int
irq
,
struct
msi_msg
*
msg
);
23
extern
void
write_msi_msg
(
unsigned
int
irq
,
struct
msi_msg
*
msg
);
24
25
struct
msi_desc
{
26
struct
{
27
__u8
is_msix
: 1;
28
__u8
multiple
: 3;
/* log2 number of messages */
29
__u8
maskbit
: 1;
/* mask-pending bit supported ? */
30
__u8
is_64
: 1;
/* Address size: 0=32bit 1=64bit */
31
__u8
pos
;
/* Location of the msi capability */
32
__u16
entry_nr
;
/* specific enabled entry */
33
unsigned
default_irq
;
/* default pre-assigned irq */
34
}
msi_attrib
;
35
36
u32
masked
;
/* mask bits */
37
unsigned
int
irq
;
38
struct
list_head
list
;
39
40
union
{
41
void
__iomem
*
mask_base
;
42
u8
mask_pos
;
43
};
44
struct
pci_dev
*
dev
;
45
46
/* Last set MSI message */
47
struct
msi_msg
msg
;
48
49
struct
kobject
kobj
;
50
};
51
52
/*
53
* The arch hook for setup up msi irqs
54
*/
55
int
arch_setup_msi_irq
(
struct
pci_dev
*
dev
,
struct
msi_desc
*
desc
);
56
void
arch_teardown_msi_irq
(
unsigned
int
irq);
57
extern
int
arch_setup_msi_irqs
(
struct
pci_dev
*
dev
,
int
nvec,
int
type
);
58
extern
void
arch_teardown_msi_irqs
(
struct
pci_dev
*
dev
);
59
extern
int
arch_msi_check_device
(
struct
pci_dev
*
dev
,
int
nvec,
int
type
);
60
61
62
#endif
/* LINUX_MSI_H */
Generated on Thu Jan 10 2013 12:59:28 for Linux Kernel by
1.8.2