a7147da9d4
Noticed by: bapt@
147 lines
4.4 KiB
Groff
147 lines
4.4 KiB
Groff
.\" -*- 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.
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd May 20, 2016
|
|
.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" "int type" "int rid" "struct resource *r"
|
|
.Fc
|
|
.Ft int
|
|
.Fo bus_deactivate_resource
|
|
.Fa "device_t dev" "int type" "int rid" "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 type
|
|
The type of resource you want to allocate.
|
|
It is one of:
|
|
.Pp
|
|
.Bl -tag -width ".Dv SYS_RES_MEMORY" -compact
|
|
.It Dv PCI_RES_BUS
|
|
for PCI bus numbers
|
|
.It Dv SYS_RES_IRQ
|
|
for IRQs
|
|
.It Dv SYS_RES_DRQ
|
|
for ISA DMA lines
|
|
.It Dv SYS_RES_IOPORT
|
|
for I/O ports
|
|
.It Dv SYS_RES_MEMORY
|
|
for I/O memory
|
|
.El
|
|
.It Fa rid
|
|
A pointer to a bus specific handle that identifies the resource being allocated.
|
|
.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 .
|