blob: b5c99891ead4f0cb53d736be1868bd647e102c1a [file] [log] [blame]
Aaro Koskinen4b495462011-09-13 22:49:32 +03001#include <linux/io.h>
2#include <linux/types.h>
3
apatard@mandriva.comd7636e02010-05-19 10:44:14 +02004#include "vb_def.h"
5#include "vgatypes.h"
6#include "vb_struct.h"
7
apatard@mandriva.comd7636e02010-05-19 10:44:14 +02008#include "XGIfb.h"
apatard@mandriva.comd7636e02010-05-19 10:44:14 +02009
Aaro Koskinen0998e1d2011-03-13 12:26:16 +020010#include "vb_util.h"
apatard@mandriva.comd7636e02010-05-19 10:44:14 +020011
Aaro Koskinend0e23bd2011-03-13 12:26:27 +020012void xgifb_reg_set(unsigned long port, u8 index, u8 data)
apatard@mandriva.comd7636e02010-05-19 10:44:14 +020013{
Bill Pemberton1e59f712010-06-17 13:10:41 -040014 outb(index, port);
15 outb(data, port + 1);
apatard@mandriva.comd7636e02010-05-19 10:44:14 +020016}
17
Aaro Koskinend0e23bd2011-03-13 12:26:27 +020018u8 xgifb_reg_get(unsigned long port, u8 index)
apatard@mandriva.comd7636e02010-05-19 10:44:14 +020019{
Aaro Koskinend0e23bd2011-03-13 12:26:27 +020020 u8 data;
apatard@mandriva.comd7636e02010-05-19 10:44:14 +020021
Prashant P. Shah602f2c92010-09-04 12:09:32 +053022 outb(index, port);
23 data = inb(port + 1);
24 return data;
apatard@mandriva.comd7636e02010-05-19 10:44:14 +020025}
26
Aaro Koskinen459d2ea2011-03-13 12:26:28 +020027void xgifb_reg_and_or(unsigned long port, u8 index,
28 unsigned data_and, unsigned data_or)
apatard@mandriva.comd7636e02010-05-19 10:44:14 +020029{
Aaro Koskinend0e23bd2011-03-13 12:26:27 +020030 u8 temp;
apatard@mandriva.comd7636e02010-05-19 10:44:14 +020031
Aaro Koskinen459d2ea2011-03-13 12:26:28 +020032 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.comd7636e02010-05-19 10:44:14 +020035}
36
Aaro Koskinen459d2ea2011-03-13 12:26:28 +020037void xgifb_reg_and(unsigned long port, u8 index, unsigned data_and)
apatard@mandriva.comd7636e02010-05-19 10:44:14 +020038{
Aaro Koskinend0e23bd2011-03-13 12:26:27 +020039 u8 temp;
apatard@mandriva.comd7636e02010-05-19 10:44:14 +020040
Aaro Koskinen459d2ea2011-03-13 12:26:28 +020041 temp = xgifb_reg_get(port, index); /* XGINew_Part1Port index 02 */
42 temp &= data_and;
43 xgifb_reg_set(port, index, temp);
apatard@mandriva.comd7636e02010-05-19 10:44:14 +020044}
45
Aaro Koskinen459d2ea2011-03-13 12:26:28 +020046void xgifb_reg_or(unsigned long port, u8 index, unsigned data_or)
apatard@mandriva.comd7636e02010-05-19 10:44:14 +020047{
Aaro Koskinend0e23bd2011-03-13 12:26:27 +020048 u8 temp;
apatard@mandriva.comd7636e02010-05-19 10:44:14 +020049
Aaro Koskinen459d2ea2011-03-13 12:26:28 +020050 temp = xgifb_reg_get(port, index); /* XGINew_Part1Port index 02 */
51 temp |= data_or;
52 xgifb_reg_set(port, index, temp);
apatard@mandriva.comd7636e02010-05-19 10:44:14 +020053}