Changes in uspace/drv/char/i8042/i8042.c [797ab95:fafb8e5] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/char/i8042/i8042.c
r797ab95 rfafb8e5 1 1 /* 2 * Copyright (c) 2025 Jiri Svoboda3 2 * Copyright (c) 2001-2004 Jakub Jermar 4 3 * Copyright (c) 2006 Josef Cejka 4 * Copyright (c) 2017 Jiri Svoboda 5 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 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; 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); 131 132 errno_t rc; 132 133 … … 145 146 fibril_mutex_unlock(&port->buf_lock); 146 147 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);150 148 } 151 149 … … 177 175 bool aux_bound = false; 178 176 179 dev->dev = ddf_dev;180 181 177 if (regs->size < sizeof(i8042_regs_t)) { 182 178 rc = EINVAL; … … 206 202 dev->kbd->cds.ops = &i8042_chardev_ops; 207 203 dev->kbd->cds.sarg = dev->kbd; 208 dev->kbd->irq = irq_kbd;209 204 fibril_mutex_initialize(&dev->kbd->buf_lock); 210 205 fibril_condvar_initialize(&dev->kbd->buf_cv); … … 231 226 dev->aux->cds.ops = &i8042_chardev_ops; 232 227 dev->aux->cds.sarg = dev->aux; 233 dev->aux->irq = irq_mouse;234 228 fibril_mutex_initialize(&dev->aux->buf_lock); 235 229 fibril_condvar_initialize(&dev->aux->buf_cv); … … 289 283 cap_irq_handle_t kbd_ihandle; 290 284 rc = register_interrupt_handler(ddf_dev, irq_kbd, 291 i8042_irq_handler, (void *)dev,&irq_code, &kbd_ihandle);285 i8042_irq_handler, &irq_code, &kbd_ihandle); 292 286 if (rc != EOK) { 293 287 ddf_msg(LVL_ERROR, "Failed set handler for kbd: %s.", … … 298 292 cap_irq_handle_t mouse_ihandle; 299 293 rc = register_interrupt_handler(ddf_dev, irq_mouse, 300 i8042_irq_handler, (void *)dev,&irq_code, &mouse_ihandle);294 i8042_irq_handler, &irq_code, &mouse_ihandle); 301 295 if (rc != EOK) { 302 296 ddf_msg(LVL_ERROR, "Failed set handler for mouse: %s.", … … 346 340 } 347 341 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 361 342 /** Write data to i8042 port. 362 343 *
Note:
See TracChangeset
for help on using the changeset viewer.