Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/char/i8042/i8042.c

    r797ab95 rfafb8e5  
    11/*
    2  * Copyright (c) 2025 Jiri Svoboda
    32 * Copyright (c) 2001-2004 Jakub Jermar
    43 * Copyright (c) 2006 Josef Cejka
     4 * Copyright (c) 2017 Jiri Svoboda
    55 * Copyright (c) 2011 Jan Vesely
    66 * All rights reserved.
     
    123123 * Write new data to the corresponding buffer.
    124124 *
    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 */
     129static void i8042_irq_handler(ipc_call_t *call, ddf_dev_t *dev)
     130{
     131        i8042_t *controller = ddf_dev_data_get(dev);
    131132        errno_t rc;
    132133
     
    145146        fibril_mutex_unlock(&port->buf_lock);
    146147        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);
    150148}
    151149
     
    177175        bool aux_bound = false;
    178176
    179         dev->dev = ddf_dev;
    180 
    181177        if (regs->size < sizeof(i8042_regs_t)) {
    182178                rc = EINVAL;
     
    206202        dev->kbd->cds.ops = &i8042_chardev_ops;
    207203        dev->kbd->cds.sarg = dev->kbd;
    208         dev->kbd->irq = irq_kbd;
    209204        fibril_mutex_initialize(&dev->kbd->buf_lock);
    210205        fibril_condvar_initialize(&dev->kbd->buf_cv);
     
    231226        dev->aux->cds.ops = &i8042_chardev_ops;
    232227        dev->aux->cds.sarg = dev->aux;
    233         dev->aux->irq = irq_mouse;
    234228        fibril_mutex_initialize(&dev->aux->buf_lock);
    235229        fibril_condvar_initialize(&dev->aux->buf_cv);
     
    289283        cap_irq_handle_t kbd_ihandle;
    290284        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);
    292286        if (rc != EOK) {
    293287                ddf_msg(LVL_ERROR, "Failed set handler for kbd: %s.",
     
    298292        cap_irq_handle_t mouse_ihandle;
    299293        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);
    301295        if (rc != EOK) {
    302296                ddf_msg(LVL_ERROR, "Failed set handler for mouse: %s.",
     
    346340}
    347341
    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 
    361342/** Write data to i8042 port.
    362343 *
Note: See TracChangeset for help on using the changeset viewer.