ath9k_htc: Update to upstream's commit d19607454d656cb14d8c16dfbf161eebb542e8fe dated...
[linux-libre-firmware.git] / ath9k_htc / target_firmware / magpie_fw_dev / target / inc / adf_os_dma.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_dma.h
38  * This file abstracts DMA operations.
39  */
40
41 #ifndef _ADF_OS_DMA_H
42 #define _ADF_OS_DMA_H
43
44 #include <adf_os_types.h>
45 #include <adf_os_dma_pvt.h>
46
47 /*
48  * @brief a dma address representation of a platform
49  */
50
51 /**
52  * @brief Allocate a DMA buffer and map it to local bus address space
53  *
54  * @param[in]  osdev     platform device instance
55  * @param[in]  size      DMA buffer size
56  * @param[in]  coherent  0 => cached.
57  * @param[out] dmap      opaque coherent memory handle
58  *
59  * @return     returns the virtual address of the memory
60  */
61 static inline void *
62 adf_os_dmamem_alloc(adf_os_device_t     osdev,
63                     adf_os_size_t       size,
64                     a_bool_t            coherent,
65                     adf_os_dma_map_t   *dmap)
66 {
67     return __adf_os_dmamem_alloc(osdev, size, coherent, dmap);
68 }
69
70 /**
71  * @brief Free a previously mapped DMA buffer
72  *
73  * @param[in] osdev     platform device instance
74  * @param[in] size      DMA buffer size
75  * @param[in] coherent  0 => cached.
76  * @param[in] vaddr     virtual address of DMA buffer
77  * @param[in] dmap      memory handle
78  */
79 static inline void
80 adf_os_dmamem_free(adf_os_device_t    osdev,
81                    adf_os_size_t      size,
82                    a_bool_t           coherent,
83                    void              *vaddr,
84                    adf_os_dma_map_t   dmap)
85 {
86     __adf_os_dmamem_free(osdev, size, coherent, vaddr, dmap);
87 }
88
89 /**
90  * @brief given a dmamem map, returns the (bus) address
91  *
92  * @param[in] dmap      memory handle
93  *
94  * @return the (bus) address
95  */
96 static inline adf_os_dma_addr_t
97 adf_os_dmamem_map2addr(adf_os_dma_map_t dmap)
98 {
99     return(__adf_os_dmamem_map2addr(dmap));
100 }
101
102 /**
103  * @brief Flush and invalidate cache for a given dmamem map
104  *
105  * @param[in] osdev     platform device instance
106  * @param[in] dmap              mem handle
107  * @param[in] op        op code for sync type, (see @ref adf_os_types.h)
108  */
109 static inline void
110 adf_os_dmamem_cache_sync(adf_os_device_t      osdev,
111                          adf_os_dma_map_t     dmap,
112                          adf_os_cache_sync_t  op)
113 {
114     __adf_os_dmamem_cache_sync(osdev, dmap, op);
115 }
116
117 /**
118  * @brief Get the cpu cache line size
119  *
120  * @return The CPU cache line size in bytes.
121  */
122 static inline adf_os_size_t
123 adf_os_cache_line_size(void)
124 {
125     return __adf_os_cache_line_size();
126 }
127
128 #endif