summaryrefslogtreecommitdiffstats
path: root/kernel/drivers/staging/xgifb/vb_util.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/drivers/staging/xgifb/vb_util.h')
-rw-r--r--kernel/drivers/staging/xgifb/vb_util.h44
1 files changed, 39 insertions, 5 deletions
diff --git a/kernel/drivers/staging/xgifb/vb_util.h b/kernel/drivers/staging/xgifb/vb_util.h
index 9161de1d3..f613f54d5 100644
--- a/kernel/drivers/staging/xgifb/vb_util.h
+++ b/kernel/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 = (u8) ((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 = (u8) (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