User`s guide

Aironet Wireless Communications, Inc. 7-3 Confidential and Proprietary
The following is sample code for accessing the PC4500/4800 I/O registers:
unsigned short Base4500IO; // I/O base address
#if IO_IS_16BIT
// I/O is 16-bit
#define OUT4500(register, u16value) outportw(Base4500IO+register, u16value)
#define IN4500(register) inportw(Base4500IO+register)
#else
// I/O is 8-bit
#define OUT4500(register, u16value) out4500_8bit(register, u16value)
#define IN4500(register) in4500_8bit(register)
void out4500_8bit(unsigned short register, unsigned short u16value)
{
push_interrupt_enable_state(); // save interrupt enable state
disable_interrupts(); // disable interrupts
outportb(Base4500IO+register+0, (char)(u16value & 0xFF));
outportb(Base4500IO+register+1, (char)(u16value >> 8));
pop_interrupt_enable_state; // restore interrupt enable state
}
unsigned short in4500_8bit(unsigned short register)
{
unsigned short u16RetVal;
push_interrupt_enable_state(); // save interrupt enable state
disable_interrupts(); // disable interrupts
u16RetVal = inportb(Base4500IO+register+0);
u16RetVal += ((u16)inportb(Base4500IO+register+1)) << 8;
pop_interrupt_enable_state; // restore interrupt enable state
}
#endif