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 122aac0aafaSHiten Pandyaregister appropriately. The 123aac0aafaSHiten Pandya.Fn pci_disable_io 124aac0aafaSHiten Pandyafunction clears the appropriate bit. 125aac0aafaSHiten PandyaThe 126aac0aafaSHiten Pandya.Fa state 127aac0aafaSHiten Pandyaargument specifies which resource is affected; this can be either 128aac0aafaSHiten Pandya.Dv SYS_RES_MEMORY 129aac0aafaSHiten Pandyaor 130aac0aafaSHiten Pandya.Dv SYS_RES_IOPORT 131aac0aafaSHiten Pandyaas appropriate. 132aac0aafaSHiten Pandya.Pp 133aac0aafaSHiten Pandya.Em NOTE : 134aac0aafaSHiten PandyaThese functions should be used in preference to manually manipulating 135aac0aafaSHiten Pandyathe configuration space. 136aac0aafaSHiten Pandya.Pp 137aac0aafaSHiten PandyaThe 138aac0aafaSHiten Pandya.Fn pci_get_powerstate 139aac0aafaSHiten Pandyafunction returns the current ACPI power state of the device 140aac0aafaSHiten Pandya.Fa dev . 141aac0aafaSHiten PandyaIf the device does not support power management capabilities, then the default 142aac0aafaSHiten Pandyastate of 143aac0aafaSHiten Pandya.Dv PCI_POWERSTATE_D0 144aac0aafaSHiten Pandyais returned. 145aac0aafaSHiten PandyaThe following power states are defined by ACPI: 146aac0aafaSHiten Pandya.Bl -hang -width PCI_POWERSTATE_UNKNOWN 147aac0aafaSHiten Pandya.It Dv PCI_POWERSTATE_D0 148aac0aafaSHiten PandyaState in which device is on and running. 149aac0aafaSHiten PandyaIt is receiving full power from the system and delivering 150aac0aafaSHiten Pandyafull functionality to the user. 151aac0aafaSHiten Pandya.It Dv PCI_POWERSTATE_D1 152aac0aafaSHiten PandyaClass-specific low-power state in which device context may or 153aac0aafaSHiten Pandyamay not be lot. 154aac0aafaSHiten PandyaBuses in this state cannot do anything to the bus, to 1559817b894SBruce M Simpsonforce devices to lose context. 156aac0aafaSHiten Pandya.It Dv PCI_POWERSTATE_D2 157aac0aafaSHiten PandyaClass-specific low-power state in which device context may or 158aac0aafaSHiten Pandyamay not be lost. 159aac0aafaSHiten PandyaAttains greater power savings than 160aac0aafaSHiten Pandya.Dv PCI_POWERSTATE_D1 . 1619817b894SBruce M SimpsonBuses in this state can cause devices to lose some context. 162aac0aafaSHiten PandyaDevices 163aac0aafaSHiten Pandya.Em must 164aac0aafaSHiten Pandyabe prepared for the bus to be in this state or higher. 165aac0aafaSHiten Pandya.It Dv PCI_POWERSTATE_D3 166aac0aafaSHiten PandyaState in which the device is off and not running. 167aac0aafaSHiten PandyaDevice context is lost, and power from the device can 168aac0aafaSHiten Pandyabe removed. 169aac0aafaSHiten Pandya.It Dv PCI_POWERSTATE_UNKNOWN 170aac0aafaSHiten PandyaState of the device is unknown. 171aac0aafaSHiten Pandya.El 172aac0aafaSHiten Pandya.Pp 173aac0aafaSHiten PandyaThe 174aac0aafaSHiten Pandya.Fn pci_set_powerstate 175aac0aafaSHiten Pandyafunction is used to transition the device 176aac0aafaSHiten Pandya.Fa dev 177aac0aafaSHiten Pandyato the ACPI power state 178aac0aafaSHiten Pandya.Fa state . 179aac0aafaSHiten PandyaIt checks to see if the device is PCI 2.2 compliant. 180aac0aafaSHiten PandyaIf so, it checks the 181aac0aafaSHiten Pandyacapabilities pointer to determine which power states the device supports. 182aac0aafaSHiten PandyaIf the device does not have power management capabilities, the default state 183aac0aafaSHiten Pandyaof 184aac0aafaSHiten Pandya.Dv PCI_POWERSTATE_D0 185aac0aafaSHiten Pandyais set. 186aac0aafaSHiten Pandya.Pp 187aac0aafaSHiten PandyaThe 188aac0aafaSHiten Pandya.Fn pci_find_bsf 189aac0aafaSHiten Pandyafunction looks up the 190aac0aafaSHiten Pandya.Vt device_t 191aac0aafaSHiten Pandyaof a PCI device, given its 192aac0aafaSHiten Pandya.Fa bus , 193aac0aafaSHiten Pandya.Fa slot , 194aac0aafaSHiten Pandyaand 195aac0aafaSHiten Pandya.Fa function . 196aac0aafaSHiten Pandya.Pp 197aac0aafaSHiten PandyaThe 198aac0aafaSHiten Pandya.Fn pci_find_device 199aac0aafaSHiten Pandyafunction looks up the 200aac0aafaSHiten Pandya.Vt device_t 201aac0aafaSHiten Pandyaof a PCI device, given its 202aac0aafaSHiten Pandya.Fa vendor 203aac0aafaSHiten Pandyaand 204aac0aafaSHiten Pandya.Fa device 205aac0aafaSHiten PandyaIDs. Note that there can be multiple matches for this search; this function 206aac0aafaSHiten Pandyaonly returns the first matching device. 207aac0aafaSHiten Pandya.Sh IMPLEMENTATION NOTES 208aac0aafaSHiten PandyaThe 209aac0aafaSHiten Pandya.Vt pci_addr_t 210aac0aafaSHiten Pandyatype is varies according to the size of the PCI bus address 211aac0aafaSHiten Pandyaspace on the target architecture. 212aac0aafaSHiten Pandya.Sh SEE ALSO 2137c2c06f2SSheldon Hearn.Xr pci 4 , 2147c2c06f2SSheldon Hearn.Xr pciconf 8 , 215aac0aafaSHiten Pandya.Xr bus_alloc_resource 9 , 216aac0aafaSHiten Pandya.Xr bus_dma 9 , 217aac0aafaSHiten Pandya.Xr bus_release_resource 9 , 218aac0aafaSHiten Pandya.Xr bus_setup_intr 9 , 219aac0aafaSHiten Pandya.Xr bus_teardown_intr 9 , 220aac0aafaSHiten Pandya.Xr devclass 9 , 221aac0aafaSHiten Pandya.Xr device 9 , 222aac0aafaSHiten Pandya.Xr driver 9 , 223aac0aafaSHiten Pandya.Xr rman 9 224aac0aafaSHiten Pandya.Rs 225aac0aafaSHiten Pandya.%B FreeBSD Developers' Handbook 226aac0aafaSHiten Pandya.%T NewBus 227aac0aafaSHiten Pandya.%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/ 228aac0aafaSHiten Pandya.Re 229aac0aafaSHiten Pandya.Rs 230aac0aafaSHiten Pandya.%A Shanley 231aac0aafaSHiten Pandya.%A Anderson 232aac0aafaSHiten Pandya.%B PCI System Architecture 233aac0aafaSHiten Pandya.%N 2nd Edition 234aac0aafaSHiten Pandya.%I Addison-Wesley 235aac0aafaSHiten Pandya.%O ISBN 0-201-30974-2 236aac0aafaSHiten Pandya.Re 237aac0aafaSHiten Pandya.Sh AUTHORS 238aac0aafaSHiten PandyaThis man page was written by 239aac0aafaSHiten Pandya.An Bruce M Simpson Aq bms@spc.org . 240aac0aafaSHiten Pandya.Sh BUGS 241aac0aafaSHiten PandyaThis manual page does not yet document PAE and how it affects memory-space 242aac0aafaSHiten Pandyamapping of PCI devices. 243