xref: /freebsd/share/man/man9/pci.9 (revision 5203edcdc553fda6caa1da8826a89b1a02dad1bf)
1aac0aafaSHiten Pandya.\"
2aac0aafaSHiten Pandya.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.org>
3aac0aafaSHiten Pandya.\" All rights reserved.
4aac0aafaSHiten Pandya.\"
5aac0aafaSHiten Pandya.\" Redistribution and use in source and binary forms, with or without
6aac0aafaSHiten Pandya.\" modification, are permitted provided that the following conditions
7aac0aafaSHiten Pandya.\" are met:
8aac0aafaSHiten Pandya.\" 1. Redistributions of source code must retain the above copyright
9aac0aafaSHiten Pandya.\"    notice, this list of conditions and the following disclaimer.
10aac0aafaSHiten Pandya.\" 2. Redistributions in binary form must reproduce the above copyright
11aac0aafaSHiten Pandya.\"    notice, this list of conditions and the following disclaimer in the
12aac0aafaSHiten Pandya.\"    documentation and/or other materials provided with the distribution.
13aac0aafaSHiten Pandya.\"
14aac0aafaSHiten Pandya.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15aac0aafaSHiten Pandya.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16aac0aafaSHiten Pandya.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17aac0aafaSHiten Pandya.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18aac0aafaSHiten Pandya.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19aac0aafaSHiten Pandya.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20aac0aafaSHiten Pandya.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21aac0aafaSHiten Pandya.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22aac0aafaSHiten Pandya.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23aac0aafaSHiten Pandya.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24aac0aafaSHiten Pandya.\" SUCH DAMAGE.
25aac0aafaSHiten Pandya.\"
26aac0aafaSHiten Pandya.\" $FreeBSD$
27aac0aafaSHiten Pandya.\"
28aac0aafaSHiten Pandya.Dd May 21, 2003
29aac0aafaSHiten Pandya.Dt PCI 9
30aac0aafaSHiten Pandya.Os
31aac0aafaSHiten Pandya.Sh NAME
32aac0aafaSHiten Pandya.Nm pci ,
33aac0aafaSHiten Pandya.Nm pci_read_config ,
34aac0aafaSHiten Pandya.Nm pci_write_config ,
35aac0aafaSHiten Pandya.Nm pci_enable_busmaster ,
36aac0aafaSHiten Pandya.Nm pci_disable_busmaster ,
37aac0aafaSHiten Pandya.Nm pci_enable_io ,
38aac0aafaSHiten Pandya.Nm pci_disable_io ,
39aac0aafaSHiten Pandya.Nm pci_set_powerstate ,
40aac0aafaSHiten Pandya.Nm pci_get_powerstate ,
41aac0aafaSHiten Pandya.Nm pci_find_bsf ,
42aac0aafaSHiten Pandya.Nm pci_find_device
43aac0aafaSHiten Pandya.Nd PCI bus interface
44aac0aafaSHiten Pandya.Sh SYNOPSIS
45aac0aafaSHiten Pandya.In sys/bus.h
46aac0aafaSHiten Pandya.In dev/pci/pcivar.h
47aac0aafaSHiten Pandya.In dev/pci/pcireg.h
48aac0aafaSHiten Pandya.In machine/pci_cfgreg.h
49aac0aafaSHiten Pandya.Pp
50aac0aafaSHiten Pandya.Ft void
51aac0aafaSHiten Pandya.Fn pci_write_config "device_t dev" "int reg" "u_int32_t val" "int width"
52aac0aafaSHiten Pandya.Ft int
53aac0aafaSHiten Pandya.Fn pci_enable_busmaster "device_t dev"
54aac0aafaSHiten Pandya.Ft int
55aac0aafaSHiten Pandya.Fn pci_disable_busmaster "device_t dev"
56aac0aafaSHiten Pandya.Ft int
57aac0aafaSHiten Pandya.Fn pci_enable_io "device_t dev" "int space"
58aac0aafaSHiten Pandya.Ft int
59aac0aafaSHiten Pandya.Fn pci_disable_io "device_t dev" "int space"
60aac0aafaSHiten Pandya.Ft int
61aac0aafaSHiten Pandya.Fn pci_set_powerstate "device_t dev" "int state"
62aac0aafaSHiten Pandya.Ft int
63aac0aafaSHiten Pandya.Fn pci_get_powerstate "device_t dev"
64aac0aafaSHiten Pandya.Ft u_int32_t
65aac0aafaSHiten Pandya.Fn pci_read_config "device_t dev" "int reg" "int width"
66aac0aafaSHiten Pandya.Ft device_t
67aac0aafaSHiten Pandya.Fn pci_find_bsf "u_int8_t" "u_int8_t" "u_int8_t"
68aac0aafaSHiten Pandya.Ft device_t
69aac0aafaSHiten Pandya.Fn pci_find_device "u_int16_t" "u_int16_t"
70aac0aafaSHiten Pandya.Sh DESCRIPTION
71aac0aafaSHiten PandyaThe
72aac0aafaSHiten Pandya.Nm
73aac0aafaSHiten Pandyaset of functions are used for managing PCI devices.
74aac0aafaSHiten Pandya.Pp
75aac0aafaSHiten PandyaThe
76aac0aafaSHiten Pandya.Fn pci_read_config
77aac0aafaSHiten Pandyafunction is used to read data from the PCI configuration
78aac0aafaSHiten Pandyaspace of the device
79aac0aafaSHiten Pandya.Fa dev ,
80aac0aafaSHiten Pandyaat offset
81aac0aafaSHiten Pandya.Fa reg ,
82aac0aafaSHiten Pandyawith
83aac0aafaSHiten Pandya.Fa width
84aac0aafaSHiten Pandyaspecifying the size of the access.
85aac0aafaSHiten Pandya.Pp
86aac0aafaSHiten PandyaThe
87aac0aafaSHiten Pandya.Fn pci_write_config
88aac0aafaSHiten Pandyafunction is used to write the value
89aac0aafaSHiten Pandya.Fa val
90aac0aafaSHiten Pandyato the PCI configuration
91aac0aafaSHiten Pandyaspace of the device
92aac0aafaSHiten Pandya.Fa dev ,
93aac0aafaSHiten Pandyaat offset
94aac0aafaSHiten Pandya.Fa reg ,
95aac0aafaSHiten Pandyawith
96aac0aafaSHiten Pandya.Fa width
97aac0aafaSHiten Pandyaspecifying the size of the access.
98aac0aafaSHiten Pandya.Pp
99aac0aafaSHiten PandyaThe
100aac0aafaSHiten Pandya.Fn pci_enable_busmaster
101aac0aafaSHiten Pandyafunction enables PCI bus mastering for the device
102aac0aafaSHiten Pandya.Fa dev ,
103aac0aafaSHiten Pandyaby setting the
104aac0aafaSHiten Pandya.Dv PCIM_CMD_BUSMASTEREN
105aac0aafaSHiten Pandyabit in the
106aac0aafaSHiten Pandya.Dv PCIR_COMMAND
107aac0aafaSHiten Pandyaregister.
108aac0aafaSHiten PandyaThe
109aac0aafaSHiten Pandya.Fn pci_disable_busmaster
110aac0aafaSHiten Pandyafunction clears this bit.
111aac0aafaSHiten Pandya.Pp
112aac0aafaSHiten PandyaThe
113aac0aafaSHiten Pandya.Fn pci_enable_io
114aac0aafaSHiten Pandyafunction enables memory or I/O port address decoding for the device
115aac0aafaSHiten Pandya.Fa dev ,
116aac0aafaSHiten Pandyaby setting the
117aac0aafaSHiten Pandya.Dv PCIM_CMD_MEMEN
118aac0aafaSHiten Pandyaor
119aac0aafaSHiten Pandya.Dv PCIM_CMD_PORTEN
120aac0aafaSHiten Pandyabit in the
121aac0aafaSHiten Pandya.Dv PCIR_COMMAND
1225203edcdSRuslan Ermilovregister appropriately.
1235203edcdSRuslan ErmilovThe
124aac0aafaSHiten Pandya.Fn pci_disable_io
125aac0aafaSHiten Pandyafunction clears the appropriate bit.
126aac0aafaSHiten PandyaThe
127aac0aafaSHiten Pandya.Fa state
128aac0aafaSHiten Pandyaargument specifies which resource is affected; this can be either
129aac0aafaSHiten Pandya.Dv SYS_RES_MEMORY
130aac0aafaSHiten Pandyaor
131aac0aafaSHiten Pandya.Dv SYS_RES_IOPORT
132aac0aafaSHiten Pandyaas appropriate.
133aac0aafaSHiten Pandya.Pp
134aac0aafaSHiten Pandya.Em NOTE :
135aac0aafaSHiten PandyaThese functions should be used in preference to manually manipulating
136aac0aafaSHiten Pandyathe configuration space.
137aac0aafaSHiten Pandya.Pp
138aac0aafaSHiten PandyaThe
139aac0aafaSHiten Pandya.Fn pci_get_powerstate
140aac0aafaSHiten Pandyafunction returns the current ACPI power state of the device
141aac0aafaSHiten Pandya.Fa dev .
142aac0aafaSHiten PandyaIf the device does not support power management capabilities, then the default
143aac0aafaSHiten Pandyastate of
144aac0aafaSHiten Pandya.Dv PCI_POWERSTATE_D0
145aac0aafaSHiten Pandyais returned.
146aac0aafaSHiten PandyaThe following power states are defined by ACPI:
147aac0aafaSHiten Pandya.Bl -hang -width PCI_POWERSTATE_UNKNOWN
148aac0aafaSHiten Pandya.It Dv PCI_POWERSTATE_D0
149aac0aafaSHiten PandyaState in which device is on and running.
150aac0aafaSHiten PandyaIt is receiving full power from the system and delivering
151aac0aafaSHiten Pandyafull functionality to the user.
152aac0aafaSHiten Pandya.It Dv PCI_POWERSTATE_D1
153aac0aafaSHiten PandyaClass-specific low-power state in which device context may or
154aac0aafaSHiten Pandyamay not be lot.
155aac0aafaSHiten PandyaBuses in this state cannot do anything to the bus, to
1569817b894SBruce M Simpsonforce devices to lose context.
157aac0aafaSHiten Pandya.It Dv PCI_POWERSTATE_D2
158aac0aafaSHiten PandyaClass-specific low-power state in which device context may or
159aac0aafaSHiten Pandyamay not be lost.
160aac0aafaSHiten PandyaAttains greater power savings than
161aac0aafaSHiten Pandya.Dv PCI_POWERSTATE_D1 .
1629817b894SBruce M SimpsonBuses in this state can cause devices to lose some context.
163aac0aafaSHiten PandyaDevices
164aac0aafaSHiten Pandya.Em must
165aac0aafaSHiten Pandyabe prepared for the bus to be in this state or higher.
166aac0aafaSHiten Pandya.It Dv PCI_POWERSTATE_D3
167aac0aafaSHiten PandyaState in which the device is off and not running.
168aac0aafaSHiten PandyaDevice context is lost, and power from the device can
169aac0aafaSHiten Pandyabe removed.
170aac0aafaSHiten Pandya.It Dv PCI_POWERSTATE_UNKNOWN
171aac0aafaSHiten PandyaState of the device is unknown.
172aac0aafaSHiten Pandya.El
173aac0aafaSHiten Pandya.Pp
174aac0aafaSHiten PandyaThe
175aac0aafaSHiten Pandya.Fn pci_set_powerstate
176aac0aafaSHiten Pandyafunction is used to transition the device
177aac0aafaSHiten Pandya.Fa dev
178aac0aafaSHiten Pandyato the ACPI power state
179aac0aafaSHiten Pandya.Fa state .
180aac0aafaSHiten PandyaIt checks to see if the device is PCI 2.2 compliant.
181aac0aafaSHiten PandyaIf so, it checks the
182aac0aafaSHiten Pandyacapabilities pointer to determine which power states the device supports.
183aac0aafaSHiten PandyaIf the device does not have power management capabilities, the default state
184aac0aafaSHiten Pandyaof
185aac0aafaSHiten Pandya.Dv PCI_POWERSTATE_D0
186aac0aafaSHiten Pandyais set.
187aac0aafaSHiten Pandya.Pp
188aac0aafaSHiten PandyaThe
189aac0aafaSHiten Pandya.Fn pci_find_bsf
190aac0aafaSHiten Pandyafunction looks up the
191aac0aafaSHiten Pandya.Vt device_t
192aac0aafaSHiten Pandyaof a PCI device, given its
193aac0aafaSHiten Pandya.Fa bus ,
194aac0aafaSHiten Pandya.Fa slot ,
195aac0aafaSHiten Pandyaand
196aac0aafaSHiten Pandya.Fa function .
197aac0aafaSHiten Pandya.Pp
198aac0aafaSHiten PandyaThe
199aac0aafaSHiten Pandya.Fn pci_find_device
200aac0aafaSHiten Pandyafunction looks up the
201aac0aafaSHiten Pandya.Vt device_t
202aac0aafaSHiten Pandyaof a PCI device, given its
203aac0aafaSHiten Pandya.Fa vendor
204aac0aafaSHiten Pandyaand
205aac0aafaSHiten Pandya.Fa device
2065203edcdSRuslan ErmilovIDs.
2075203edcdSRuslan ErmilovNote that there can be multiple matches for this search; this function
208aac0aafaSHiten Pandyaonly returns the first matching device.
209aac0aafaSHiten Pandya.Sh IMPLEMENTATION NOTES
210aac0aafaSHiten PandyaThe
211aac0aafaSHiten Pandya.Vt pci_addr_t
212aac0aafaSHiten Pandyatype is varies according to the size of the PCI bus address
213aac0aafaSHiten Pandyaspace on the target architecture.
214aac0aafaSHiten Pandya.Sh SEE ALSO
2157c2c06f2SSheldon Hearn.Xr pci 4 ,
2167c2c06f2SSheldon Hearn.Xr pciconf 8 ,
217aac0aafaSHiten Pandya.Xr bus_alloc_resource 9 ,
218aac0aafaSHiten Pandya.Xr bus_dma 9 ,
219aac0aafaSHiten Pandya.Xr bus_release_resource 9 ,
220aac0aafaSHiten Pandya.Xr bus_setup_intr 9 ,
221aac0aafaSHiten Pandya.Xr bus_teardown_intr 9 ,
222aac0aafaSHiten Pandya.Xr devclass 9 ,
223aac0aafaSHiten Pandya.Xr device 9 ,
224aac0aafaSHiten Pandya.Xr driver 9 ,
225aac0aafaSHiten Pandya.Xr rman 9
226aac0aafaSHiten Pandya.Rs
227aac0aafaSHiten Pandya.%B FreeBSD Developers' Handbook
228aac0aafaSHiten Pandya.%T NewBus
229aac0aafaSHiten Pandya.%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/
230aac0aafaSHiten Pandya.Re
231aac0aafaSHiten Pandya.Rs
232aac0aafaSHiten Pandya.%A Shanley
233aac0aafaSHiten Pandya.%A Anderson
234aac0aafaSHiten Pandya.%B PCI System Architecture
235aac0aafaSHiten Pandya.%N 2nd Edition
236aac0aafaSHiten Pandya.%I Addison-Wesley
237aac0aafaSHiten Pandya.%O ISBN 0-201-30974-2
238aac0aafaSHiten Pandya.Re
239aac0aafaSHiten Pandya.Sh AUTHORS
240aac0aafaSHiten PandyaThis man page was written by
241aac0aafaSHiten Pandya.An Bruce M Simpson Aq bms@spc.org .
242aac0aafaSHiten Pandya.Sh BUGS
243aac0aafaSHiten PandyaThis manual page does not yet document PAE and how it affects memory-space
244aac0aafaSHiten Pandyamapping of PCI devices.
245