18#ifndef __FENNIX_API_AIP_H__
19#define __FENNIX_API_AIP_H__
24#define PIC1_DATA (PIC1_CMD + 1)
26#define PIC2_DATA (PIC2_CMD + 1)
30#define PS2_STATUS 0x64
31#define PS2_CMD PS2_STATUS
33#define PS2_TEST_PASSED 0x55
34#define PS2_TEST_FAILED 0xFC
36#define PS2_CMD_READ_CONFIG 0x20
37#define PS2_CMD_READ_CONFIG_N(n) (PS2_CMD_READ_CONFIG + n)
38#define PS2_CMD_WRITE_CONFIG 0x60
39#define PS2_CMD_WRITE_CONFIG_N(n) (PS2_CMD_WRITE_CONFIG + n)
40#define PS2_CMD_DISABLE_PORT_2 0xA7
41#define PS2_CMD_ENABLE_PORT_2 0xA8
42#define PS2_CMD_TEST_PORT_2 0xA9
43#define PS2_CMD_TEST_CONTROLLER 0xAA
44#define PS2_CMD_TEST_PORT_1 0xAB
45#define PS2_CMD_DIAGNOSTIC_DUMP 0xAC
46#define PS2_CMD_DISABLE_PORT_1 0xAD
47#define PS2_CMD_ENABLE_PORT_1 0xAE
48#define PS2_CMD_READ_INPUT_PORT 0xC0
49#define PS2_CMD_COPY_INPUT_0_3_TO_4_7_STATUS 0xC1
50#define PS2_CMD_COPY_INPUT_4_7_TO_4_7_STATUS 0xC2
51#define PS2_CMD_READ_OUTPUT_PORT 0xD0
52#define PS2_CMD_WRITE_NEXT_BYTE_TO_OUTPUT_PORT 0xD1
53#define PS2_CMD_WRITE_NEXT_BYTE_TO_PS2_PORT_1_OUTPUT 0xD2
54#define PS2_CMD_WRITE_NEXT_BYTE_TO_PS2_PORT_2_OUTPUT 0xD3
55#define PS2_CMD_WRITE_NEXT_BYTE_TO_PS2_PORT_2_INPUT 0xD4
56#define PS2_CMD_PULSE_OUTPUT_LINE(n) (0xF0 + n)
62 uint8_t OutputBufferFull : 1;
63 uint8_t InputBufferFull : 1;
64 uint8_t SystemFlag : 1;
65 uint8_t CommandData : 1;
68 uint8_t TimeoutError : 1;
69 uint8_t ParityError : 1;
78 uint8_t Port1Interrupt : 1;
79 uint8_t Port2Interrupt : 1;
80 uint8_t SystemFlag : 1;
82 uint8_t Port1Clock : 1;
83 uint8_t Port2Clock : 1;
84 uint8_t Port1Translation : 1;
94 uint8_t SystemReset : 1;
96 uint8_t Port2Clock : 1;
97 uint8_t Port2Data : 1;
98 uint8_t Port1OutputBufferFull : 1;
99 uint8_t Port2OutputBufferFull : 1;
100 uint8_t Port1InputBufferFull : 1;
101 uint8_t Port2InputBufferFull : 1;
120#define WaitOutput PS2Wait(DriverID, true)
121#define WaitInput PS2Wait(DriverID, false)
123#define PS2_KBD_CMD_SET_LEDS 0xED
124#define PS2_KBD_CMD_ECHO 0xEE
125#define PS2_KBD_CMD_SCAN_CODE_SET 0xF0
126#define PS2_KBD_CMD_IDENTIFY 0xF2
127#define PS2_KBD_CMD_TYPEMATIC 0xF3
128#define PS2_KBD_CMD_ENABLE_SCANNING 0xF4
129#define PS2_KBD_CMD_DISABLE_SCANNING 0xF5
130#define PS2_KBD_CMD_DEFAULTS 0xF6
131#define PS2_KBD_CMD_ALL_TYPEMATIC 0xF7
132#define PS2_KBD_CMD_ALL_MAKE_RELEASE 0xF8
133#define PS2_KBD_CMD_ALL_MAKE 0xF9
134#define PS2_KBD_CMD_ALL_TYPEMATIC_MAKE_RELEASE 0xFA
135#define PS2_KBD_CMD_SPECIFIC_TYPEMATIC 0xFB
136#define PS2_KBD_CMD_SPECIFIC_MAKE_RELEASE 0xFC
137#define PS2_KBD_CMD_SPECIFIC_MAKE 0xFD
138#define PS2_KBD_CMD_RESEND 0xFE
139#define PS2_KBD_CMD_RESET 0xFF
141#define PS2_KBD_RESP_ACK 0xFA
142#define PS2_KBD_RESP_ECHO 0xEE
143#define PS2_KBD_RESP_RESEND 0xFE
144#define PS2_KBD_RESP_TEST_PASSED 0xAA
145#define PS2_KBD_RESP_TEST_FAILED 0xFC
146#define PS2_KBD_RESP_TEST_FAILED_2 0xFD
175 uint8_t RepeatRate : 5;
193#define PS2_MOUSE_CMD_SET_SCALING_1_1 0xE6
194#define PS2_MOUSE_CMD_SET_SCALING_2_1 0xE7
195#define PS2_MOUSE_CMD_SET_RESOLUTION 0xE8
196#define PS2_MOUSE_CMD_GET_STATUS 0xE9
197#define PS2_MOUSE_CMD_SET_STREAM_MODE 0xEA
198#define PS2_MOUSE_CMD_READ_DATA 0xEB
199#define PS2_MOUSE_CMD_RESET_WRAP_MODE 0xEC
200#define PS2_MOUSE_CMD_SET_WRAP_MODE 0xEE
201#define PS2_MOUSE_CMD_SET_REMOTE_MODE 0xF0
202#define PS2_MOUSE_CMD_READ_ID 0xF2
204#define PS2_MOUSE_CMD_SET_SAMPLE_RATE 0xF3
205#define PS2_MOUSE_CMD_ENABLE_DATA_REPORTING 0xF4
206#define PS2_MOUSE_CMD_DISABLE_DATA_REPORTING 0xF5
207#define PS2_MOUSE_CMD_SET_DEFAULTS 0xF6
208#define PS2_MOUSE_CMD_RESEND 0xFE
209#define PS2_MOUSE_CMD_RESET 0xFF
211#define PS2_MOUSE_RESP_ACK 0xFA
212#define PS2_MOUSE_RESP_RESEND 0xFE
213#define PS2_MOUSE_RESP_TEST_PASSED 0xAA
214#define PS2_MOUSE_RESP_TEST_FAILED 0xFC
void PIC_EOI(uint8_t IRQ)
void PS2WriteCommand(uint8_t Command)
uint8_t PS2ReadAfterACK()
@ PS2_KBD_SCAN_CODE_GET_CURRENT
@ PS2_KBD_SCAN_CODE_SET_3
@ PS2_KBD_SCAN_CODE_SET_2
@ PS2_KBD_SCAN_CODE_SET_1
void IRQ_MASK(uint8_t IRQ)
@ PS2_KBD_LED_SCROLL_LOCK
void PS2ClearOutputBuffer()
void IRQ_UNMASK(uint8_t IRQ)
void PS2WriteData(uint8_t Data)
void PS2Wait(const bool Output)