Rev 3661 | Rev 3906 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3661 | Rev 3877 | ||
---|---|---|---|
Line 35... | Line 35... | ||
35 | * |
35 | * |
36 | * It takes care of low-level keyboard functions. |
36 | * It takes care of low-level keyboard functions. |
37 | */ |
37 | */ |
38 | 38 | ||
39 | #include <genarch/kbd/i8042.h> |
39 | #include <genarch/kbd/i8042.h> |
40 | #ifdef ia64 |
- | |
41 | #include <arch/drivers/kbd.h> |
40 | #include <arch/drivers/kbd.h> |
42 | #endif |
- | |
43 | #include <genarch/kbd/key.h> |
41 | #include <genarch/kbd/key.h> |
44 | #include <genarch/kbd/scanc.h> |
42 | #include <genarch/kbd/scanc.h> |
45 | #include <genarch/kbd/scanc_pc.h> |
43 | #include <genarch/kbd/scanc_pc.h> |
46 | #include <arch/drivers/i8042.h> |
44 | #include <arch/drivers/i8042.h> |
47 | #include <cpu.h> |
45 | #include <cpu.h> |
Line 169... | Line 167... | ||
169 | i8042_mouse_irq.devno = mouse_devno; |
167 | i8042_mouse_irq.devno = mouse_devno; |
170 | i8042_mouse_irq.inr = mouse_inr; |
168 | i8042_mouse_irq.inr = mouse_inr; |
171 | i8042_mouse_irq.claim = i8042_claim; |
169 | i8042_mouse_irq.claim = i8042_claim; |
172 | i8042_mouse_irq.handler = i8042_irq_handler; |
170 | i8042_mouse_irq.handler = i8042_irq_handler; |
173 | irq_register(&i8042_mouse_irq); |
171 | irq_register(&i8042_mouse_irq); |
174 | #ifndef ia64 |
172 | |
175 | trap_virtual_enable_irqs(1 << kbd_inr); |
173 | trap_virtual_enable_irqs(1 << kbd_inr); |
176 | trap_virtual_enable_irqs(1 << mouse_inr); |
174 | trap_virtual_enable_irqs(1 << mouse_inr); |
177 | #endif |
175 | |
178 | /* |
176 | /* |
179 | * Clear input buffer. |
177 | * Clear input buffer. |
180 | * Number of iterations is limited to prevent infinite looping. |
178 | * Number of iterations is limited to prevent infinite looping. |
181 | */ |
179 | */ |
182 | int i; |
180 | int i; |
Line 211... | Line 209... | ||
211 | { |
209 | { |
212 | char ch; |
210 | char ch; |
213 | 211 | ||
214 | while(!(ch = active_read_buff_read())) { |
212 | while (!(ch = active_read_buff_read())) { |
215 | uint8_t x; |
213 | uint8_t x; |
- | 214 | ||
216 | while (!(i8042_status_read() & i8042_BUFFER_FULL_MASK)) |
215 | while (!(i8042_status_read() & i8042_BUFFER_FULL_MASK)); |
217 | ; |
216 | |
218 | x = i8042_data_read(); |
217 | x = i8042_data_read(); |
219 | if (x & KEY_RELEASE) |
218 | if (x & KEY_RELEASE) |
220 | key_released(x ^ KEY_RELEASE); |
219 | key_released(x ^ KEY_RELEASE); |
221 | else |
220 | else |
222 | active_read_key_pressed(x); |
221 | active_read_key_pressed(x); |