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