Changes in uspace/srv/hw/char/i8042/i8042.c [89c09ae:385a3d6] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hw/char/i8042/i8042.c
r89c09ae r385a3d6 68 68 #define i8042_KBD_TRANSLATE 0x40 69 69 70 /* Mouse constants */ 71 #define MOUSE_OUT_INIT 0xf4 72 #define MOUSE_ACK 0xfa 70 73 71 74 enum { … … 174 177 async_set_interrupt_received(i8042_irq_handler); 175 178 176 /* Disable kbd and aux */ 177 wait_ready(); 179 /* Disable kbd, enable mouse */ 178 180 pio_write_8(&i8042->status, i8042_CMD_WRITE_CMDB); 179 181 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(); 181 186 182 187 /* Flush all current IO */ 183 188 while (pio_read_8(&i8042->status) & i8042_OUTPUT_FULL) 184 189 (void) pio_read_8(&i8042->data); 190 191 i8042_port_write(DEVID_AUX, MOUSE_OUT_INIT); 185 192 186 193 i8042_kbd.cmds[0].addr = (void *) &((i8042_t *) i8042_kernel)->status; … … 188 195 ipc_register_irq(sysinfo_value("i8042.inr_a"), device_assign_devno(), 0, &i8042_kbd); 189 196 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 194 198 pio_write_8(&i8042->status, i8042_CMD_WRITE_CMDB); 195 199 wait_ready(); 196 200 pio_write_8(&i8042->data, i8042_KBD_IE | i8042_KBD_TRANSLATE | 197 201 i8042_AUX_IE); 202 wait_ready(); 198 203 199 204 return 0; … … 266 271 { 267 272 if (devid == DEVID_AUX) { 273 pio_write_8(&i8042->status, i8042_CMD_WRITE_AUX); 268 274 wait_ready(); 269 pio_write_8(&i8042->status, i8042_CMD_WRITE_AUX); 270 } 271 wait_ready(); 275 } 272 276 pio_write_8(&i8042->data, data); 277 wait_ready(); 273 278 } 274 279
Note:
See TracChangeset
for help on using the changeset viewer.