Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/share/man/man9 Document pci_chipset_tag_create(9) and pci_ch...
details: https://anonhg.NetBSD.org/src/rev/af3c9103c138
branches: trunk
changeset: 754361:af3c9103c138
user: dyoung <dyoung%NetBSD.org@localhost>
date: Wed Apr 28 21:15:47 2010 +0000
description:
Document pci_chipset_tag_create(9) and pci_chipset_tag_destroy(9).
diffstat:
share/man/man9/pci.9 | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 130 insertions(+), 2 deletions(-)
diffs (172 lines):
diff -r 65033ec1f93f -r af3c9103c138 share/man/man9/pci.9
--- a/share/man/man9/pci.9 Wed Apr 28 20:34:37 2010 +0000
+++ b/share/man/man9/pci.9 Wed Apr 28 21:15:47 2010 +0000
@@ -1,4 +1,4 @@
-.\" $NetBSD: pci.9,v 1.30 2010/02/11 18:11:37 dyoung Exp $
+.\" $NetBSD: pci.9,v 1.31 2010/04/28 21:15:47 dyoung Exp $
.\"
.\" Copyright (c) 2001, 2003 The NetBSD Foundation, Inc.
.\" All rights reserved.
@@ -27,12 +27,14 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd February 11, 2010
+.Dd April 28, 2010
.Dt PCI 9
.Os
.Sh NAME
.Nm PCI ,
.Nm pci_activate ,
+.Nm pci_chipset_tag_create ,
+.Nm pci_chipset_tag_destroy ,
.Nm pci_conf_read ,
.Nm pci_conf_write ,
.Nm pci_conf_print ,
@@ -69,6 +71,11 @@
.Fn pci_activate "pci_chipset_tag_t pc" "pcitag_t tag" "device_t dev" \
"int (*wakeup)(pci_chipset_tag_t pc, pcitag_t tag" \
"\t\tdevice_t dev, pcireg_t reg)"
+.Ft int
+.Fn pci_chipset_tag_create "pci_chipset_tag_t opc" "uint64_t present" \
+"const struct pci_overrides *ov" "void *ctx" "pci_chipset_tag_t *pcp"
+.Ft void
+.Fn pci_chipset_tag_destroy "pci_chipset_tag_t pc"
.Ft pcireg_t
.Fn pci_conf_read "pci_chipset_tag_t pc" "pcitag_t tag" "int reg"
.Ft void
@@ -213,6 +220,35 @@
.Bd -literal
pcireg_t reg[16]; /* pci conf register */
.Ed
+.It Fa struct pci_overrides
+Stores pointers to functions that override the architecture's
+default
+.Xr pci 9
+and
+.Xr pci_intr 9
+implementation.
+It contains the following members:
+.Bd -literal
+ pcireg_t (*ov_conf_read)(void *,
+ pci_chipset_tag_t, pcitag_t, int);
+ void (*ov_conf_write)(void *,
+ pci_chipset_tag_t, pcitag_t, int, pcireg_t);
+ int (*ov_intr_map)(void *,
+ struct pci_attach_args *, pci_intr_handle_t *);
+ const char *(*ov_intr_string)(void *,
+ pci_chipset_tag_t, pci_intr_handle_t);
+ const struct evcnt *(*ov_intr_evcnt)(void *,
+ pci_chipset_tag_t, pci_intr_handle_t);
+ void *(*ov_intr_establish)(void *,
+ pci_chipset_tag_t, pci_intr_handle_t,
+ int, int (*)(void *), void *);
+ void (*ov_intr_disestablish)(void *,
+ pci_chipset_tag_t, void *);
+ pcitag_t (*ov_make_tag)(void *,
+ pci_chipset_tag_t, int, int, int);
+ void (*ov_decompose_tag)(void *,
+ pci_chipset_tag_t, pcitag_t, int *, int *, int *);
+.Ed
.El
.Sh FUNCTIONS
.Bl -tag -width compact
@@ -226,6 +262,98 @@
is
.Dv NULL
then restoring from state D3 is going to fail.
+.It Fn pci_chipset_tag_create "opc" "present" "ov" "ctx" "pcp"
+Create a copy of the tag
+.Fa opc
+at
+.Fa *pcp .
+Except for the behavior
+overridden by
+.Fa ov ,
+.Fa *pcp
+inherits the behavior of
+.Fa opc
+under
+.Nm
+calls.
+.Pp
+.Fa ov
+contains function pointers corresponding to
+.Nm
+routines.
+Each function pointer has a corresponding bit in
+.Fa present ,
+and if that bit is 1, the function pointer overrides the corresponding
+.Nm
+call for the new tag.
+Any combination of these bits may be set in
+.Fa present :
+.Pp
+.Bl -tag -width PCI_OVERRIDE_INTR_DISESTABLISH -compact
+.It Dv PCI_OVERRIDE_CONF_READ
+.It Dv PCI_OVERRIDE_CONF_WRITE
+.It Dv PCI_OVERRIDE_INTR_MAP
+.It Dv PCI_OVERRIDE_INTR_STRING
+.It Dv PCI_OVERRIDE_INTR_EVCNT
+.It Dv PCI_OVERRIDE_INTR_ESTABLISH
+.It Dv PCI_OVERRIDE_INTR_DISESTABLISH
+.It Dv PCI_OVERRIDE_MAKE_TAG
+.It Dv PCI_OVERRIDE_DECOMPOSE_TAG
+.El
+.Pp
+.Fn pci_chipset_tag_create
+does not copy
+.Fa ov .
+After a new tag is created
+by
+.Fn pci_chipset_tag_create ,
+.Fa ov
+must not be destroyed until after the
+tag is destroyed by
+.Fn pci_chipset_tag_destroy .
+.Pp
+The first argument of every override-function is a
+.Vt "void *" ,
+and
+.Fa ctx
+is passed in that argument.
+.Pp
+Return 0 if the call succeeds.
+Return
+.Dv EOPNOTSUPP
+if the architecture does not support overrides.
+Return
+.Dv EINVAL
+if
+.Fa present
+is 0, if
+.Fa ov
+is
+.Dv NULL ,
+or if
+.Fa present
+indicates that an override is present, but the corresponding override
+in
+.Fa ov
+is
+.Dv NULL .
+.Pp
+If the call does not succeed,
+.Fa *pcp
+is undefined.
+.It Fn pci_chipset_tag_destroy "pc"
+Destroy a tag,
+.Fa pc ,
+created by a prior call to
+.Fn pci_chipset_tag_create .
+If
+.Fa pc
+was not created by
+.Fn pci_chipset_tag_create ,
+results are undefined.
+If
+.Fa pc
+was already destroyed, results are undefined.
.It Fn pci_conf_read "pc" "tag" "reg"
Read from register
.Fa reg
Home |
Main Index |
Thread Index |
Old Index