Changes in uspace/drv/char/i8042/i8042.c [fafb8e5:797ab95] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/char/i8042/i8042.c
rfafb8e5 r797ab95 1 1 /* 2 * Copyright (c) 2025 Jiri Svoboda 2 3 * Copyright (c) 2001-2004 Jakub Jermar 3 4 * Copyright (c) 2006 Josef Cejka 4 * Copyright (c) 2017 Jiri Svoboda5 5 * Copyright (c) 2011 Jan Vesely 6 6 * All rights reserved. … … 123 123 * Write new data to the corresponding buffer. 124 124 * 125 * @param call pointerr to call data. 126 * @param dev Device that caued the interrupt. 127 * 128 */ 129 static void i8042_irq_handler(ipc_call_t *call, ddf_dev_t *dev) 130 { 131 i8042_t *controller = ddf_dev_data_get(dev); 125 * @param call Pointer to call data. 126 * @param arg Argument (i8042_t *) 127 */ 128 static void i8042_irq_handler(ipc_call_t *call, void *arg) 129 { 130 i8042_t *controller = (i8042_t *)arg; 132 131 errno_t rc; 133 132 … … 146 145 fibril_mutex_unlock(&port->buf_lock); 147 146 fibril_condvar_broadcast(&port->buf_cv); 147 148 async_sess_t *parent_sess = ddf_dev_parent_sess_get(controller->dev); 149 hw_res_clear_interrupt(parent_sess, port->irq); 148 150 } 149 151 … … 175 177 bool aux_bound = false; 176 178 179 dev->dev = ddf_dev; 180 177 181 if (regs->size < sizeof(i8042_regs_t)) { 178 182 rc = EINVAL; … … 202 206 dev->kbd->cds.ops = &i8042_chardev_ops; 203 207 dev->kbd->cds.sarg = dev->kbd; 208 dev->kbd->irq = irq_kbd; 204 209 fibril_mutex_initialize(&dev->kbd->buf_lock); 205 210 fibril_condvar_initialize(&dev->kbd->buf_cv); … … 226 231 dev->aux->cds.ops = &i8042_chardev_ops; 227 232 dev->aux->cds.sarg = dev->aux; 233 dev->aux->irq = irq_mouse; 228 234 fibril_mutex_initialize(&dev->aux->buf_lock); 229 235 fibril_condvar_initialize(&dev->aux->buf_cv); … … 283 289 cap_irq_handle_t kbd_ihandle; 284 290 rc = register_interrupt_handler(ddf_dev, irq_kbd, 285 i8042_irq_handler, &irq_code, &kbd_ihandle);291 i8042_irq_handler, (void *)dev, &irq_code, &kbd_ihandle); 286 292 if (rc != EOK) { 287 293 ddf_msg(LVL_ERROR, "Failed set handler for kbd: %s.", … … 292 298 cap_irq_handle_t mouse_ihandle; 293 299 rc = register_interrupt_handler(ddf_dev, irq_mouse, 294 i8042_irq_handler, &irq_code, &mouse_ihandle);300 i8042_irq_handler, (void *)dev, &irq_code, &mouse_ihandle); 295 301 if (rc != EOK) { 296 302 ddf_msg(LVL_ERROR, "Failed set handler for mouse: %s.", … … 340 346 } 341 347 348 /** Quiesce i8042. 349 * 350 * @param dev i8042 instance. 351 */ 352 void i8042_quiesce(i8042_t *dev) 353 { 354 /* Disable port interrupts. */ 355 wait_ready(dev); 356 pio_write_8(&dev->regs->status, i8042_CMD_WRITE_CMDB); 357 wait_ready(dev); 358 pio_write_8(&dev->regs->data, i8042_KBD_TRANSLATE); 359 } 360 342 361 /** Write data to i8042 port. 343 362 *
Note:
See TracChangeset
for help on using the changeset viewer.