summaryrefslogtreecommitdiff
path: root/share/man/man9/pci_intr_map.9
diff options
context:
space:
mode:
Diffstat (limited to 'share/man/man9/pci_intr_map.9')
-rw-r--r--share/man/man9/pci_intr_map.920
1 files changed, 16 insertions, 4 deletions
diff --git a/share/man/man9/pci_intr_map.9 b/share/man/man9/pci_intr_map.9
index dda89e70782..c5fac9f76d5 100644
--- a/share/man/man9/pci_intr_map.9
+++ b/share/man/man9/pci_intr_map.9
@@ -1,4 +1,4 @@
-.\" $OpenBSD: pci_intr_map.9,v 1.10 2010/03/26 19:30:40 jmc Exp $
+.\" $OpenBSD: pci_intr_map.9,v 1.11 2011/05/21 21:29:20 kettenis Exp $
.\"
.\" Copyright (c) 2005 Michael Shalayeff
.\" All rights reserved.
@@ -15,11 +15,12 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate: March 26 2010 $
+.Dd $Mdocdate: May 21 2011 $
.Dt PCI_INTR_MAP 9
.Os
.Sh NAME
.Nm pci_intr_map ,
+.Nm pci_intr_map_msi ,
.Nm pci_intr_line ,
.Nm pci_intr_string ,
.Nm pci_intr_establish ,
@@ -34,6 +35,8 @@
.Ft int
.Fn pci_intr_map "struct pci_attach_args *paa" "pci_intr_handle_t *ih"
.Ft int
+.Fn pci_intr_map_msi "struct pci_attach_args *paa" "pci_intr_handle_t *ih"
+.Ft int
.Fn pci_intr_line "pci_intr_handle_t ih"
.Ft const char *
.Fn pci_intr_string "pci_chipset_tag_t pc" "pci_intr_handle_t ih"
@@ -50,7 +53,9 @@ An architect type is provided by the machine-dependent
code
.Va pci_intr_handle_t ,
to be initialised by
-.Fn pci_intr_map .
+.Fn pci_intr_map
+or
+.Fn pci_intr_map_msi .
.Pp
The
.Fn pci_intr_map
@@ -58,6 +63,13 @@ function should be called first to establish a mapping between a PCI
pin and the interrupt controller's interrupt vector.
This process may include resolving the mapping through
firmware-provided information.
+For devices that support Message Signaled Interrupts (MSI) the
+.Fn pci_intr_map_msi
+function should be called instead. This function can fail if the
+system does not support MSI.
+In that case
+.Fn pci_intr_map
+should be called to fall back on classic PCI interrupts.
.Pp
Having initialised the
.Va pci_intr_handle_t
@@ -97,7 +109,7 @@ xxxattach(struct device *parent, struct device *self, void *aux)
\&...
- if (pci_intr_map(pa, &ih)) {
+ if (pci_intr_map_msi(pa, &ih) && pci_intr_map(pa, &ih)) {
printf(": can't map interrupt\en");
bus_space_unmap(sc->iot, sc->ioh, size);
return;