xref: /freebsd/share/man/man9/bus_activate_resource.9 (revision 2baed46e85d33b1f99e6f96033acc85a9a6fbba4)
1ec33f2d5SWarner Losh.\" -*- nroff -*-
2ec33f2d5SWarner Losh.\"
3a7147da9SWarner Losh.\" Copyright (c) 2003 M. Warner Losh <imp@FreeBSD.org>
4ec33f2d5SWarner Losh.\"
5ec33f2d5SWarner Losh.\" Redistribution and use in source and binary forms, with or without
6ec33f2d5SWarner Losh.\" modification, are permitted provided that the following conditions
7ec33f2d5SWarner Losh.\" are met:
8ec33f2d5SWarner Losh.\" 1. Redistributions of source code must retain the above copyright
9ec33f2d5SWarner Losh.\"    notice, this list of conditions and the following disclaimer.
10ec33f2d5SWarner Losh.\" 2. Redistributions in binary form must reproduce the above copyright
11ec33f2d5SWarner Losh.\"    notice, this list of conditions and the following disclaimer in the
12ec33f2d5SWarner Losh.\"    documentation and/or other materials provided with the distribution.
13ec33f2d5SWarner Losh.\"
14ec33f2d5SWarner Losh.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
15ec33f2d5SWarner Losh.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16ec33f2d5SWarner Losh.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17ec33f2d5SWarner Losh.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
18ec33f2d5SWarner Losh.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19ec33f2d5SWarner Losh.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20ec33f2d5SWarner Losh.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21ec33f2d5SWarner Losh.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22ec33f2d5SWarner Losh.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23ec33f2d5SWarner Losh.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24ec33f2d5SWarner Losh.\"
25*2baed46eSJohn Baldwin.Dd March 13, 2024
26ec33f2d5SWarner Losh.Dt BUS_ACTIVATE_RESOURCE 9
27ec33f2d5SWarner Losh.Os
28ec33f2d5SWarner Losh.Sh NAME
293e1cee04SRuslan Ermilov.Nm bus_activate_resource , bus_deactivate_resource
303e1cee04SRuslan Ermilov.Nd activate or deactivate a resource
31ec33f2d5SWarner Losh.Sh SYNOPSIS
32ec33f2d5SWarner Losh.In sys/param.h
33ec33f2d5SWarner Losh.In sys/bus.h
34ec33f2d5SWarner Losh.Pp
35ec33f2d5SWarner Losh.In machine/bus.h
36ec33f2d5SWarner Losh.In sys/rman.h
37ec33f2d5SWarner Losh.In machine/resource.h
38ec33f2d5SWarner Losh.Ft int
393e1cee04SRuslan Ermilov.Fo bus_activate_resource
40*2baed46eSJohn Baldwin.Fa "device_t dev" "struct resource *r"
413e1cee04SRuslan Ermilov.Fc
42ec33f2d5SWarner Losh.Ft int
433e1cee04SRuslan Ermilov.Fo bus_deactivate_resource
44*2baed46eSJohn Baldwin.Fa "device_t dev" "struct resource *r"
453e1cee04SRuslan Ermilov.Fc
46ec33f2d5SWarner Losh.Sh DESCRIPTION
473e1cee04SRuslan ErmilovThese functions activate or deactivate a previously allocated resource.
48ec33f2d5SWarner LoshIn general, resources must be activated before they can be accessed by
499aa021d4SJohn Baldwinthe driver.
509aa021d4SJohn BaldwinBus drivers may perform additional actions to ensure that the resource is
519aa021d4SJohn Baldwinready to be accessed.
529aa021d4SJohn BaldwinFor example,
539aa021d4SJohn Baldwinthe PCI bus driver enables memory decoding in a PCI device's command register
549aa021d4SJohn Baldwinwhen activating a memory resource.
55ec33f2d5SWarner Losh.Pp
563e1cee04SRuslan ErmilovThe arguments are as follows:
573e1cee04SRuslan Ermilov.Bl -tag -width indent
583e1cee04SRuslan Ermilov.It Fa dev
593e1cee04SRuslan ErmilovThe device that requests ownership of the resource.
60ec33f2d5SWarner LoshBefore allocation, the resource is owned by the parent bus.
613e1cee04SRuslan Ermilov.It Fa r
623e1cee04SRuslan ErmilovA pointer to the
633e1cee04SRuslan Ermilov.Vt "struct resource"
64ec33f2d5SWarner Loshreturned by
65ec33f2d5SWarner Losh.Xr bus_alloc_resource 9 .
66ec33f2d5SWarner Losh.El
679aa021d4SJohn Baldwin.Ss Resource Mapping
689aa021d4SJohn BaldwinResources which can be mapped for CPU access by a
69a7b81566SJohn Baldwin.Xr bus_space 9
709aa021d4SJohn Baldwintag and handle will create a mapping of the entire resource when activated.
719aa021d4SJohn BaldwinThe tag and handle for this mapping are stored in
729aa021d4SJohn Baldwin.Fa r
739aa021d4SJohn Baldwinand can be retrieved via
749aa021d4SJohn Baldwin.Xr rman_get_bustag 9
759aa021d4SJohn Baldwinand
769aa021d4SJohn Baldwin.Xr rman_get_bushandle 9 .
779aa021d4SJohn BaldwinThese can be used with the
789aa021d4SJohn Baldwin.Xr bus_space 9
799aa021d4SJohn BaldwinAPI to access device registers or memory described by
809aa021d4SJohn Baldwin.Fa r .
819aa021d4SJohn BaldwinIf the mapping is associated with a virtual address,
829aa021d4SJohn Baldwinthe virtual address can be retrieved via
839aa021d4SJohn Baldwin.Xr rman_get_virtual 9 .
849aa021d4SJohn Baldwin.Pp
85cc981af2SJohn BaldwinThis implicit mapping can be disabled by passing the
86cc981af2SJohn Baldwin.Dv RF_UNMAPPED
87cc981af2SJohn Baldwinflag to
88cc981af2SJohn Baldwin.Xr bus_alloc_resource 9 .
89cc981af2SJohn BaldwinA driver may use this if it wishes to allocate its own mappings of a resource
90cc981af2SJohn Baldwinusing
91cc981af2SJohn Baldwin.Xr bus_map_resource 9 .
92cc981af2SJohn Baldwin.Pp
939aa021d4SJohn BaldwinA wrapper API for
949aa021d4SJohn Baldwin.Xr bus_space 9
959aa021d4SJohn Baldwinis also provided that accepts the associated resource as the first argument
969aa021d4SJohn Baldwinin place of the
979aa021d4SJohn Baldwin.Xr bus_space 9
989aa021d4SJohn Baldwintag and handle.
999aa021d4SJohn BaldwinThe functions in this wrapper API are named similarly to the
1009aa021d4SJohn Baldwin.Xr bus_space 9
1019aa021d4SJohn BaldwinAPI except that
1029aa021d4SJohn Baldwin.Dq _space
1039aa021d4SJohn Baldwinis removed from their name.
1049aa021d4SJohn BaldwinFor example,
1059aa021d4SJohn Baldwin.Fn bus_read_4
1069aa021d4SJohn Baldwincan be used in place of
1079aa021d4SJohn Baldwin.Fn bus_space_read_4 .
1089aa021d4SJohn BaldwinThe wrapper API is preferred in new drivers.
1099aa021d4SJohn Baldwin.Pp
1109aa021d4SJohn BaldwinThese two statements both read a 32-bit register at the start of a
1119aa021d4SJohn Baldwinresource:
1129aa021d4SJohn Baldwin.Bd -literal
1139aa021d4SJohn Baldwin	bus_space_read_4(rman_get_bustag(res), rman_get_bushandle(res), 0);
1149aa021d4SJohn Baldwin	bus_read_4(res, 0);
1159aa021d4SJohn Baldwin.Ed
116ec33f2d5SWarner Losh.Sh RETURN VALUES
1173e1cee04SRuslan ErmilovZero is returned on success, otherwise an error is returned.
118ec33f2d5SWarner Losh.Sh SEE ALSO
119ec33f2d5SWarner Losh.Xr bus_alloc_resource 9 ,
120cc981af2SJohn Baldwin.Xr bus_map_resource 9 ,
121a7b81566SJohn Baldwin.Xr bus_space 9 ,
122ec33f2d5SWarner Losh.Xr device 9 ,
123ec33f2d5SWarner Losh.Xr driver 9
124ec33f2d5SWarner Losh.Sh AUTHORS
1253e1cee04SRuslan ErmilovThis manual page was written by
1268a7314fcSBaptiste Daroussin.An Warner Losh Aq Mt imp@FreeBSD.org .
127