Linux-libre 5.4.49-gnu
[librecmc/linux-libre.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 codes used for VCHI communication */
11 #define VC_AUDIO_SERVER_NAME  MAKE_FOURCC("AUDS")
12 #define VC_AUDIO_WRITE_COOKIE1 MAKE_FOURCC("BCMA")
13 #define VC_AUDIO_WRITE_COOKIE2 MAKE_FOURCC("DATA")
14
15 /*
16  *  List of screens that are currently supported
17  *  All message types supported for HOST->VC direction
18  */
19
20 enum vc_audio_msg_type {
21         VC_AUDIO_MSG_TYPE_RESULT, // Generic result
22         VC_AUDIO_MSG_TYPE_COMPLETE, // Generic result
23         VC_AUDIO_MSG_TYPE_CONFIG, // Configure audio
24         VC_AUDIO_MSG_TYPE_CONTROL, // Configure audio
25         VC_AUDIO_MSG_TYPE_OPEN, // Configure audio
26         VC_AUDIO_MSG_TYPE_CLOSE, // Configure audio
27         VC_AUDIO_MSG_TYPE_START, // Configure audio
28         VC_AUDIO_MSG_TYPE_STOP, // Configure audio
29         VC_AUDIO_MSG_TYPE_WRITE, // Configure audio
30         VC_AUDIO_MSG_TYPE_MAX
31 };
32
33 /* configure the audio */
34
35 struct vc_audio_config {
36         u32 channels;
37         u32 samplerate;
38         u32 bps;
39 };
40
41 struct vc_audio_control {
42         u32 volume;
43         u32 dest;
44 };
45
46 struct vc_audio_open {
47         u32 dummy;
48 };
49
50 struct vc_audio_close {
51         u32 dummy;
52 };
53
54 struct vc_audio_start {
55         u32 dummy;
56 };
57
58 struct vc_audio_stop {
59         u32 draining;
60 };
61
62 /* configure the write audio samples */
63 struct vc_audio_write {
64         u32 count; // in bytes
65         u32 cookie1;
66         u32 cookie2;
67         s16 silence;
68         s16 max_packet;
69 };
70
71 /* Generic result for a request (VC->HOST) */
72 struct vc_audio_result {
73         s32 success; // Success value
74 };
75
76 /* Generic result for a request (VC->HOST) */
77 struct vc_audio_complete {
78         s32 count; // Success value
79         u32 cookie1;
80         u32 cookie2;
81 };
82
83 /* Message header for all messages in HOST->VC direction */
84 struct vc_audio_msg {
85         s32 type; /* Message type (VC_AUDIO_MSG_TYPE) */
86         union {
87                 struct vc_audio_config config;
88                 struct vc_audio_control control;
89                 struct vc_audio_open open;
90                 struct vc_audio_close close;
91                 struct vc_audio_start start;
92                 struct vc_audio_stop stop;
93                 struct vc_audio_write write;
94                 struct vc_audio_result result;
95                 struct vc_audio_complete complete;
96         };
97 };
98
99 #endif /* _VC_AUDIO_DEFS_H_ */