/branches/arm/kernel/genarch/src/kbd/scanc_pl050.c |
---|
53,7 → 53,7 |
SPECIAL, /* 0x0B - F10 */ |
SPECIAL, /* 0x0C - F4 */ |
'\t', /* 0x0D - Tab */ |
'~', |
'`', |
SPECIAL, /* 0x0F */ |
SPECIAL, /* 0x10 */ |
SPECIAL, /* 0x11 - LAlt */ |
86,15 → 86,15 |
'.', '/', 'l', ';', 'p', '-', |
SPECIAL, /* 0x4F */ |
SPECIAL, /* 0x50 */ |
SPECIAL, /* 0x51 */ |
'\'', |
SPECIAL, /* 0x52 */ |
SPECIAL, /* 0x53 */ |
'{', '=', |
'[', '=', |
SPECIAL, /* 0x56 */ |
SPECIAL, /* 0x57 */ |
SPECIAL, /* 0x58 - Caps Lock */ |
SPECIAL, /* 0x59 - RShift */ |
'\n', '}', |
'\n', ']', |
SPECIAL, /* 0x5C */ |
'\\', |
SPECIAL, /* 0x5E */ |
182,8 → 182,8 |
'>', '?', 'L', ':', 'P', '_', |
SPECIAL, /* 0x4F */ |
SPECIAL, /* 0x50 */ |
SPECIAL, /* 0x51 */ |
'"', |
SPECIAL, /* 0x52 */ |
SPECIAL, /* 0x53 */ |
'{', '+', |
SPECIAL, /* 0x56 */ |
/branches/arm/kernel/arch/arm32/src/exception.c |
---|
100,9 → 100,9 |
"mov r2, lr \n" |
"stmfd r13!, {r4-r12} \n" |
"mov r1, r13 \n" |
/* the following two lines are for debugging */ |
/* the following two lines are for debugging */ |
"mov sp, #0 \n" |
"mov lr, #0 \n" |
"mov lr, #0 \n" |
"msr cpsr_c, r0 \n" |
"ldmfd r13!, {r4, r5, r6, r7} \n" |
/branches/arm/kernel/arch/arm32/src/drivers/pl050.c |
---|
116,7 → 116,7 |
static void pl050_irq_handler(irq_t *irq, void *arg, ...) |
{ |
static int key_released_flag = 0; |
static uint8_t prev_char = 0xFF; |
static int caps_count = 0; |
if (irq->notif_cfg.notify && irq->notif_cfg.answerbox) |
ipc_irq_send_notif(irq); |
129,16 → 129,25 |
if (data == PL050_ESC_KEY) |
return; |
if (data == 0x58) { |
if (caps_count == 2) { |
caps_count = 0; |
return; |
} else if (key_released_flag && !caps_count) { |
key_released_flag = 0; |
return; |
} |
caps_count++; |
} |
if (data == PL050_KEY_RELEASE) { |
key_released_flag = 1; |
} else { |
if (key_released_flag && prev_char == data) { |
prev_char = 0xFF; |
if (key_released_flag) { |
key_released(data); |
} else { |
key_pressed(data); |
prev_char = data; |
} |
key_released_flag = 0; |
} |
161,7 → 170,7 |
pl050_kbd_pbase = pbase; |
pl050_kbd_vbase = vbase; |
irq_register(&pl050_kbd_irq); |
val = PL050_CR_RXINTR | PL050_CR_INTR | PL050_CR_FKMIC; |
val = PL050_CR_RXINTR | PL050_CR_INTR; |
pl050_crwrite(val); |
190,7 → 199,7 |
char pl050_key_read(chardev_t *d) |
{ |
char ch; |
printf("entering key_read\n"); |
while(!(ch = active_read_buff_read())) { |
uint8_t x; |
while (!(pl050_statusread() & PL050_STAT_RXFULL)) |
212,6 → 221,7 |
{ |
uint8_t x; |
printf("entering poll\n"); |
while (((x = pl050_statusread() & PL050_STAT_RXFULL))) { |
x = pl050_dataread(); |
if (x & KEY_RELEASE) |
/branches/arm/kernel/arch/arm32/src/drivers/qemu.c |
---|
213,6 → 213,7 |
* We are holding a lock which prevents preemption. |
* Release the lock, call clock() and reacquire the lock again. |
*/ |
*((uint32_t*) qemu_icp_hw_map.rtc1_intrclr) = 1; |
spinlock_unlock(&irq->lock); |
clock(); |