Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hw/char/i8042/i8042.c

    r89c09ae r385a3d6  
    6868#define i8042_KBD_TRANSLATE     0x40
    6969
     70/* Mouse constants */
     71#define MOUSE_OUT_INIT  0xf4
     72#define MOUSE_ACK       0xfa
    7073
    7174enum {
     
    174177        async_set_interrupt_received(i8042_irq_handler);
    175178
    176         /* Disable kbd and aux */
    177         wait_ready();
     179        /* Disable kbd, enable mouse */
    178180        pio_write_8(&i8042->status, i8042_CMD_WRITE_CMDB);
    179181        wait_ready();
    180         pio_write_8(&i8042->data, i8042_KBD_DISABLE | i8042_AUX_DISABLE);
     182        pio_write_8(&i8042->status, i8042_CMD_WRITE_CMDB);
     183        wait_ready();
     184        pio_write_8(&i8042->data, i8042_KBD_DISABLE);
     185        wait_ready();
    181186
    182187        /* Flush all current IO */
    183188        while (pio_read_8(&i8042->status) & i8042_OUTPUT_FULL)
    184189                (void) pio_read_8(&i8042->data);
     190
     191        i8042_port_write(DEVID_AUX, MOUSE_OUT_INIT);
    185192
    186193        i8042_kbd.cmds[0].addr = (void *) &((i8042_t *) i8042_kernel)->status;
     
    188195        ipc_register_irq(sysinfo_value("i8042.inr_a"), device_assign_devno(), 0, &i8042_kbd);
    189196        ipc_register_irq(sysinfo_value("i8042.inr_b"), device_assign_devno(), 0, &i8042_kbd);
    190         printf("i8042: registered for interrupts %d and %d\n",
    191             sysinfo_value("i8042.inr_a"), sysinfo_value("i8042.inr_b"));
    192 
    193         wait_ready();
     197
    194198        pio_write_8(&i8042->status, i8042_CMD_WRITE_CMDB);
    195199        wait_ready();
    196200        pio_write_8(&i8042->data, i8042_KBD_IE | i8042_KBD_TRANSLATE |
    197201            i8042_AUX_IE);
     202        wait_ready();
    198203
    199204        return 0;
     
    266271{
    267272        if (devid == DEVID_AUX) {
     273                pio_write_8(&i8042->status, i8042_CMD_WRITE_AUX);
    268274                wait_ready();
    269                 pio_write_8(&i8042->status, i8042_CMD_WRITE_AUX);
    270         }
    271         wait_ready();
     275        }
    272276        pio_write_8(&i8042->data, data);
     277        wait_ready();
    273278}
    274279
Note: See TracChangeset for help on using the changeset viewer.