1.\" -*- nroff -*- 2.\" 3.\" Copyright (c) 2003 M. Warner Losh 4.\" 5.\" All rights reserved. 6.\" 7.\" This program is free software. 8.\" 9.\" Redistribution and use in source and binary forms, with or without 10.\" modification, are permitted provided that the following conditions 11.\" are met: 12.\" 1. Redistributions of source code must retain the above copyright 13.\" notice, this list of conditions and the following disclaimer. 14.\" 2. Redistributions in binary form must reproduce the above copyright 15.\" notice, this list of conditions and the following disclaimer in the 16.\" documentation and/or other materials provided with the distribution. 17.\" 18.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR 19.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 20.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, 22.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28.\" 29.\" $FreeBSD$ 30.\" 31.Dd May 10, 2016 32.Dt BUS_ACTIVATE_RESOURCE 9 33.Os 34.Sh NAME 35.Nm bus_activate_resource , bus_deactivate_resource 36.Nd activate or deactivate a resource 37.Sh SYNOPSIS 38.In sys/param.h 39.In sys/bus.h 40.Pp 41.In machine/bus.h 42.In sys/rman.h 43.In machine/resource.h 44.Ft int 45.Fo bus_activate_resource 46.Fa "device_t dev" "int type" "int rid" "struct resource *r" 47.Fc 48.Ft int 49.Fo bus_deactivate_resource 50.Fa "device_t dev" "int type" "int rid" "struct resource *r" 51.Fc 52.Sh DESCRIPTION 53These functions activate or deactivate a previously allocated resource. 54In general, resources must be activated before they can be accessed by 55the driver. 56Bus drivers may perform additional actions to ensure that the resource is 57ready to be accessed. 58For example, 59the PCI bus driver enables memory decoding in a PCI device's command register 60when activating a memory resource. 61.Pp 62The arguments are as follows: 63.Bl -tag -width indent 64.It Fa dev 65The device that requests ownership of the resource. 66Before allocation, the resource is owned by the parent bus. 67.It Fa type 68The type of resource you want to allocate. 69It is one of: 70.Pp 71.Bl -tag -width ".Dv SYS_RES_MEMORY" -compact 72.It Dv PCI_RES_BUS 73for PCI bus numbers 74.It Dv SYS_RES_IRQ 75for IRQs 76.It Dv SYS_RES_DRQ 77for ISA DMA lines 78.It Dv SYS_RES_IOPORT 79for I/O ports 80.It Dv SYS_RES_MEMORY 81for I/O memory 82.El 83.It Fa rid 84A pointer to a bus specific handle that identifies the resource being allocated. 85.It Fa r 86A pointer to the 87.Vt "struct resource" 88returned by 89.Xr bus_alloc_resource 9 . 90.El 91.Ss Resource Mapping 92Resources which can be mapped for CPU access by a 93.Xr bus_space 9 94tag and handle will create a mapping of the entire resource when activated. 95The tag and handle for this mapping are stored in 96.Fa r 97and can be retrieved via 98.Xr rman_get_bustag 9 99and 100.Xr rman_get_bushandle 9 . 101These can be used with the 102.Xr bus_space 9 103API to access device registers or memory described by 104.Fa r . 105If the mapping is associated with a virtual address, 106the virtual address can be retrieved via 107.Xr rman_get_virtual 9 . 108.Pp 109A wrapper API for 110.Xr bus_space 9 111is also provided that accepts the associated resource as the first argument 112in place of the 113.Xr bus_space 9 114tag and handle. 115The functions in this wrapper API are named similarly to the 116.Xr bus_space 9 117API except that 118.Dq _space 119is removed from their name. 120For example, 121.Fn bus_read_4 122can be used in place of 123.Fn bus_space_read_4 . 124The wrapper API is preferred in new drivers. 125.Pp 126These two statements both read a 32-bit register at the start of a 127resource: 128.Bd -literal 129 bus_space_read_4(rman_get_bustag(res), rman_get_bushandle(res), 0); 130 bus_read_4(res, 0); 131.Ed 132.Sh RETURN VALUES 133Zero is returned on success, otherwise an error is returned. 134.Sh SEE ALSO 135.Xr bus_alloc_resource 9 , 136.Xr bus_space 9 , 137.Xr device 9 , 138.Xr driver 9 139.Sh AUTHORS 140This manual page was written by 141.An Warner Losh Aq Mt imp@FreeBSD.org . 142