Aaro Koskinen | 4b49546 | 2011-09-13 22:49:32 +0300 | [diff] [blame] | 1 | #include <linux/io.h> |
| 2 | #include <linux/types.h> |
| 3 | |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 4 | #include "vb_def.h" |
| 5 | #include "vgatypes.h" |
| 6 | #include "vb_struct.h" |
| 7 | |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 8 | #include "XGIfb.h" |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 9 | |
Aaro Koskinen | 0998e1d | 2011-03-13 12:26:16 +0200 | [diff] [blame] | 10 | #include "vb_util.h" |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 11 | |
Aaro Koskinen | d0e23bd | 2011-03-13 12:26:27 +0200 | [diff] [blame] | 12 | void xgifb_reg_set(unsigned long port, u8 index, u8 data) |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 13 | { |
Bill Pemberton | 1e59f71 | 2010-06-17 13:10:41 -0400 | [diff] [blame] | 14 | outb(index, port); |
| 15 | outb(data, port + 1); |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 16 | } |
| 17 | |
Aaro Koskinen | d0e23bd | 2011-03-13 12:26:27 +0200 | [diff] [blame] | 18 | u8 xgifb_reg_get(unsigned long port, u8 index) |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 19 | { |
Aaro Koskinen | d0e23bd | 2011-03-13 12:26:27 +0200 | [diff] [blame] | 20 | u8 data; |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 21 | |
Prashant P. Shah | 602f2c9 | 2010-09-04 12:09:32 +0530 | [diff] [blame] | 22 | outb(index, port); |
| 23 | data = inb(port + 1); |
| 24 | return data; |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 25 | } |
| 26 | |
Aaro Koskinen | 459d2ea | 2011-03-13 12:26:28 +0200 | [diff] [blame] | 27 | void xgifb_reg_and_or(unsigned long port, u8 index, |
| 28 | unsigned data_and, unsigned data_or) |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 29 | { |
Aaro Koskinen | d0e23bd | 2011-03-13 12:26:27 +0200 | [diff] [blame] | 30 | u8 temp; |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 31 | |
Aaro Koskinen | 459d2ea | 2011-03-13 12:26:28 +0200 | [diff] [blame] | 32 | temp = xgifb_reg_get(port, index); /* XGINew_Part1Port index 02 */ |
| 33 | temp = (temp & data_and) | data_or; |
| 34 | xgifb_reg_set(port, index, temp); |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 35 | } |
| 36 | |
Aaro Koskinen | 459d2ea | 2011-03-13 12:26:28 +0200 | [diff] [blame] | 37 | void xgifb_reg_and(unsigned long port, u8 index, unsigned data_and) |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 38 | { |
Aaro Koskinen | d0e23bd | 2011-03-13 12:26:27 +0200 | [diff] [blame] | 39 | u8 temp; |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 40 | |
Aaro Koskinen | 459d2ea | 2011-03-13 12:26:28 +0200 | [diff] [blame] | 41 | temp = xgifb_reg_get(port, index); /* XGINew_Part1Port index 02 */ |
| 42 | temp &= data_and; |
| 43 | xgifb_reg_set(port, index, temp); |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 44 | } |
| 45 | |
Aaro Koskinen | 459d2ea | 2011-03-13 12:26:28 +0200 | [diff] [blame] | 46 | void xgifb_reg_or(unsigned long port, u8 index, unsigned data_or) |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 47 | { |
Aaro Koskinen | d0e23bd | 2011-03-13 12:26:27 +0200 | [diff] [blame] | 48 | u8 temp; |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 49 | |
Aaro Koskinen | 459d2ea | 2011-03-13 12:26:28 +0200 | [diff] [blame] | 50 | temp = xgifb_reg_get(port, index); /* XGINew_Part1Port index 02 */ |
| 51 | temp |= data_or; |
| 52 | xgifb_reg_set(port, index, temp); |
apatard@mandriva.com | d7636e0 | 2010-05-19 10:44:14 +0200 | [diff] [blame] | 53 | } |