aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/xgifb/vb_util.h
diff options
context:
space:
mode:
authorPeter Huewe <peterhuewe@gmx.de>2015-07-14 00:44:09 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-07-14 19:55:31 -0700
commitfb44d9a507305ab05945d8a781a0a1255a3d9868 (patch)
treed32c389e4844fba937acad5ee3288edbae98df12 /drivers/staging/xgifb/vb_util.h
parentstaging: xgifb: prefer using the BIT macro (diff)
downloadlinux-dev-fb44d9a507305ab05945d8a781a0a1255a3d9868.tar.xz
linux-dev-fb44d9a507305ab05945d8a781a0a1255a3d9868.zip
staging/xgifb: Move register helper functions to header
and mark them as static inline. This shrinks the compiled module from 137442 to 117732 bytes and we also get rid of vb_util.c Signed-off-by: Peter Huewe <peterhuewe@gmx.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/xgifb/vb_util.h')
-rw-r--r--drivers/staging/xgifb/vb_util.h44
1 files changed, 39 insertions, 5 deletions
diff --git a/drivers/staging/xgifb/vb_util.h b/drivers/staging/xgifb/vb_util.h
index 9161de1d37dd..7bd395fb31b2 100644
--- a/drivers/staging/xgifb/vb_util.h
+++ b/drivers/staging/xgifb/vb_util.h
@@ -1,9 +1,43 @@
#ifndef _VBUTIL_
#define _VBUTIL_
-extern void xgifb_reg_set(unsigned long, u8, u8);
-extern u8 xgifb_reg_get(unsigned long, u8);
-extern void xgifb_reg_or(unsigned long, u8, unsigned);
-extern void xgifb_reg_and(unsigned long, u8, unsigned);
-extern void xgifb_reg_and_or(unsigned long, u8, unsigned, unsigned);
+static inline void xgifb_reg_set(unsigned long port, u8 index, u8 data)
+{
+ outb(index, port);
+ outb(data, port + 1);
+}
+
+static inline u8 xgifb_reg_get(unsigned long port, u8 index)
+{
+ outb(index, port);
+ return inb(port + 1);
+}
+
+static inline void xgifb_reg_and_or(unsigned long port, u8 index,
+ unsigned data_and, unsigned data_or)
+{
+ u8 temp;
+
+ temp = xgifb_reg_get(port, index);
+ temp = (temp & data_and) | data_or;
+ xgifb_reg_set(port, index, temp);
+}
+
+static inline void xgifb_reg_and(unsigned long port, u8 index, unsigned data_and)
+{
+ u8 temp;
+
+ temp = xgifb_reg_get(port, index);
+ temp &= data_and;
+ xgifb_reg_set(port, index, temp);
+}
+
+static inline void xgifb_reg_or(unsigned long port, u8 index, unsigned data_or)
+{
+ u8 temp;
+
+ temp = xgifb_reg_get(port, index);
+ temp |= data_or;
+ xgifb_reg_set(port, index, temp);
+}
#endif