1 #ifndef W83977AF_H
2 #define W83977AF_H
3 
4 #define W977_EFIO_BASE 0x370
5 #define W977_EFIO2_BASE 0x3f0
6 #define W977_DEVICE_IR 0x06
7 
8 
9 /*
10  * Enter extended function mode
11  */
w977_efm_enter(unsigned int efio)12 static inline void w977_efm_enter(unsigned int efio)
13 {
14         outb(0x87, efio);
15         outb(0x87, efio);
16 }
17 
18 /*
19  * Select a device to configure
20  */
21 
w977_select_device(__u8 devnum,unsigned int efio)22 static inline void w977_select_device(__u8 devnum, unsigned int efio)
23 {
24 	outb(0x07, efio);
25 	outb(devnum, efio+1);
26 }
27 
28 /*
29  * Write a byte to a register
30  */
w977_write_reg(__u8 reg,__u8 value,unsigned int efio)31 static inline void w977_write_reg(__u8 reg, __u8 value, unsigned int efio)
32 {
33 	outb(reg, efio);
34 	outb(value, efio+1);
35 }
36 
37 /*
38  * read a byte from a register
39  */
w977_read_reg(__u8 reg,unsigned int efio)40 static inline __u8 w977_read_reg(__u8 reg, unsigned int efio)
41 {
42 	outb(reg, efio);
43 	return inb(efio+1);
44 }
45 
46 /*
47  * Exit extended function mode
48  */
w977_efm_exit(unsigned int efio)49 static inline void w977_efm_exit(unsigned int efio)
50 {
51 	outb(0xAA, efio);
52 }
53 #endif
54