54 lines
		
	
	
	
		
			858 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			54 lines
		
	
	
	
		
			858 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | #ifndef W83977AF_H
 | ||
|  | #define W83977AF_H
 | ||
|  | 
 | ||
|  | #define W977_EFIO_BASE 0x370
 | ||
|  | #define W977_EFIO2_BASE 0x3f0
 | ||
|  | #define W977_DEVICE_IR 0x06
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * Enter extended function mode | ||
|  |  */ | ||
|  | static inline void w977_efm_enter(unsigned int efio) | ||
|  | { | ||
|  |         outb(0x87, efio); | ||
|  |         outb(0x87, efio); | ||
|  | } | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * Select a device to configure  | ||
|  |  */ | ||
|  | 
 | ||
|  | static inline void w977_select_device(__u8 devnum, unsigned int efio) | ||
|  | { | ||
|  | 	outb(0x07, efio); | ||
|  | 	outb(devnum, efio+1); | ||
|  | }  | ||
|  | 
 | ||
|  | /* 
 | ||
|  |  * Write a byte to a register | ||
|  |  */ | ||
|  | static inline void w977_write_reg(__u8 reg, __u8 value, unsigned int efio) | ||
|  | { | ||
|  | 	outb(reg, efio); | ||
|  | 	outb(value, efio+1); | ||
|  | } | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * read a byte from a register | ||
|  |  */ | ||
|  | static inline __u8 w977_read_reg(__u8 reg, unsigned int efio) | ||
|  | { | ||
|  | 	outb(reg, efio); | ||
|  | 	return inb(efio+1); | ||
|  | } | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * Exit extended function mode | ||
|  |  */ | ||
|  | static inline void w977_efm_exit(unsigned int efio) | ||
|  | { | ||
|  | 	outb(0xAA, efio); | ||
|  | } | ||
|  | #endif
 |