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
							 |