]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/staging/bcm2835-audio/vc_vchi_audioserv_defs.h
09f07fd891bbbaf9610691922ff6384978a70e07
[karo-tx-linux.git] / drivers / staging / bcm2835-audio / vc_vchi_audioserv_defs.h
1 /*****************************************************************************
2  * Copyright 2011 Broadcom Corporation.  All rights reserved.
3  *
4  * Unless you and Broadcom execute a separate written software license
5  * agreement governing use of this software, this software is licensed to you
6  * under the terms of the GNU General Public License version 2, available at
7  * http://www.broadcom.com/licenses/GPLv2.php (the "GPL").
8  *
9  * Notwithstanding the above, under no circumstances may you combine this
10  * software in any way with any other Broadcom software provided under a
11  * license other than the GPL, without Broadcom's express prior written
12  * consent.
13  *****************************************************************************/
14
15 #ifndef _VC_AUDIO_DEFS_H_
16 #define _VC_AUDIO_DEFS_H_
17
18 #define VC_AUDIOSERV_MIN_VER 1
19 #define VC_AUDIOSERV_VER 2
20
21 /* FourCC code used for VCHI connection */
22 #define VC_AUDIO_SERVER_NAME  MAKE_FOURCC("AUDS")
23
24 /* Maximum message length */
25 #define VC_AUDIO_MAX_MSG_LEN  (sizeof( VC_AUDIO_MSG_T ))
26
27 /*
28  *  List of screens that are currently supported
29  *  All message types supported for HOST->VC direction
30  */
31
32 enum vc_audio_msg_type {
33         VC_AUDIO_MSG_TYPE_RESULT, // Generic result
34         VC_AUDIO_MSG_TYPE_COMPLETE, // Generic result
35         VC_AUDIO_MSG_TYPE_CONFIG, // Configure audio
36         VC_AUDIO_MSG_TYPE_CONTROL, // Configure audio
37         VC_AUDIO_MSG_TYPE_OPEN, // Configure audio
38         VC_AUDIO_MSG_TYPE_CLOSE, // Configure audio
39         VC_AUDIO_MSG_TYPE_START, // Configure audio
40         VC_AUDIO_MSG_TYPE_STOP, // Configure audio
41         VC_AUDIO_MSG_TYPE_WRITE, // Configure audio
42         VC_AUDIO_MSG_TYPE_MAX
43 };
44
45 /* configure the audio */
46
47 struct vc_audio_config {
48         u32 channels;
49         u32 samplerate;
50         u32 bps;
51 };
52
53 struct vc_audio_control {
54         u32 volume;
55         u32 dest;
56 };
57
58 struct vc_audio_open {
59         u32 dummy;
60 };
61
62 struct vc_audio_close {
63         u32 dummy;
64 };
65
66 struct vc_audio_start {
67         u32 dummy;
68 };
69
70 struct vc_audio_stop {
71         u32 draining;
72 };
73
74 /* configure the write audio samples */
75 struct vc_audio_write {
76         u32 count; // in bytes
77         u32 cookie1;
78         u32 cookie2;
79         s16 silence;
80         s16 max_packet;
81 };
82
83 /* Generic result for a request (VC->HOST) */
84 struct vc_audio_result {
85         s32 success; // Success value
86 };
87
88 /* Generic result for a request (VC->HOST) */
89 struct vc_audio_complete {
90         s32 count; // Success value
91         u32 cookie1;
92         u32 cookie2;
93 };
94
95 /* Message header for all messages in HOST->VC direction */
96 struct vc_audio_msg {
97         s32 type; /* Message type (VC_AUDIO_MSG_TYPE) */
98         union {
99                 struct vc_audio_config config;
100                 struct vc_audio_control control;
101                 struct vc_audio_open open;
102                 struct vc_audio_close close;
103                 struct vc_audio_start start;
104                 struct vc_audio_stop stop;
105                 struct vc_audio_write write;
106                 struct vc_audio_result result;
107                 struct vc_audio_complete complete;
108         } u;
109 };
110
111 #endif /* _VC_AUDIO_DEFS_H_ */