Changeset 797ab95 in mainline


Ignore:
Timestamp:
2025-03-07T22:35:36Z (4 weeks ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
0ae9e18
Parents:
b9cc81c6
Message:

Implement quiesce in i8042.

Location:
uspace/drv/char/i8042
Files:
3 edited

Legend:

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

    rb9cc81c6 r797ab95  
    11/*
     2 * Copyright (c) 2025 Jiri Svoboda
    23 * Copyright (c) 2001-2004 Jakub Jermar
    34 * Copyright (c) 2006 Josef Cejka
    4  * Copyright (c) 2021 Jiri Svoboda
    55 * Copyright (c) 2011 Jan Vesely
    66 * All rights reserved.
     
    346346}
    347347
     348/** Quiesce i8042.
     349 *
     350 * @param dev i8042 instance.
     351 */
     352void 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
    348361/** Write data to i8042 port.
    349362 *
  • uspace/drv/char/i8042/i8042.h

    rb9cc81c6 r797ab95  
    11/*
    2  * Copyright (c) 2024 Jiri Svoboda
     2 * Copyright (c) 2025 Jiri Svoboda
    33 * Copyright (c) 2006 Josef Cejka
    44 * Copyright (c) 2011 Jan Vesely
     
    9595
    9696extern errno_t i8042_init(i8042_t *, addr_range_t *, int, int, ddf_dev_t *);
     97extern void i8042_quiesce(i8042_t *);
    9798
    9899#endif
  • uspace/drv/char/i8042/main.c

    rb9cc81c6 r797ab95  
    11/*
     2 * Copyright (c) 2025 Jiri Svoboda
    23 * Copyright (c) 2011 Jan Vesely
    34 * All rights reserved.
     
    135136}
    136137
     138/** Initialize a new ddf driver instance of i8042 driver
     139 *
     140 * @param[in] device DDF instance of the device to initialize.
     141 *
     142 * @return Error code.
     143 *
     144 */
     145static errno_t i8042_dev_quiesce(ddf_dev_t *device)
     146{
     147        i8042_t *i8042;
     148
     149        ddf_msg(LVL_DEBUG, "i8042_dev_quiesce()");
     150
     151        i8042 = (i8042_t *)ddf_dev_data_get(device);
     152        i8042_quiesce(i8042);
     153        return EOK;
     154}
     155
    137156/** DDF driver operations. */
    138157static driver_ops_t i8042_driver_ops = {
    139158        .dev_add = i8042_dev_add,
     159        .dev_quiesce = i8042_dev_quiesce
    140160};
    141161
Note: See TracChangeset for help on using the changeset viewer.