Subversion Repositories HelenOS

Rev

Rev 3655 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3655 Rev 3657
Line 36... Line 36...
36
 
36
 
37
#include <genarch/kbd/ns16550.h>
37
#include <genarch/kbd/ns16550.h>
38
#include <genarch/kbd/key.h>
38
#include <genarch/kbd/key.h>
39
#include <genarch/kbd/scanc.h>
39
#include <genarch/kbd/scanc.h>
40
#include <genarch/kbd/scanc_sun.h>
40
#include <genarch/kbd/scanc_sun.h>
41
#ifndef ia64
-
 
42
#include <arch/drivers/kbd.h>
41
#include <arch/drivers/kbd.h>
-
 
42
#ifndef ia64
43
#include <arch/drivers/ns16550.h>
43
#include <arch/drivers/ns16550.h>
44
#endif
44
#endif
45
#include <ddi/irq.h>
45
#include <ddi/irq.h>
46
#include <ipc/irq.h>
46
#include <ipc/irq.h>
47
#include <cpu.h>
47
#include <cpu.h>
Line 128... Line 128...
128
    ns16550_irq.claim = ns16550_claim;
128
    ns16550_irq.claim = ns16550_claim;
129
    ns16550_irq.handler = ns16550_irq_handler;
129
    ns16550_irq.handler = ns16550_irq_handler;
130
    ns16550_irq.cir = cir;
130
    ns16550_irq.cir = cir;
131
    ns16550_irq.cir_arg = cir_arg;
131
    ns16550_irq.cir_arg = cir_arg;
132
    irq_register(&ns16550_irq);
132
    irq_register(&ns16550_irq);
-
 
133
 
-
 
134
 
-
 
135
    while ((ns16550_lsr_read(&ns16550) & LSR_DATA_READY))
-
 
136
        ns16550_rbr_read(&ns16550);
-
 
137
 
133
   
138
   
134
    sysinfo_set_item_val("kbd", NULL, true);
139
    sysinfo_set_item_val("kbd", NULL, true);
135
#ifndef ia64
-
 
136
    sysinfo_set_item_val("kbd.type", NULL, KBD_NS16550);
140
    sysinfo_set_item_val("kbd.type", NULL, KBD_NS16550);
137
#endif
-
 
138
    sysinfo_set_item_val("kbd.devno", NULL, devno);
141
    sysinfo_set_item_val("kbd.devno", NULL, devno);
139
    sysinfo_set_item_val("kbd.inr", NULL, inr);
142
    sysinfo_set_item_val("kbd.inr", NULL, inr);
140
    sysinfo_set_item_val("kbd.address.virtual", NULL, port);
143
    sysinfo_set_item_val("kbd.address.virtual", NULL, port);
-
 
144
    sysinfo_set_item_val("kbd.port", NULL, port);
141
 
145
 
142
#ifdef CONFIG_NS16550_INTERRUPT_DRIVEN
146
#ifdef CONFIG_NS16550_INTERRUPT_DRIVEN
143
    /* Enable interrupts */
147
    /* Enable interrupts */
144
        ns16550_ier_write(&ns16550, IER_ERBFI);
148
        ns16550_ier_write(&ns16550, IER_ERBFI);
145
    ns16550_mcr_write(&ns16550, MCR_OUT2);
149
    ns16550_mcr_write(&ns16550, MCR_OUT2);
146
#endif
150
#endif
147
 
151
 
148
#ifdef ia64
152
#ifdef ia64
149
        uint8_t c;
153
        uint8_t c;
-
 
154
        // This switches rbr & ier to mode when accept baudrate constant
150
        c = ns16550_lcr_read(&ns16550);
155
        c = ns16550_lcr_read(&ns16550);
151
        ns16550_lcr_write(&ns16550, 0x80 | c);
156
        ns16550_lcr_write(&ns16550, 0x80 | c);
152
        ns16550_rbr_write(&ns16550, 0x0c);
157
        ns16550_rbr_write(&ns16550, 0x0c);
153
        ns16550_ier_write(&ns16550, 0x00);
158
        ns16550_ier_write(&ns16550, 0x00);
154
        ns16550_lcr_write(&ns16550, c);
159
        ns16550_lcr_write(&ns16550, c);