summaryrefslogtreecommitdiff
path: root/spb/SkeletonI2C/hw.cpp
diff options
context:
space:
mode:
authorDave Wilson <[email protected]>2015-03-17 19:50:07 -0700
committerDave Wilson <[email protected]>2015-03-17 19:50:07 -0700
commit97cf5197cf5b882b2c689d8dc2b555f2edf8f418 (patch)
tree46f3701832d70b420eb0fc0eb93261f9da45db3f /spb/SkeletonI2C/hw.cpp
parentef1905bf1e8825bb31120dfb27e0daf3154d859a (diff)
Initial publish
Diffstat (limited to 'spb/SkeletonI2C/hw.cpp')
-rw-r--r--spb/SkeletonI2C/hw.cpp83
1 files changed, 83 insertions, 0 deletions
diff --git a/spb/SkeletonI2C/hw.cpp b/spb/SkeletonI2C/hw.cpp
new file mode 100644
index 00000000..497cfe5a
--- /dev/null
+++ b/spb/SkeletonI2C/hw.cpp
@@ -0,0 +1,83 @@
+/*++
+
+Copyright (c) Microsoft Corporation. All rights reserved.
+
+Module Name:
+
+ hw.cpp
+
+Abstract:
+
+ This module contains the functions for accessing
+ the hardware registers.
+
+Environment:
+
+ kernel-mode only
+
+Revision History:
+
+--*/
+
+#include "internal.h"
+#include "hw.tmh"
+
+ULONG
+HWREG<ULONG>::Read(
+ VOID
+ )
+{
+ volatile ULONG *addr = &m_Value;
+ ULONG v = READ_REGISTER_ULONG((PULONG)addr);
+ return v;
+}
+
+ULONG
+HWREG<ULONG>::Write(
+ _In_ ULONG Value
+ )
+{
+ volatile ULONG *addr = &m_Value;
+ WRITE_REGISTER_ULONG((PULONG)addr, Value);
+ return Value;
+}
+
+USHORT
+HWREG<USHORT>::Read(
+ VOID
+ )
+{
+ volatile USHORT *addr = &m_Value;
+ USHORT v = READ_REGISTER_USHORT((PUSHORT)addr);
+ return v;
+}
+
+USHORT
+HWREG<USHORT>::Write(
+ _In_ USHORT Value
+ )
+{
+ volatile USHORT *addr = &m_Value;
+ WRITE_REGISTER_USHORT((PUSHORT)addr, Value);
+ return Value;
+}
+
+UCHAR
+HWREG<UCHAR>::Read(
+ VOID
+ )
+{
+ volatile UCHAR *addr = &m_Value;
+ UCHAR v = READ_REGISTER_UCHAR((PUCHAR)addr);
+ return v;
+}
+
+UCHAR
+HWREG<UCHAR>::Write(
+ _In_ UCHAR Value
+ )
+{
+ volatile UCHAR *addr = &m_Value;
+ WRITE_REGISTER_UCHAR((PUCHAR)addr, Value);
+ return Value;
+}