staging: csr: remove CsrPmemAlloc
[deliverable/linux.git] / drivers / staging / csr / csr_wifi_serialize_primitive_types.c
CommitLineData
635d2b00
GKH
1/*****************************************************************************
2
3 (c) Cambridge Silicon Radio Limited 2011
4 All rights reserved and confidential information of CSR
5
6 Refer to LICENSE.txt included with this source for details
7 on the license terms.
8
9*****************************************************************************/
10
11#include <linux/module.h>
786eeeb3 12#include <linux/slab.h>
635d2b00 13#include "csr_pmem.h"
d63123fc 14#include "csr_macro.h"
635d2b00
GKH
15#include "csr_msgconv.h"
16#include "csr_wifi_msgconv.h"
17#include "csr_wifi_lib.h"
18
d4fda8db 19void CsrUint24Des(u32 *v, u8 *buffer, size_t *offset)
635d2b00 20{
26a6b2e1 21 u32 val;
635d2b00
GKH
22
23 val = ((buffer[(*offset) + 2] << 16) |
24 (buffer[(*offset) + 1] << 8) |
25 (buffer[(*offset)]));
26
27 *offset += 3;
28 *v = val;
29}
30
31
32/* Big endian :e.g WSC, TCLAS */
d4fda8db 33void CsrUint16DesBigEndian(u16 *v, u8 *buffer, size_t *offset)
635d2b00 34{
8c87f69a 35 u16 val;
635d2b00
GKH
36
37 val = (buffer[(*offset)] << 8) | (buffer[(*offset) + 1]);
38 *offset += 2;
39
40 *v = val;
41}
42
43
d4fda8db 44void CsrUint24DesBigEndian(u32 *v, u8 *buffer, size_t *offset)
635d2b00 45{
26a6b2e1 46 u32 val;
635d2b00
GKH
47
48 val = ((buffer[(*offset)] << 16) |
49 (buffer[(*offset) + 1] << 8) |
50 (buffer[(*offset) + 2]));
51
52 *offset += 3;
53 *v = val;
54}
55
56
d4fda8db 57void CsrUint32DesBigEndian(u32 *v, u8 *buffer, size_t *offset)
635d2b00 58{
26a6b2e1 59 u32 val;
635d2b00
GKH
60
61 val = ((buffer[(*offset)] << 24) |
62 (buffer[(*offset) + 1] << 16) |
63 (buffer[(*offset) + 2] << 8) |
64 (buffer[(*offset) + 3]));
65
66 *offset += 4;
67 *v = val;
68}
69
70
d4fda8db 71void CsrUint24Ser(u8 *ptr, size_t *len, u32 v)
635d2b00 72{
7e6f5794
GKH
73 ptr[(*len) + 2] = (u8)((v & 0x00ff0000) >> 16);
74 ptr[(*len) + 1] = (u8)((v & 0x0000ff00) >> 8);
75 ptr[(*len)] = (u8)((v & 0x000000ff));
635d2b00
GKH
76
77 *len += 3;
78}
79
80
81/* Big endian :e.g WSC, TCLAS */
d4fda8db 82void CsrUint16SerBigEndian(u8 *ptr, size_t *len, u16 v)
635d2b00 83{
7e6f5794
GKH
84 ptr[(*len)] = (u8)((v & 0xff00) >> 8);
85 ptr[(*len) + 1] = (u8)((v & 0x00ff));
635d2b00
GKH
86
87 *len += 2;
88}
89
90
d4fda8db 91void CsrUint32SerBigEndian(u8 *ptr, size_t *len, u32 v)
635d2b00 92{
7e6f5794
GKH
93 ptr[(*len)] = (u8)((v & 0xff000000) >> 24);
94 ptr[(*len) + 1] = (u8)((v & 0x00ff0000) >> 16);
95 ptr[(*len) + 2] = (u8)((v & 0x0000ff00) >> 8);
96 ptr[(*len) + 3] = (u8)((v & 0x000000ff));
635d2b00
GKH
97
98 *len += 4;
99}
100
101
d4fda8db 102void CsrUint24SerBigEndian(u8 *ptr, size_t *len, u32 v)
635d2b00 103{
7e6f5794
GKH
104 ptr[(*len)] = (u8)((v & 0x00ff0000) >> 16);
105 ptr[(*len) + 1] = (u8)((v & 0x0000ff00) >> 8);
106 ptr[(*len) + 2] = (u8)((v & 0x000000ff));
635d2b00
GKH
107
108 *len += 3;
109}
110
111
d4fda8db 112size_t CsrWifiEventSizeof(void *msg)
635d2b00
GKH
113{
114 return 2;
115}
116EXPORT_SYMBOL_GPL(CsrWifiEventSizeof);
117
d4fda8db 118u8* CsrWifiEventSer(u8 *ptr, size_t *len, void *msg)
635d2b00
GKH
119{
120 CsrWifiFsmEvent *primitive = (CsrWifiFsmEvent *)msg;
121 *len = 0;
122 CsrUint16Ser(ptr, len, primitive->type);
123 return(ptr);
124}
125EXPORT_SYMBOL_GPL(CsrWifiEventSer);
126
d4fda8db 127void* CsrWifiEventDes(u8 *buffer, size_t length)
635d2b00 128{
786eeeb3 129 CsrWifiFsmEvent *primitive = kmalloc(sizeof(CsrWifiFsmEvent), GFP_KERNEL);
d4fda8db 130 size_t offset = 0;
635d2b00
GKH
131 CsrUint16Des(&primitive->type, buffer, &offset);
132
133 return primitive;
134}
135EXPORT_SYMBOL_GPL(CsrWifiEventDes);
136
d4fda8db 137size_t CsrWifiEventCsrUint8Sizeof(void *msg)
635d2b00
GKH
138{
139 return 3;
140}
141EXPORT_SYMBOL_GPL(CsrWifiEventCsrUint8Sizeof);
142
d4fda8db 143u8* CsrWifiEventCsrUint8Ser(u8 *ptr, size_t *len, void *msg)
635d2b00
GKH
144{
145 CsrWifiEventCsrUint8 *primitive = (CsrWifiEventCsrUint8 *)msg;
146 *len = 0;
147 CsrUint16Ser(ptr, len, primitive->common.type);
148 CsrUint8Ser(ptr, len, primitive->value);
149 return(ptr);
150}
151EXPORT_SYMBOL_GPL(CsrWifiEventCsrUint8Ser);
152
153
d4fda8db 154void* CsrWifiEventCsrUint8Des(u8 *buffer, size_t length)
635d2b00 155{
786eeeb3 156 CsrWifiEventCsrUint8 *primitive = kmalloc(sizeof(CsrWifiEventCsrUint8), GFP_KERNEL);
635d2b00 157
d4fda8db 158 size_t offset = 0;
635d2b00
GKH
159 CsrUint16Des(&primitive->common.type, buffer, &offset);
160 CsrUint8Des(&primitive->value, buffer, &offset);
161
162 return primitive;
163}
164EXPORT_SYMBOL_GPL(CsrWifiEventCsrUint8Des);
165
166
d4fda8db 167size_t CsrWifiEventCsrUint16Sizeof(void *msg)
635d2b00
GKH
168{
169 return 4;
170}
171EXPORT_SYMBOL_GPL(CsrWifiEventCsrUint16Sizeof);
172
173
d4fda8db 174u8* CsrWifiEventCsrUint16Ser(u8 *ptr, size_t *len, void *msg)
635d2b00
GKH
175{
176 CsrWifiEventCsrUint16 *primitive = (CsrWifiEventCsrUint16 *)msg;
177 *len = 0;
178 CsrUint16Ser(ptr, len, primitive->common.type);
179 CsrUint16Ser(ptr, len, primitive->value);
180 return(ptr);
181}
182EXPORT_SYMBOL_GPL(CsrWifiEventCsrUint16Ser);
183
d4fda8db 184void* CsrWifiEventCsrUint16Des(u8 *buffer, size_t length)
635d2b00 185{
786eeeb3 186 CsrWifiEventCsrUint16 *primitive = kmalloc(sizeof(CsrWifiEventCsrUint16), GFP_KERNEL);
635d2b00 187
d4fda8db 188 size_t offset = 0;
635d2b00
GKH
189 CsrUint16Des(&primitive->common.type, buffer, &offset);
190 CsrUint16Des(&primitive->value, buffer, &offset);
191
192 return primitive;
193}
194EXPORT_SYMBOL_GPL(CsrWifiEventCsrUint16Des);
195
196
d4fda8db 197size_t CsrWifiEventCsrUint32Sizeof(void *msg)
635d2b00
GKH
198{
199 return 6;
200}
201EXPORT_SYMBOL_GPL(CsrWifiEventCsrUint32Sizeof);
202
d4fda8db 203u8* CsrWifiEventCsrUint32Ser(u8 *ptr, size_t *len, void *msg)
635d2b00
GKH
204{
205 CsrWifiEventCsrUint32 *primitive = (CsrWifiEventCsrUint32 *)msg;
206 *len = 0;
207 CsrUint16Ser(ptr, len, primitive->common.type);
208 CsrUint32Ser(ptr, len, primitive->value);
209 return(ptr);
210}
211EXPORT_SYMBOL_GPL(CsrWifiEventCsrUint32Ser);
212
213
d4fda8db 214void* CsrWifiEventCsrUint32Des(u8 *buffer, size_t length)
635d2b00 215{
786eeeb3 216 CsrWifiEventCsrUint32 *primitive = kmalloc(sizeof(CsrWifiEventCsrUint32), GFP_KERNEL);
635d2b00 217
d4fda8db 218 size_t offset = 0;
635d2b00
GKH
219 CsrUint16Des(&primitive->common.type, buffer, &offset);
220 CsrUint32Des(&primitive->value, buffer, &offset);
221
222 return primitive;
223}
224EXPORT_SYMBOL_GPL(CsrWifiEventCsrUint32Des);
225
d4fda8db 226size_t CsrWifiEventCsrUint16CsrUint8Sizeof(void *msg)
635d2b00
GKH
227{
228 return 5;
229}
230EXPORT_SYMBOL_GPL(CsrWifiEventCsrUint16CsrUint8Sizeof);
231
d4fda8db 232u8* CsrWifiEventCsrUint16CsrUint8Ser(u8 *ptr, size_t *len, void *msg)
635d2b00
GKH
233{
234 CsrWifiEventCsrUint16CsrUint8 *primitive = (CsrWifiEventCsrUint16CsrUint8 *)msg;
235 *len = 0;
236 CsrUint16Ser(ptr, len, primitive->common.type);
237 CsrUint16Ser(ptr, len, primitive->value16);
238 CsrUint8Ser(ptr, len, primitive->value8);
239 return(ptr);
240}
241EXPORT_SYMBOL_GPL(CsrWifiEventCsrUint16CsrUint8Ser);
242
243
d4fda8db 244void* CsrWifiEventCsrUint16CsrUint8Des(u8 *buffer, size_t length)
635d2b00 245{
786eeeb3 246 CsrWifiEventCsrUint16CsrUint8 *primitive = kmalloc(sizeof(CsrWifiEventCsrUint16CsrUint8), GFP_KERNEL);
635d2b00 247
d4fda8db 248 size_t offset = 0;
635d2b00
GKH
249 CsrUint16Des(&primitive->common.type, buffer, &offset);
250 CsrUint16Des(&primitive->value16, buffer, &offset);
251 CsrUint8Des(&primitive->value8, buffer, &offset);
252
253 return primitive;
254}
255EXPORT_SYMBOL_GPL(CsrWifiEventCsrUint16CsrUint8Des);
256
257
This page took 0.053462 seconds and 5 git commands to generate.