summaryrefslogtreecommitdiff
path: root/static/freebsd/man9/bus_activate_resource.9
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man9/bus_activate_resource.9')
-rw-r--r--static/freebsd/man9/bus_activate_resource.9126
1 files changed, 126 insertions, 0 deletions
diff --git a/static/freebsd/man9/bus_activate_resource.9 b/static/freebsd/man9/bus_activate_resource.9
new file mode 100644
index 00000000..7b87197b
--- /dev/null
+++ b/static/freebsd/man9/bus_activate_resource.9
@@ -0,0 +1,126 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2003 M. Warner Losh <imp@FreeBSD.org>
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.Dd March 13, 2024
+.Dt BUS_ACTIVATE_RESOURCE 9
+.Os
+.Sh NAME
+.Nm bus_activate_resource , bus_deactivate_resource
+.Nd activate or deactivate a resource
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Pp
+.In machine/bus.h
+.In sys/rman.h
+.In machine/resource.h
+.Ft int
+.Fo bus_activate_resource
+.Fa "device_t dev" "struct resource *r"
+.Fc
+.Ft int
+.Fo bus_deactivate_resource
+.Fa "device_t dev" "struct resource *r"
+.Fc
+.Sh DESCRIPTION
+These functions activate or deactivate a previously allocated resource.
+In general, resources must be activated before they can be accessed by
+the driver.
+Bus drivers may perform additional actions to ensure that the resource is
+ready to be accessed.
+For example,
+the PCI bus driver enables memory decoding in a PCI device's command register
+when activating a memory resource.
+.Pp
+The arguments are as follows:
+.Bl -tag -width indent
+.It Fa dev
+The device that requests ownership of the resource.
+Before allocation, the resource is owned by the parent bus.
+.It Fa r
+A pointer to the
+.Vt "struct resource"
+returned by
+.Xr bus_alloc_resource 9 .
+.El
+.Ss Resource Mapping
+Resources which can be mapped for CPU access by a
+.Xr bus_space 9
+tag and handle will create a mapping of the entire resource when activated.
+The tag and handle for this mapping are stored in
+.Fa r
+and can be retrieved via
+.Xr rman_get_bustag 9
+and
+.Xr rman_get_bushandle 9 .
+These can be used with the
+.Xr bus_space 9
+API to access device registers or memory described by
+.Fa r .
+If the mapping is associated with a virtual address,
+the virtual address can be retrieved via
+.Xr rman_get_virtual 9 .
+.Pp
+This implicit mapping can be disabled by passing the
+.Dv RF_UNMAPPED
+flag to
+.Xr bus_alloc_resource 9 .
+A driver may use this if it wishes to allocate its own mappings of a resource
+using
+.Xr bus_map_resource 9 .
+.Pp
+A wrapper API for
+.Xr bus_space 9
+is also provided that accepts the associated resource as the first argument
+in place of the
+.Xr bus_space 9
+tag and handle.
+The functions in this wrapper API are named similarly to the
+.Xr bus_space 9
+API except that
+.Dq _space
+is removed from their name.
+For example,
+.Fn bus_read_4
+can be used in place of
+.Fn bus_space_read_4 .
+The wrapper API is preferred in new drivers.
+.Pp
+These two statements both read a 32-bit register at the start of a
+resource:
+.Bd -literal
+ bus_space_read_4(rman_get_bustag(res), rman_get_bushandle(res), 0);
+ bus_read_4(res, 0);
+.Ed
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an error is returned.
+.Sh SEE ALSO
+.Xr bus_alloc_resource 9 ,
+.Xr bus_map_resource 9 ,
+.Xr bus_space 9 ,
+.Xr device 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Warner Losh Aq Mt imp@FreeBSD.org .