Subversion Repositories HelenOS

Rev

Rev 3661 | 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);