Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 1908 → Rev 1909

/trunk/kernel/arch/sparc64/src/drivers/kbd.c
68,6 → 68,9
name = ofw_tree_node_name(node);
/*
* Determine keyboard serial controller type.
*/
if (strcmp(name, "zs") == 0)
kbd_type = KBD_Z8530;
else if (strcmp(name, "su") == 0)
78,12 → 81,25
return;
}
/*
* Read 'interrupts' property.
*/
uint32_t interrupts;
prop = ofw_tree_getprop(node, "interrupts");
if (!prop || !prop->value)
panic("Can't find \"interrupts\" property.\n");
interrupts = *((uint32_t *) prop->value);
 
/*
* Read 'reg' property.
*/
prop = ofw_tree_getprop(node, "reg");
if (!prop)
if (!prop || !prop->value)
panic("Can't find \"reg\" property.\n");
uintptr_t pa;
size_t size;
int ino;
switch (kbd_type) {
case KBD_Z8530:
92,6 → 108,10
printf("Failed to determine keyboard address.\n");
return;
}
if (!ofw_fhc_map_interrupts(node->parent, ((ofw_fhc_reg_t *) prop->value), interrupts, &ino)) {
printf("Failed to determine keyboard interrupts.\n");
return;
}
break;
case KBD_NS16550:
size = ((ofw_ebus_reg_t *) prop->value)->size;
99,6 → 119,10
printf("Failed to determine keyboard address.\n");
return;
}
if (!ofw_ebus_map_interrupts(node->parent, ((ofw_ebus_reg_t *) prop->value), interrupts, &ino)) {
printf("Failed to determine keyboard interrupts.\n");
return;
}
break;
default:
panic("Unexpected type.\n");