WHENCE: Update licensing information about the a56 assembler given the GPLed patches...
[linux-libre-firmware.git] / ath9k_htc / target_firmware / magpie_fw_dev / target / inc / adf_os_module.h
1 /*
2  * Copyright (c) 2013 Qualcomm Atheros, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted (subject to the limitations in the
7  * disclaimer below) provided that the following conditions are met:
8  *
9  *  * Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  *
12  *  * Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the
15  *    distribution.
16  *
17  *  * Neither the name of Qualcomm Atheros nor the names of its
18  *    contributors may be used to endorse or promote products derived
19  *    from this software without specific prior written permission.
20  *
21  * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
22  * GRANTED BY THIS LICENSE.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
23  * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
24  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
27  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
30  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
31  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
32  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
33  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34  */
35 /**
36  * @ingroup adf_os_public
37  * @file adf_os_module.h
38  * This file abstracts "kernel module" semantics.
39  */
40
41 #ifndef _ADF_OS_MODULE_H
42 #define _ADF_OS_MODULE_H
43
44 #include <adf_os_module_pvt.h>
45
46 typedef a_status_t (*module_init_func_t)(void);
47
48 /**
49  * @brief Specify the module's entry point.
50  */ 
51 #define adf_os_virt_module_init(_mod_init_func)  __adf_os_virt_module_init(_mod_init_func)
52
53 /**
54  * @brief Specify the module's exit point.
55  */ 
56 #define adf_os_virt_module_exit(_mod_exit_func)  __adf_os_virt_module_exit(_mod_exit_func)
57
58 /**
59  * @brief Specify the module's dependency on another module.
60  */ 
61 #define adf_os_module_dep(_name,_dep)       __adf_os_module_dep(_name,_dep)
62
63 /**
64  * @brief Export a symbol from a module.
65  */ 
66 #define adf_os_export_symbol(_sym)         __adf_os_export_symbol(_sym)
67      
68 /**
69  * @brief Module parameter of type integer.
70  */ 
71 #define ADF_OS_PARAM_TYPE_INT32             __ADF_OS_PARAM_TYPE_INT32
72
73 /**
74  * @brief Module parameter of type string.
75  */ 
76 #define ADF_OS_PARAM_TYPE_STRING            __ADF_OS_PARAM_TYPE_STRING
77
78 /**
79  * @brief Declare a module parameter. 
80  *
81  * @param[in] name name of the parameter
82  * @param[in] type type of the parameter
83  *
84  * @note These provide the config data defined by the userland
85  * for this device. It can be queried at any time, given the name string
86  * Only two types are supported
87  * ADF_OS_PARAM_TYPE_STRING
88  * ADF_OS_PARAM_TYPE_INT32
89  * For example, say, the parameters name "my_int" and "my_name" are of 
90  * variables of type int and string respectively. Then you would declare them 
91  * as follows:
92  * @code
93  * adf_os_declare_param(my_int, ADF_OS_PARAM_TYPE_INT32);
94  * adf_os_declare_param(my_name, ADF_OS_PARAM_TYPE_STRING);
95  * @endcode
96  * To read the userland provided config value, you would do something like
97  *
98  * @code
99  * adf_os_read_param(my_name, &softc->sc_my_name);
100  * @endcode
101  *
102  * or 
103  * @code
104  * st = adf_os_read_param(my_int, &softc->sc_my_int);
105  * @endcode
106  * st could be :
107  *
108  * A_STATUS_OK
109  * A_STATUS_ENOMEM
110  * A_STATUS_ENOENT
111  *
112  */
113 #define adf_os_declare_param(_name, _type) __adf_os_declare_param(_name, _type)
114
115 /**
116  * @brief Read a parameter's value
117  *
118  * @param[in]  osdev    os handle
119  * @param[in]  name     name of parameter
120  * @param[in]  type     type of parameter
121  * @param[out] val      value read
122  *
123  * @note pval is a point to the variable. Therefore,
124  * for strings it is a_uint8_t **
125  * for integers it is a_int_t *
126  */
127 #define adf_os_read_param(_osdev, _name, _type, _pval)        \
128                         __adf_os_read_param(_osdev, _name, _type, _pval)
129
130 #endif /*_ADF_OS_MODULE_H*/