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
19enum 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
34struct vc_audio_config {
35 u32 channels;
36 u32 samplerate;
37 u32 bps;
38};
39
40struct vc_audio_control {
41 u32 volume;
42 u32 dest;
43};
44
45struct vc_audio_open {
46 u32 dummy;
47};
48
49struct vc_audio_close {
50 u32 dummy;
51};
52
53struct vc_audio_start {
54 u32 dummy;
55};
56
57struct vc_audio_stop {
58 u32 draining;
59};
60
61/* configure the write audio samples */
62struct 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) */
71struct vc_audio_result {
72 s32 success; // Success value
73};
74
75/* Generic result for a request (VC->HOST) */
76struct 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 */
83struct 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_ */
99

source code of linux/drivers/staging/vc04_services/bcm2835-audio/vc_vchi_audioserv_defs.h