1    /* --COPYRIGHT--,TI
     2     * Copyright (c) $(CPYYEAR)
     3     * Texas Instruments
     4     *
     5     *  All rights reserved.  Property of Texas Instruments
     6     *  Restricted rights to use, duplicate or disclose this code are
     7     *  granted through contract.
     8     * 
     9     * --/COPYRIGHT--*/
    10    /*
    11     *  ======== IInterrupt.xdc ========
    12     *
    13     *! Revision History
    14     *! ================
    15     *! 01-Feb-2009 skp     added intUnregister, removed intWaitClear
    16     *! 15-Nov-2009 skp     cdoc updates
    17     */
    18     
    19    /*!
    20     *  ======== IInterrupt ========
    21     *  Interface for the inter-processor interrupts
    22     */
    23    interface IInterrupt {
    24    
    25        struct IntInfo {
    26            UInt  localIntId;
    27            UInt  remoteIntId;
    28            UInt  intVectorId;
    29        }
    30        
    31        /*!
    32         *  ======== intEnable ========
    33         *  Enables the interrupt corresponding to intId
    34         *
    35         *  @param(remoteProcId)  Remote MultiProc Id
    36         *  @param(intInfo)       Information needed to configure interrupt line  
    37         */
    38        Void intEnable(UInt16 remoteProcId, IntInfo *intInfo);
    39            
    40        /*!
    41         *  ======== intDisable ========
    42         *  Disables the interrupt corresponding to intId
    43         *
    44         *  @param(remoteProcId)  Remote MultiProc Id
    45         *  @param(intInfo)       Information needed to configure interrupt line  
    46         */     
    47        Void intDisable(UInt16 remoteProcId, IntInfo *intInfo);
    48        
    49        /*!
    50         *  ======== intRegister ========
    51         *  Register an interrupt line to a remote processor
    52         *
    53         *  @param(remoteProcId)  Remote MultiProc Id
    54         *  @param(intInfo)       Information needed to configure interrupt line  
    55         *  @param(func)          Function to register.
    56         *  @param(arg)           Argument that will be passed to func
    57         */
    58        Void intRegister(UInt16 remoteProcId, IntInfo *intInfo, Fxn func, UArg arg);
    59        
    60        /*!
    61         *  ======== intUnregister ========
    62         *  Unregister an interrupt line to a remote processor
    63         *
    64         *  @param(remoteProcId)  Remote MultiProc Id
    65         *  @param(intInfo)       Information needed to configure interrupt line
    66         */
    67        Void intUnregister(UInt16 remoteProcId, IntInfo *intInfo);
    68        
    69        /*!
    70         *  ======== intSend ========
    71         *  Send interrupt to the remote processor
    72         *
    73         *  @param(remoteProcId)  Remote MultiProc Id
    74         *  @param(intInfo)       Information needed to configure interrupt line  
    75         *  @param(arg)           Argument for sending interrupt.     
    76         */
    77        Void intSend(UInt16 remoteProcId, IntInfo *intInfo, UArg arg);
    78        
    79        /*!
    80         *  @_nodoc
    81         *  Post an interrupt locally.
    82         *
    83         *  Used to simulate receiving an interrupt from a remote (source) 
    84         *  processor
    85         *
    86         *  @param(remoteProcId)  Source MultiProc Id
    87         *  @param(intInfo)       Information needed to configure interrupt line  
    88         *  @param(arg)           Argument for sending interrupt.     
    89         */
    90        Void intPost(UInt16 srcProcId, IntInfo *intInfo, UArg arg);
    91         
    92        /*!
    93         *  ======== intClear ========
    94         *  Clear interrupt
    95         *
    96         *  @param(remoteProcId)  Remote MultiProc Id
    97         *  @param(intInfo)       Information needed to configure interrupt line  
    98         *
    99         *  @b(returns)           Value (if any) of the interrupt before 
   100         *                        it was cleared
   101         */
   102        UInt intClear(UInt16 remoteProcId, IntInfo *intInfo);
   103    }