Line 94... |
Line 94... |
|
|
/* Keyboard slowdown factor */
|
/* Keyboard slowdown factor */
|
long slowdown;
|
long slowdown;
|
|
|
/* Cofiguration */
|
/* Cofiguration */
|
|
int enabled;
|
int irq;
|
int irq;
|
oraddr_t baseaddr;
|
oraddr_t baseaddr;
|
char *rxfile;
|
char *rxfile;
|
};
|
};
|
|
|
Line 314... |
Line 315... |
fprintf(stderr, "Peripheral KBD: Run out of memory\n");
|
fprintf(stderr, "Peripheral KBD: Run out of memory\n");
|
exit(-1);
|
exit(-1);
|
}
|
}
|
}
|
}
|
|
|
|
void kbd_enabled(union param_val val, void *dat)
|
|
{
|
|
struct kbd_state *kbd = dat;
|
|
kbd->enabled = val.int_val;
|
|
}
|
|
|
void *kbd_sec_start(void)
|
void *kbd_sec_start(void)
|
{
|
{
|
struct kbd_state *new = malloc(sizeof(struct kbd_state));
|
struct kbd_state *new = malloc(sizeof(struct kbd_state));
|
|
|
if(!new) {
|
if(!new) {
|
Line 327... |
Line 334... |
|
|
new->buf_count = 0;
|
new->buf_count = 0;
|
new->buf_head = 0;
|
new->buf_head = 0;
|
new->buf_tail = 0;
|
new->buf_tail = 0;
|
new->rxfs = NULL;
|
new->rxfs = NULL;
|
|
new->enabled = 1;
|
|
|
return new;
|
return new;
|
}
|
}
|
|
|
void kbd_sec_end(void *dat)
|
void kbd_sec_end(void *dat)
|
{
|
{
|
struct kbd_state *kbd = dat;
|
struct kbd_state *kbd = dat;
|
|
|
|
if(!kbd->enabled) {
|
|
free(dat);
|
|
return;
|
|
}
|
|
|
register_memoryarea(kbd->baseaddr, KBD_SPACE, 1, 0, kbd_read8, kbd_write8, dat);
|
register_memoryarea(kbd->baseaddr, KBD_SPACE, 1, 0, kbd_read8, kbd_write8, dat);
|
reg_sim_reset(kbd_reset, dat);
|
reg_sim_reset(kbd_reset, dat);
|
reg_sim_stat(kbd_info, dat);
|
reg_sim_stat(kbd_info, dat);
|
}
|
}
|
|
|
void reg_kbd_sec(void)
|
void reg_kbd_sec(void)
|
{
|
{
|
struct config_section *sec = reg_config_sec("kbd", kbd_sec_start, kbd_sec_end);
|
struct config_section *sec = reg_config_sec("kbd", kbd_sec_start, kbd_sec_end);
|
|
|
reg_config_param(sec, "baseaddr", paramt_int, kbd_baseaddr);
|
reg_config_param(sec, "baseaddr", paramt_addr, kbd_baseaddr);
|
|
reg_config_param(sec, "enabled", paramt_int, kbd_enabled);
|
reg_config_param(sec, "irq", paramt_int, kbd_irq);
|
reg_config_param(sec, "irq", paramt_int, kbd_irq);
|
reg_config_param(sec, "rxfile", paramt_str, kbd_rxfile);
|
reg_config_param(sec, "rxfile", paramt_str, kbd_rxfile);
|
}
|
}
|
|
|
No newline at end of file
|
No newline at end of file
|