2# Copyright (c) 2000 Doug Rabson
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions
8# 1. Redistributions of source code must retain the above copyright
9# notice, this list of conditions and the following disclaimer.
10# 2. Redistributions in binary form must reproduce the above copyright
11# notice, this list of conditions and the following disclaimer in the
12# documentation and/or other materials provided with the distribution.
14# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
40 return (PCI_INVALID_IRQ);
56# Return the number of slots on the attached PCI bus.
64# Return the number of functions on the attached PCI bus.
71# Read configuration space on the PCI bus. The bus, slot and func
72# arguments determine the device which is being read and the reg
73# argument is a byte offset into configuration space for that
74# device. The width argument (which should be 1, 2 or 4) specifies how
75# many byte of configuration space to read from that offset.
87# Write configuration space on the PCI bus. The bus, slot and func
88# arguments determine the device which is being written and the reg
89# argument is a byte offset into configuration space for that
90# device. The value field is written to the configuration space, with
91# the number of bytes written depending on the width argument.
104# Route an interrupt. Returns a value suitable for stuffing into
105# a device's interrupt register.
114# Allocate 'count' MSI messsages mapped onto 'count' IRQs. 'irq' points
115# to an array of at least 'count' ints. The max number of messages this
116# device supports is included so that the MD code can take that into
117# account when assigning resources so that the proper number of low bits
118# are clear in the resulting message data value.
129# Release 'count' MSI messages mapped onto 'count' IRQs stored in the
130# array pointed to by 'irqs'.
140# Allocate a single MSI-X message mapped onto '*irq'.
149# Release a single MSI-X message mapped onto 'irq'.
158# Determine the MSI/MSI-X message address and data for 'irq'. The address
159# is returned in '*addr', and the data in '*data'.
170# Return the device power state to be used during a system sleep state
171# transition such as suspend and resume.
180# Return the PCI Routing Identifier (RID) for the device.
190# Enable Alternative RID Interpretation if both the downstream port (pcib)
191# and the endpoint device (dev) both support it.
199# Return non-zero if PCI ARI is enabled, or zero otherwise
206# Decode a PCI Routing Identifier (RID) into PCI bus/slot/function
217# Request control of PCI features from host firmware, if any.
METHOD u_int32_t read_config
METHOD int request_feature
DEFAULT pcib_null_ari_enabled
METHOD int try_enable_ari
METHOD int power_for_sleep
METHOD int route_interrupt
DEFAULT null_route_interrupt