Changeset 8513ad7 in mainline for uspace


Ignore:
Timestamp:
2006-10-17T19:18:49Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
4874c2d
Parents:
e60293d
Message:

Add support for IPC notifications even for polled ns16550 based keyboard.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/kbd/arch/sparc64/src/kbd.c

    re60293d r8513ad7  
    4747#define KBD_ALL_KEYS_UP         0x7f
    4848
     49/** Top-half pseudocode for z8530. */
    4950irq_cmd_t z8530_cmds[] = {
    50         { CMD_MEM_READ_1, 0, 0, 1 }
     51        {
     52                CMD_MEM_READ_1,
     53                0,                      /**< Address. Will be patched in run-time. */
     54                0,                      /**< Value. Not used. */
     55                1                       /**< Arg 1 will contain the result. */
     56        }
    5157};
    5258       
     
    5662};
    5763
     64/** Top-half pseudocode for ns16550. */
     65irq_cmd_t ns16550_cmds[] = {
     66        {
     67                CMD_MEM_READ_1,
     68                0,                      /**< Address. Will be patched in run-time. */
     69                0,                      /**< Value. Not used. */
     70                1                       /**< Arg 1 will contain the result. */
     71        }
     72};
     73       
     74irq_code_t ns16550_kbd = {
     75        1,
     76        ns16550_cmds
     77};
     78
     79#define KBD_Z8530       1
     80#define KBD_NS16550     2
     81
    5882int kbd_arch_init(void)
    5983{
    60         z8530_cmds[0].addr = (void *) sysinfo_value("kbd.address.virtual") + 6;
    61         ipc_register_irq(sysinfo_value("kbd.inr"), sysinfo_value("kbd.devno"), 0, &z8530_kbd);
     84        int type = sysinfo_value("kbd.type");
     85        switch (type) {
     86        case KBD_Z8530:
     87                z8530_cmds[0].addr = (void *) sysinfo_value("kbd.address.virtual") + 6;
     88                ipc_register_irq(sysinfo_value("kbd.inr"), sysinfo_value("kbd.devno"), 0, &z8530_kbd);
     89                break;
     90        case KBD_NS16550:
     91                ns16550_cmds[0].addr = (void *) sysinfo_value("kbd.address.virtual");
     92                ipc_register_irq(sysinfo_value("kbd.inr"), sysinfo_value("kbd.devno"), 0, &ns16550_kbd);
     93                break;
     94        default:
     95                break;
     96        }
    6297        return 0;
    6398}
Note: See TracChangeset for help on using the changeset viewer.