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_ */ 99