Rev 1896 | Rev 1919 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1896 | Rev 1911 | ||
---|---|---|---|
Line 88... | Line 88... | ||
88 | stdin = &kbrd; |
88 | stdin = &kbrd; |
89 | 89 | ||
90 | sysinfo_set_item_val("kbd", NULL, true); |
90 | sysinfo_set_item_val("kbd", NULL, true); |
91 | sysinfo_set_item_val("kbd.irq", NULL, 0); |
91 | sysinfo_set_item_val("kbd.irq", NULL, 0); |
92 | sysinfo_set_item_val("kbd.address.virtual", NULL, (uintptr_t) kbd_virt_address); |
92 | sysinfo_set_item_val("kbd.address.virtual", NULL, (uintptr_t) kbd_virt_address); |
- | 93 | ||
- | 94 | ns16550_ier_write(IER_ERBFI); /* enable receiver interrupt */ |
|
- | 95 | ||
- | 96 | while (ns16550_lsr_read() & LSR_DATA_READY) |
|
- | 97 | (void) ns16550_rbr_read(); |
|
93 | } |
98 | } |
94 | 99 | ||
95 | /** Process ns16550 interrupt. |
100 | /** Process ns16550 interrupt. |
96 | * |
101 | * |
97 | * @param n Interrupt vector. |
102 | * @param n Interrupt vector. |
Line 142... | Line 147... | ||
142 | */ |
147 | */ |
143 | void ns16550_poll(void) |
148 | void ns16550_poll(void) |
144 | { |
149 | { |
145 | uint8_t x; |
150 | uint8_t x; |
146 | 151 | ||
147 | while (((x = ns16550_lsr_read() & LSR_DATA_READY))) { |
152 | while (ns16550_lsr_read() & LSR_DATA_READY) { |
148 | x = ns16550_rbr_read(); |
153 | x = ns16550_rbr_read(); |
149 | if (x != IGNORE_CODE) { |
154 | if (x != IGNORE_CODE) { |
150 | if (x & KEY_RELEASE) |
155 | if (x & KEY_RELEASE) |
151 | key_released(x ^ KEY_RELEASE); |
156 | key_released(x ^ KEY_RELEASE); |
152 | else |
157 | else |