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