Rev 1708 | Rev 1754 | Go to most recent revision | Show entire file | Regard 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 | trap_virtual_eoi(); |
327 | while ((i8042_status_read() & i8042_BUFFER_FULL_MASK)) { |
328 | x = i8042_data_read(); |
328 | x = i8042_data_read(); |
329 | if (x & KEY_RELEASE) |
329 | if (x & KEY_RELEASE) |
330 | key_released(x ^ KEY_RELEASE); |
330 | key_released(x ^ KEY_RELEASE); |
331 | else |
331 | else |
332 | key_pressed(x); |
332 | key_pressed(x); |
333 | } |
333 | } |
- | 334 | trap_virtual_eoi(); |
|
- | 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) { |
338 | /* wait */ |
340 | /* wait */ |
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); |