Changeset 646849b3 in mainline for uspace/lib


Ignore:
Timestamp:
2024-05-17T12:25:26Z (18 months ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
60744cb
Parents:
59c0f478
git-author:
Jiri Svoboda <jiri@…> (2024-05-16 19:25:07)
git-committer:
Jiri Svoboda <jiri@…> (2024-05-17 12:25:26)
Message:

Handle both IDE channels in the same driver instance

We need to work around libdrv not allowing us to distinguish
between two interrupts registered with the same device.

Location:
uspace/lib
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ata/src/ata.c

    r59c0f478 r646849b3  
    446446static errno_t ata_bd_init_irq(ata_channel_t *chan)
    447447{
     448        if (!chan->params.have_irq)
     449                return EOK;
     450
    448451        return chan->params.irq_enable(chan->params.arg);
    449452}
     
    452455static void ata_bd_fini_irq(ata_channel_t *chan)
    453456{
     457        if (!chan->params.have_irq)
     458                return;
     459
    454460        (void)chan->params.irq_disable(chan->params.arg);
    455461}
  • uspace/lib/drv/generic/interrupt.c

    r59c0f478 r646849b3  
    11/*
     2 * Copyright (c) 2024 Jiri Svoboda
    23 * Copyright (c) 2010 Lenka Trochtova
    34 * All rights reserved.
     
    5051}
    5152
     53errno_t register_interrupt_handler_arg(ddf_dev_t *dev, int irq,
     54    interrupt_handler_t *handler, void *arg, const irq_code_t *irq_code,
     55    cap_irq_handle_t *handle)
     56{
     57        (void)dev;
     58        return async_irq_subscribe(irq, (async_notification_handler_t) handler,
     59            arg, irq_code, handle);
     60}
     61
    5262errno_t unregister_interrupt_handler(ddf_dev_t *dev, cap_irq_handle_t handle)
    5363{
  • uspace/lib/drv/include/ddf/interrupt.h

    r59c0f478 r646849b3  
    11/*
     2 * Copyright (c) 2024 Jiri Svoboda
    23 * Copyright (c) 2010 Lenka Trochtova
    34 * All rights reserved.
     
    5253extern errno_t register_interrupt_handler(ddf_dev_t *, int, interrupt_handler_t *,
    5354    const irq_code_t *, cap_irq_handle_t *);
     55extern errno_t register_interrupt_handler_arg(ddf_dev_t *, int,
     56    interrupt_handler_t *, void *, const irq_code_t *, cap_irq_handle_t *);
    5457extern errno_t unregister_interrupt_handler(ddf_dev_t *, cap_irq_handle_t);
    5558
Note: See TracChangeset for help on using the changeset viewer.