d4a368ffd14d6b2ec1f28b747bf4341139ce9929
[open-ath9k-htc-firmware.git] / target_firmware / magpie_fw_dev / target / inc / adf_os_io.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_io.h
38  * This file abstracts I/O operations.
39  */
40
41 #ifndef _ADF_OS_IO_H
42 #define _ADF_OS_IO_H
43
44 #include <adf_os_io_pvt.h>
45
46
47 /**
48  * @brief Read an 8-bit register value
49  *
50  * @param[in] osdev   platform device object
51  * @param[in] addr    register addr
52  *
53  * @return An 8-bit register value.
54  */
55 #define adf_os_reg_read8(osdev, addr)         __adf_os_reg_read8(osdev, addr)
56
57 /**
58  * @brief Read a 16-bit register value
59  *
60  * @param[in] osdev   platform device object
61  * @param[in] addr    register addr
62  *
63  * @return A 16-bit register value.
64  */
65 #define adf_os_reg_read16(osdev, addr)        __adf_os_reg_read16(osdev, addr)
66
67 /**
68  * @brief Read a 32-bit register value
69  *
70  * @param[in] osdev   platform device object
71  * @param[in] addr    register addr
72  *
73  * @return A 32-bit register value.
74  */
75 #define adf_os_reg_read32(osdev, addr)        __adf_os_reg_read32(osdev, addr)
76
77 /**
78  * @brief Read a 64-bit register value
79  *
80  * @param[in] osdev   platform device object
81  * @param[in] addr    register addr
82  *
83  * @return A 64-bit register value.
84  */
85 #define adf_os_reg_read64(osdev, addr)        __adf_os_reg_read64(osdev, addr)
86
87 /**
88  * @brief Write an 8-bit value into register
89  *
90  * @param[in] osdev   platform device object
91  * @param[in] addr    register addr
92  * @param[in] b       the 8-bit value to be written
93  */
94 #define adf_os_reg_write8(osdev, addr, b)     __adf_os_reg_write8(osdev, addr, b)
95
96 /**
97  * @brief Write a 16-bit value into register
98  *
99  * @param[in] osdev   platform device object
100  * @param[in] addr    register addr
101  * @param[in] w       the 16-bit value to be written
102  */
103 #define adf_os_reg_write16(osdev, addr, w)    __adf_os_reg_write16(osdev, addr, w)
104
105 /**
106  * @brief Write a 32-bit value into register
107  *
108  * @param[in] osdev   platform device object
109  * @param[in] addr    register addr
110  * @param[in] l       the 32-bit value to be written
111  */
112 #define adf_os_reg_write32(osdev, addr, l)    __adf_os_reg_write32(osdev, addr, l)
113
114 /**
115  * @brief Write a 64-bit value into register
116  *
117  * @param[in] osdev   platform device object
118  * @param[in] addr    register addr
119  * @param[in] q       the 64-bit value to be written
120  */
121 #define adf_os_reg_write64(osdev, addr, q)    __adf_os_reg_write64(osdev, addr, q)
122
123 /**
124  * @brief Convert a 16-bit value from network byte order to host byte order
125  */
126 #define adf_os_ntohs(x)                         __adf_os_ntohs(x)
127
128 /**
129  * @brief Convert a 32-bit value from network byte order to host byte order
130  */
131 #define adf_os_ntohl(x)                         __adf_os_ntohl(x)
132
133 /**
134  * @brief Convert a 16-bit value from host byte order to network byte order
135  */
136 #define adf_os_htons(x)                         __adf_os_htons(x)
137
138 /**
139  * @brief Convert a 32-bit value from host byte order to network byte order
140  */
141 #define adf_os_htonl(x)                         __adf_os_htonl(x)
142
143 /**
144  * @brief Convert a 16-bit value from CPU byte order to big-endian byte order
145  */
146 #define adf_os_cpu_to_be16(x)                   __adf_os_cpu_to_be16(x)
147
148 /**
149  * @brief Convert a 32-bit value from CPU byte order to big-endian byte order
150  */
151 #define adf_os_cpu_to_be32(x)                   __adf_os_cpu_to_be32(x)
152
153 /**
154  * @brief Convert a 64-bit value from CPU byte order to big-endian byte order
155  */
156 #define adf_os_cpu_to_be64(x)                   __adf_os_cpu_to_be64(x)
157
158 /**
159  * @brief Convert a 16-bit value from CPU byte order to little-endian byte order
160  */
161 #define adf_os_cpu_to_le16(x)                   __adf_os_cpu_to_le16(x)
162
163 /**
164  * @brief Convert a 32-bit value from CPU byte order to little-endian byte order
165  */
166 #define adf_os_cpu_to_le32(x)                   __adf_os_cpu_to_le32(x)
167
168 /**
169  * @brief Convert a 64-bit value from CPU byte order to little-endian byte order
170  */
171 #define adf_os_cpu_to_le64(x)                   __adf_os_cpu_to_le64(x)
172
173 /**
174  * @brief Convert a 16-bit value from big-endian byte order to CPU byte order
175  */
176 #define adf_os_be16_to_cpu(x)                   __adf_os_be16_to_cpu(x)
177
178 /**
179  * @brief Convert a 32-bit value from big-endian byte order to CPU byte order
180  */
181 #define adf_os_be32_to_cpu(x)                   __adf_os_be32_to_cpu(x)
182
183 /**
184  * @brief Convert a 64-bit value from big-endian byte order to CPU byte order
185  */
186 #define adf_os_be64_to_cpu(x)                   __adf_os_be64_to_cpu(x)
187
188 /**
189  * @brief Convert a 16-bit value from little-endian byte order to CPU byte order
190  */
191 #define adf_os_le16_to_cpu(x)                   __adf_os_le16_to_cpu(x)
192
193 /**
194  * @brief Convert a 32-bit value from little-endian byte order to CPU byte order
195  */
196 #define adf_os_le32_to_cpu(x)                   __adf_os_le32_to_cpu(x)
197
198 /**
199  * @brief Convert a 64-bit value from little-endian byte order to CPU byte order
200  */
201 #define adf_os_le64_to_cpu(x)                   __adf_os_le64_to_cpu(x)
202
203 #endif