aboutsummaryrefslogtreecommitdiff
path: root/share/man/man9/mmio.9
diff options
context:
space:
mode:
Diffstat (limited to 'share/man/man9/mmio.9')
-rw-r--r--share/man/man9/mmio.960
1 files changed, 60 insertions, 0 deletions
diff --git a/share/man/man9/mmio.9 b/share/man/man9/mmio.9
new file mode 100644
index 0000000..d960c8c
--- /dev/null
+++ b/share/man/man9/mmio.9
@@ -0,0 +1,60 @@
+.\" Copyright (c) 2023 Ian Marco Moffett and the VegaOS team.
+.\" All rights reserved.
+.\"
+.\" 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.
+.\" 3. Neither the name of VegaOS nor the names of its
+.\" contributors may be used to endorse or promote products derived from
+.\" this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT OWNER OR CONTRIBUTORS 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 October 4, 2023
+.Dt MMIO 9
+.Os
+.Sh NAME
+.Nm mmio - vega MMIO interface
+.Sh SYNOPSIS
+.In sys/mmio.h
+
+.Bd -literal
+static inline void mmio_write8(void *addr, uint8_t val);
+static inline void mmio_write16(void *addr, uint16_t val);
+static inline void mmio_write32(void *addr, uint32_t val);
+#if __SIZEOF_SIZE_T__ == 8
+static inline void mmio_write64(void *addr, uint64_t val);
+#endif
+__extension__
+.Ed
+
+.Sh DESCRIPTION
+In short, MMIO is a method of writing to registers
+of an I/O device via a mapped porition of memory. MMIO
+should NOT be done on your own when doing Vega kernel programming.
+Instead, rely on Vega's MMIO interface and use
+.Ft mmio_read<n>()
+and
+.Ft mmio_write<n>()
+functions. Where `n` is 8 to 32 on 32-bit machines, and to 64
+on 64-bit machines.
+
+The
+.Ft addr
+argument can be either a physical address or virtual
+address; however, it is recommended to use virtual addresses
+for the sake of consistency.