Changeset 07cb0108 in mainline


Ignore:
Timestamp:
2017-10-08T20:55:13Z (7 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
b08941d
Parents:
53a309e
Message:

Sort out irc_disable_interrupt vs irc_clear_interrupt.

Location:
uspace
Files:
8 edited

Legend:

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

    r53a309e r07cb0108  
    780780       
    781781        ns8250_read_from_device(ns);
    782         irc_disable_interrupt(ns->irq);
     782        irc_clear_interrupt(ns->irq);
    783783}
    784784
  • uspace/lib/c/generic/irc.c

    r53a309e r07cb0108  
    6161/** Enable interrupt.
    6262 *
     63 * Allow interrupt delivery.
     64 *
    6365 * @param irq   IRQ number
    6466 */
     
    8082}
    8183
    82 
    8384/** Disable interrupt.
     85 *
     86 * Disallow interrupt delivery.
    8487 *
    8588 * @param irq   IRQ number
    8689 */
    8790int irc_disable_interrupt(int irq)
     91{
     92        int rc;
     93
     94        if (irc_sess == NULL) {
     95                rc = irc_init();
     96                if (rc != EOK)
     97                        return rc;
     98        }
     99
     100        async_exch_t *exch = async_exchange_begin(irc_sess);
     101        rc = async_req_1_0(exch, IRC_DISABLE_INTERRUPT, irq);
     102        async_exchange_end(exch);
     103
     104        return rc;
     105}
     106
     107/** Clear interrupt.
     108 *
     109 * Clear/acknowledge interrupt in interrupt controller so that
     110 * another interrupt can be delivered.
     111 *
     112 * @param irq   IRQ number
     113 */
     114int irc_clear_interrupt(int irq)
    88115{
    89116        int rc;
  • uspace/lib/c/include/ipc/irc.h

    r53a309e r07cb0108  
    4040typedef enum {
    4141        IRC_ENABLE_INTERRUPT = IPC_FIRST_USER_METHOD,
     42        IRC_DISABLE_INTERRUPT,
    4243        IRC_CLEAR_INTERRUPT
    4344} irc_request_t;
  • uspace/lib/c/include/irc.h

    r53a309e r07cb0108  
    3838extern int irc_enable_interrupt(int);
    3939extern int irc_disable_interrupt(int);
     40extern int irc_clear_interrupt(int);
    4041
    4142#endif
  • uspace/srv/hw/irc/apic/apic.c

    r53a309e r07cb0108  
    185185                        async_answer_0(callid, apic_enable_irq(IPC_GET_ARG1(call)));
    186186                        break;
     187                case IRC_DISABLE_INTERRUPT:
     188                        /* XXX TODO */
     189                        async_answer_0(callid, EOK);
     190                        break;
    187191                case IRC_CLEAR_INTERRUPT:
    188192                        /* Noop */
  • uspace/srv/hw/irc/i8259/i8259.c

    r53a309e r07cb0108  
    120120                        async_answer_0(callid, pic_enable_irq(IPC_GET_ARG1(call)));
    121121                        break;
     122                case IRC_DISABLE_INTERRUPT:
     123                        /* XXX TODO */
     124                        async_answer_0(callid, EOK);
     125                        break;
    122126                case IRC_CLEAR_INTERRUPT:
    123127                        /* Noop */
  • uspace/srv/hw/irc/icp-ic/icp-ic.c

    r53a309e r07cb0108  
    101101                            icpic_enable_irq(IPC_GET_ARG1(call)));
    102102                        break;
     103                case IRC_DISABLE_INTERRUPT:
     104                        /* XXX TODO */
     105                        async_answer_0(callid, EOK);
     106                        break;
    103107                case IRC_CLEAR_INTERRUPT:
    104108                        /* Noop */
  • uspace/srv/hw/irc/obio/obio.c

    r53a309e r07cb0108  
    9898                        async_answer_0(callid, EOK);
    9999                        break;
     100                case IRC_DISABLE_INTERRUPT:
     101                        /* XXX TODO */
     102                        async_answer_0(callid, EOK);
     103                        break;
    100104                case IRC_CLEAR_INTERRUPT:
    101105                        inr = IPC_GET_ARG1(call);
Note: See TracChangeset for help on using the changeset viewer.