GNU Linux-libre 4.19.295-gnu1
[releases.git] / drivers / staging / vc04_services / bcm2835-audio / vc_vchi_audioserv_defs.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright 2011 Broadcom Corporation.  All rights reserved. */
3
4 #ifndef _VC_AUDIO_DEFS_H_
5 #define _VC_AUDIO_DEFS_H_
6
7 #define VC_AUDIOSERV_MIN_VER 1
8 #define VC_AUDIOSERV_VER 2
9
10 /* FourCC code used for VCHI connection */
11 #define VC_AUDIO_SERVER_NAME  MAKE_FOURCC("AUDS")
12
13 /*
14  *  List of screens that are currently supported
15  *  All message types supported for HOST->VC direction
16  */
17
18 enum vc_audio_msg_type {
19         VC_AUDIO_MSG_TYPE_RESULT, // Generic result
20         VC_AUDIO_MSG_TYPE_COMPLETE, // Generic result
21         VC_AUDIO_MSG_TYPE_CONFIG, // Configure audio
22         VC_AUDIO_MSG_TYPE_CONTROL, // Configure audio
23         VC_AUDIO_MSG_TYPE_OPEN, // Configure audio
24         VC_AUDIO_MSG_TYPE_CLOSE, // Configure audio
25         VC_AUDIO_MSG_TYPE_START, // Configure audio
26         VC_AUDIO_MSG_TYPE_STOP, // Configure audio
27         VC_AUDIO_MSG_TYPE_WRITE, // Configure audio
28         VC_AUDIO_MSG_TYPE_MAX
29 };
30
31 /* configure the audio */
32
33 struct vc_audio_config {
34         u32 channels;
35         u32 samplerate;
36         u32 bps;
37 };
38
39 struct vc_audio_control {
40         u32 volume;
41         u32 dest;
42 };
43
44 struct vc_audio_open {
45         u32 dummy;
46 };
47
48 struct vc_audio_close {
49         u32 dummy;
50 };
51
52 struct vc_audio_start {
53         u32 dummy;
54 };
55
56 struct vc_audio_stop {
57         u32 draining;
58 };
59
60 /* configure the write audio samples */
61 struct vc_audio_write {
62         u32 count; // in bytes
63         u32 cookie1;
64         u32 cookie2;
65         s16 silence;
66         s16 max_packet;
67 };
68
69 /* Generic result for a request (VC->HOST) */
70 struct vc_audio_result {
71         s32 success; // Success value
72 };
73
74 /* Generic result for a request (VC->HOST) */
75 struct vc_audio_complete {
76         s32 count; // Success value
77         u32 cookie1;
78         u32 cookie2;
79 };
80
81 /* Message header for all messages in HOST->VC direction */
82 struct vc_audio_msg {
83         s32 type; /* Message type (VC_AUDIO_MSG_TYPE) */
84         union {
85                 struct vc_audio_config config;
86                 struct vc_audio_control control;
87                 struct vc_audio_open open;
88                 struct vc_audio_close close;
89                 struct vc_audio_start start;
90                 struct vc_audio_stop stop;
91                 struct vc_audio_write write;
92                 struct vc_audio_result result;
93                 struct vc_audio_complete complete;
94         } u;
95 };
96
97 #endif /* _VC_AUDIO_DEFS_H_ */