block: fix warning with calling smp_processor_id() in preemptible section
[pandora-kernel.git] / drivers / staging / westbridge / astoria / include / linux / westbridge / cyasintr.h
1 /* Cypress West Bridge API header file (cyasintr.h)
2 ## ===========================
3 ## Copyright (C) 2010  Cypress Semiconductor
4 ##
5 ## This program is free software; you can redistribute it and/or
6 ## modify it under the terms of the GNU General Public License
7 ## as published by the Free Software Foundation; either version 2
8 ## of the License, or (at your option) any later version.
9 ##
10 ## This program is distributed in the hope that it will be useful,
11 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 ## GNU General Public License for more details.
14 ##
15 ## You should have received a copy of the GNU General Public License
16 ## along with this program; if not, write to the Free Software
17 ## Foundation, Inc., 51 Franklin Street
18 ## Fifth Floor, Boston, MA  02110-1301, USA.
19 ## ===========================
20 */
21
22 #ifndef _INCLUDED_CYASINTR_H_
23 #define _INCLUDED_CYASINTR_H_
24
25 #include "cyasdevice.h"
26
27 #include "cyas_cplus_start.h"
28
29 /* Summary
30    Initialize the interrupt manager module
31
32    Description
33    This function is called to initialize the interrupt module.
34    This module enables interrupts as well as servies West Bridge
35    related interrupts by determining the source of the interrupt
36    and calling the appropriate handler function.
37
38    Notes
39    If the dmaintr parameter is TRUE, the initialization code
40    initializes the interrupt mask to have the DMA related interrupt
41    enabled via the general purpose interrupt. However, the interrupt
42    service function assumes that the DMA interrupt is handled by the
43    HAL layer before the interrupt module handler function is called.
44
45    Returns
46    * CY_AS_ERROR_SUCCESS - the interrupt module was initialized
47    * correctly
48    * CY_AS_ERROR_ALREADY_RUNNING - the interrupt module was already
49    * started
50
51    See Also
52    * CyAsIntrStop
53    * CyAsServiceInterrupt
54 */
55 cy_as_return_status_t
56 cy_as_intr_start(
57         /* Device being initialized */
58         cy_as_device *dev_p,
59         /* If true, enable the DMA interrupt through the INT signal */
60         cy_bool dmaintr
61         );
62
63 /* Summary
64    Stop the interrupt manager module
65
66    Description
67    This function stops the interrupt module and masks all interrupts
68    from the West Bridge device.
69
70    Returns
71    * CY_AS_ERROR_SUCCESS - the interrupt module was stopped
72    *    successfully
73    * CY_AS_ERROR_NOT_RUNNING - the interrupt module was not
74    *    running
75
76    See Also
77    * CyAsIntrStart
78    * CyAsServiceInterrupt
79 */
80 cy_as_return_status_t
81 cy_as_intr_stop(
82         /* Device bein stopped */
83         cy_as_device *dev_p
84         );
85
86
87 /* Summary
88    The interrupt service routine for West Bridge
89
90    Description
91    When an interrupt is detected, this function is called to
92    service the West Bridge interrupt. It is safe and efficient
93    for this function to be called when no West Bridge interrupt
94    has occurred. This function will determine it is not an West
95    Bridge interrupt quickly and return.
96 */
97 void cy_as_intr_service_interrupt(
98         /* The USER supplied tag for this device */
99         cy_as_hal_device_tag tag
100         );
101
102 #include "cyas_cplus_end.h"
103
104 #endif                            /* _INCLUDED_CYASINTR_H_ */