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 20, 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 109This implicit mapping can be disabled by passing the 110.Dv RF_UNMAPPED 111flag to 112.Xr bus_alloc_resource 9 . 113A driver may use this if it wishes to allocate its own mappings of a resource 114using 115.Xr bus_map_resource 9 . 116.Pp 117A wrapper API for 118.Xr bus_space 9 119is also provided that accepts the associated resource as the first argument 120in place of the 121.Xr bus_space 9 122tag and handle. 123The functions in this wrapper API are named similarly to the 124.Xr bus_space 9 125API except that 126.Dq _space 127is removed from their name. 128For example, 129.Fn bus_read_4 130can be used in place of 131.Fn bus_space_read_4 . 132The wrapper API is preferred in new drivers. 133.Pp 134These two statements both read a 32-bit register at the start of a 135resource: 136.Bd -literal 137 bus_space_read_4(rman_get_bustag(res), rman_get_bushandle(res), 0); 138 bus_read_4(res, 0); 139.Ed 140.Sh RETURN VALUES 141Zero is returned on success, otherwise an error is returned. 142.Sh SEE ALSO 143.Xr bus_alloc_resource 9 , 144.Xr bus_map_resource 9 , 145.Xr bus_space 9 , 146.Xr device 9 , 147.Xr driver 9 148.Sh AUTHORS 149This manual page was written by 150.An Warner Losh Aq Mt imp@FreeBSD.org . 151