Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 1920 → Rev 1921

/trunk/kernel/arch/sparc64/src/drivers/kbd.c
49,12 → 49,8
#include <func.h>
#include <print.h>
 
volatile uint8_t *kbd_virt_address = NULL;
 
kbd_type_t kbd_type = KBD_UNKNOWN;
 
static irq_t kbd_irq;
 
/** Initialize keyboard.
*
* Traverse OpenFirmware device tree in order to find necessary
102,10 → 98,9
uintptr_t pa;
size_t size;
int inr;
inr_t inr;
devno_t devno = device_assign_devno();
irq_initialize(&kbd_irq);
switch (kbd_type) {
case KBD_Z8530:
size = ((ofw_fhc_reg_t *) prop->value)->size;
116,13 → 111,6
if (!ofw_fhc_map_interrupt(node->parent, ((ofw_fhc_reg_t *) prop->value), interrupts, &inr)) {
printf("Failed to determine keyboard interrupt.\n");
return;
} else {
kbd_irq.inr = inr;
kbd_irq.devno = device_assign_devno();
kbd_irq.trigger = IRQ_TRIGGER_LEVEL;
kbd_irq.claim = z8530_claim;
kbd_irq.handler = z8530_irq_handler;
irq_register(&kbd_irq);
}
break;
135,14 → 123,7
if (!ofw_ebus_map_interrupt(node->parent, ((ofw_ebus_reg_t *) prop->value), interrupts, &inr)) {
printf("Failed to determine keyboard interrupt.\n");
return;
} else {
kbd_irq.inr = inr;
kbd_irq.devno = device_assign_devno();
kbd_irq.trigger = IRQ_TRIGGER_LEVEL;
kbd_irq.claim = ns16550_claim;
kbd_irq.handler = ns16550_irq_handler;
irq_register(&kbd_irq);
}
};
break;
 
default:
157,17 → 138,17
*/
aligned_addr = ALIGN_DOWN(pa, PAGE_SIZE);
offset = pa - aligned_addr;
kbd_virt_address = (uint8_t *) hw_map(aligned_addr, offset + size) + offset;
uintptr_t vaddr = hw_map(aligned_addr, offset + size) + offset;
 
switch (kbd_type) {
#ifdef CONFIG_Z8530
case KBD_Z8530:
z8530_init();
z8530_init(devno, inr, vaddr);
break;
#endif
#ifdef CONFIG_NS16550
case KBD_NS16550:
ns16550_init();
ns16550_init(devno, inr, vaddr);
break;
#endif
default: