Rev 1708 | Rev 1754 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1708 | Rev 1753 | ||
---|---|---|---|
Line 322... | Line 322... | ||
322 | */ |
322 | */ |
323 | void i8042_interrupt(int n, istate_t *istate) |
323 | void i8042_interrupt(int n, istate_t *istate) |
324 | { |
324 | { |
325 | __u8 x; |
325 | __u8 x; |
326 | 326 | ||
- | 327 | while ((i8042_status_read() & i8042_BUFFER_FULL_MASK)) { |
|
- | 328 | x = i8042_data_read(); |
|
- | 329 | if (x & KEY_RELEASE) |
|
- | 330 | key_released(x ^ KEY_RELEASE); |
|
- | 331 | else |
|
- | 332 | key_pressed(x); |
|
- | 333 | } |
|
327 | trap_virtual_eoi(); |
334 | trap_virtual_eoi(); |
328 | x = i8042_data_read(); |
- | |
329 | if (x & KEY_RELEASE) |
- | |
330 | key_released(x ^ KEY_RELEASE); |
- | |
331 | else |
- | |
332 | key_pressed(x); |
- | |
333 | } |
335 | } |
334 | 336 | ||
335 | /** Wait until the controller reads its data. */ |
337 | /** Wait until the controller reads its data. */ |
336 | void i8042_wait(void) { |
338 | void i8042_wait(void) { |
337 | while (i8042_status_read() & i8042_WAIT_MASK) { |
339 | while (i8042_status_read() & i8042_WAIT_MASK) { |
Line 539... | Line 541... | ||
539 | { |
541 | { |
540 | char ch; |
542 | char ch; |
541 | 543 | ||
542 | while(!(ch = active_read_buff_read())) { |
544 | while(!(ch = active_read_buff_read())) { |
543 | __u8 x; |
545 | __u8 x; |
544 | while (!((x=i8042_status_read() & i8042_BUFFER_FULL_MASK))) |
546 | while (!(i8042_status_read() & i8042_BUFFER_FULL_MASK)) |
545 | ; |
547 | ; |
546 | x = i8042_data_read(); |
548 | x = i8042_data_read(); |
547 | if (x != IGNORE_CODE) { |
549 | if (x != IGNORE_CODE) { |
548 | if (x & KEY_RELEASE) |
550 | if (x & KEY_RELEASE) |
549 | key_released(x ^ KEY_RELEASE); |
551 | key_released(x ^ KEY_RELEASE); |