/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright 2011 Broadcom Corporation.  All rights reserved. */

#ifndef _VC_AUDIO_DEFS_H_
#define _VC_AUDIO_DEFS_H_

#define VC_AUDIOSERV_MIN_VER 1
#define VC_AUDIOSERV_VER 2

/* FourCC codes used for VCHI communication */
#define VC_AUDIO_SERVER_NAME  MAKE_FOURCC("AUDS")
#define VC_AUDIO_WRITE_COOKIE1 MAKE_FOURCC("BCMA")
#define VC_AUDIO_WRITE_COOKIE2 MAKE_FOURCC("DATA")

/*
 *  List of screens that are currently supported
 *  All message types supported for HOST->VC direction
 */

enum vc_audio_msg_type {
	VC_AUDIO_MSG_TYPE_RESULT, // Generic result
	VC_AUDIO_MSG_TYPE_COMPLETE, // Generic result
	VC_AUDIO_MSG_TYPE_CONFIG, // Configure audio
	VC_AUDIO_MSG_TYPE_CONTROL, // Configure audio
	VC_AUDIO_MSG_TYPE_OPEN, // Configure audio
	VC_AUDIO_MSG_TYPE_CLOSE, // Configure audio
	VC_AUDIO_MSG_TYPE_START, // Configure audio
	VC_AUDIO_MSG_TYPE_STOP, // Configure audio
	VC_AUDIO_MSG_TYPE_WRITE, // Configure audio
	VC_AUDIO_MSG_TYPE_MAX
};

/* configure the audio */

struct vc_audio_config {
	u32 channels;
	u32 samplerate;
	u32 bps;
};

struct vc_audio_control {
	u32 volume;
	u32 dest;
};

struct vc_audio_open {
	u32 dummy;
};

struct vc_audio_close {
	u32 dummy;
};

struct vc_audio_start {
	u32 dummy;
};

struct vc_audio_stop {
	u32 draining;
};

/* configure the write audio samples */
struct vc_audio_write {
	u32 count; // in bytes
	u32 cookie1;
	u32 cookie2;
	s16 silence;
	s16 max_packet;
};

/* Generic result for a request (VC->HOST) */
struct vc_audio_result {
	s32 success; // Success value
};

/* Generic result for a request (VC->HOST) */
struct vc_audio_complete {
	s32 count; // Success value
	u32 cookie1;
	u32 cookie2;
};

/* Message header for all messages in HOST->VC direction */
struct vc_audio_msg {
	s32 type; /* Message type (VC_AUDIO_MSG_TYPE) */
	union {
		struct vc_audio_config config;
		struct vc_audio_control control;
		struct vc_audio_open open;
		struct vc_audio_close close;
		struct vc_audio_start start;
		struct vc_audio_stop stop;
		struct vc_audio_write write;
		struct vc_audio_result result;
		struct vc_audio_complete complete;
	};
};

#endif /* _VC_AUDIO_DEFS_H_ */
