diff options
Diffstat (limited to 'share/man/man9/pci_intr_map.9')
-rw-r--r-- | share/man/man9/pci_intr_map.9 | 20 |
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; |