ASoC: wm8997: Add inputs for noise and mic mixers
[deliverable/linux.git] / drivers / staging / csr / csr_serialize_primitive_types.c
CommitLineData
635d2b00
GKH
1/*****************************************************************************
2
3 (c) Cambridge Silicon Radio Limited 2010
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
GKH
13#include "csr_prim_defs.h"
14#include "csr_msgconv.h"
d63123fc 15#include "csr_macro.h"
635d2b00 16
d4fda8db 17void CsrUint8Des(u8 *value, u8 *buffer, size_t *offset)
635d2b00
GKH
18{
19 *value = buffer[*offset];
20 *offset += sizeof(*value);
21}
22EXPORT_SYMBOL_GPL(CsrUint8Des);
23
d4fda8db 24void CsrUint16Des(u16 *value, u8 *buffer, size_t *offset)
635d2b00
GKH
25{
26 *value = (buffer[*offset + 0] << 0) |
27 (buffer[*offset + 1] << 8);
28 *offset += sizeof(*value);
29}
30EXPORT_SYMBOL_GPL(CsrUint16Des);
31
d4fda8db 32void CsrUint32Des(u32 *value, u8 *buffer, size_t *offset)
635d2b00
GKH
33{
34 *value = (buffer[*offset + 0] << 0) |
35 (buffer[*offset + 1] << 8) |
36 (buffer[*offset + 2] << 16) |
37 (buffer[*offset + 3] << 24);
38 *offset += sizeof(*value);
39}
40EXPORT_SYMBOL_GPL(CsrUint32Des);
41
d4fda8db 42void CsrMemCpyDes(void *value, u8 *buffer, size_t *offset, size_t length)
635d2b00 43{
25aebdb1 44 memcpy(value, &buffer[*offset], length);
635d2b00
GKH
45 *offset += length;
46}
47EXPORT_SYMBOL_GPL(CsrMemCpyDes);
48
d4fda8db 49void CsrCharStringDes(char **value, u8 *buffer, size_t *offset)
635d2b00 50{
5a0c09fd 51 *value = kstrdup((char *) &buffer[*offset], GFP_KERNEL);
4bcb20f8 52 *offset += strlen(*value) + 1;
635d2b00
GKH
53}
54EXPORT_SYMBOL_GPL(CsrCharStringDes);
55
d4fda8db 56void CsrUint8Ser(u8 *buffer, size_t *offset, u8 value)
635d2b00
GKH
57{
58 buffer[*offset] = value;
59 *offset += sizeof(value);
60}
61EXPORT_SYMBOL_GPL(CsrUint8Ser);
62
d4fda8db 63void CsrUint16Ser(u8 *buffer, size_t *offset, u16 value)
635d2b00 64{
7e6f5794
GKH
65 buffer[*offset + 0] = (u8) ((value >> 0) & 0xFF);
66 buffer[*offset + 1] = (u8) ((value >> 8) & 0xFF);
635d2b00
GKH
67 *offset += sizeof(value);
68}
69EXPORT_SYMBOL_GPL(CsrUint16Ser);
70
d4fda8db 71void CsrUint32Ser(u8 *buffer, size_t *offset, u32 value)
635d2b00 72{
7e6f5794
GKH
73 buffer[*offset + 0] = (u8) ((value >> 0) & 0xFF);
74 buffer[*offset + 1] = (u8) ((value >> 8) & 0xFF);
75 buffer[*offset + 2] = (u8) ((value >> 16) & 0xFF);
76 buffer[*offset + 3] = (u8) ((value >> 24) & 0xFF);
635d2b00
GKH
77 *offset += sizeof(value);
78}
79EXPORT_SYMBOL_GPL(CsrUint32Ser);
80
d4fda8db 81void CsrMemCpySer(u8 *buffer, size_t *offset, const void *value, size_t length)
635d2b00 82{
25aebdb1 83 memcpy(&buffer[*offset], value, length);
635d2b00
GKH
84 *offset += length;
85}
86EXPORT_SYMBOL_GPL(CsrMemCpySer);
87
d4fda8db 88void CsrCharStringSer(u8 *buffer, size_t *offset, const char *value)
635d2b00
GKH
89{
90 if (value)
91 {
b6e6e3a8 92 strcpy(((char *) &buffer[*offset]), value);
4bcb20f8 93 *offset += strlen(value) + 1;
635d2b00
GKH
94 }
95 else
96 {
97 CsrUint8Ser(buffer, offset, 0);
98 }
99}
100EXPORT_SYMBOL_GPL(CsrCharStringSer);
This page took 0.125308 seconds and 5 git commands to generate.