1/*
2 * Copyright 2004-2015 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Jérôme Duval, jerome.duval@free.fr
7 *		Marcus Overhagen, marcus@overhagen.de
8 *		Jérôme Lévêque, leveque.jerome@gmail.com
9 */
10
11
12#ifndef _ICE1712_MULTI_H_
13#define _ICE1712_MULTI_H_
14
15#include "ice1712.h"
16
17#include <hmulti_audio.h>
18
19#define ICE1712_MULTI_CONTROL_FIRSTID		(0x80000000)
20
21#define ICE1712_MULTI_CONTROL_TYPE_MASK		(0x70000000)
22#define ICE1712_MULTI_CONTROL_TYPE_COMBO	(0x10000000)
23#define ICE1712_MULTI_CONTROL_TYPE_VOLUME	(0x20000000)
24#define ICE1712_MULTI_CONTROL_TYPE_OUTPUT	(0x30000000)
25#define ICE1712_MULTI_CONTROL_TYPE_OTHER4	(0x40000000)
26#define ICE1712_MULTI_CONTROL_TYPE_OTHER5	(0x50000000)
27#define ICE1712_MULTI_CONTROL_TYPE_OTHER6	(0x60000000)
28#define ICE1712_MULTI_CONTROL_TYPE_OTHER7	(0x70000000)
29
30#define ICE1712_MULTI_CONTROL_CHANNEL_MASK	(0x0FF00000)
31#define ICE1712_MULTI_CONTROL_INDEX_MASK	(0x00000FFF)
32
33#define ICE1712_MULTI_SET_CHANNEL(_c_)		((_c_ << 20) & \
34	ICE1712_MULTI_CONTROL_CHANNEL_MASK)
35#define ICE1712_MULTI_GET_CHANNEL(_c_)		((_c_ & \
36	ICE1712_MULTI_CONTROL_CHANNEL_MASK) >> 20)
37
38#define ICE1712_MULTI_SET_INDEX(_i_)		(_i_ & \
39	ICE1712_MULTI_CONTROL_INDEX_MASK)
40#define ICE1712_MULTI_GET_INDEX(_i_)		(_i_ & \
41	ICE1712_MULTI_CONTROL_INDEX_MASK)
42
43/*
44#define ICE1712_MULTI_CONTROL_VOLUME_PB		(0x00010000)
45#define ICE1712_MULTI_CONTROL_VOLUME_REC	(0x00020000)
46#define ICE1712_MULTI_CONTROL_MUTE			(0x00040000)
47#define ICE1712_MULTI_CONTROL_MUX			(0x00080000)
48#define ICE1712_MULTI_CONTROL_MASK			(0x00FF0000)
49#define ICE1712_MULTI_CONTROL_CHANNEL_MASK	(0x000000FF)
50*/
51
52#define CONTROL_IS_MASTER (0)
53
54status_t ice1712Get_Description(ice1712 *card, multi_description *data);
55status_t ice1712Get_Channel(ice1712 *card, multi_channel_enable *data);
56status_t ice1712Set_Channel(ice1712 *card, multi_channel_enable *data);
57status_t ice1712Get_Format(ice1712 *card, multi_format_info *data);
58status_t ice1712Set_Format(ice1712 *card, multi_format_info *data);
59status_t ice1712Get_MixValue(ice1712 *card, multi_mix_value_info *data);
60status_t ice1712Set_MixValue(ice1712 *card, multi_mix_value_info *data);
61status_t ice1712Get_MixValueChannel(ice1712 *card,
62	multi_mix_channel_info *data);
63status_t ice1712Get_MixValueControls(ice1712 *card,
64	multi_mix_control_info *data);
65status_t ice1712Get_MixValueConnections(ice1712 *card,
66	multi_mix_connection_info *data);
67status_t ice1712Buffer_Get(ice1712 *card, multi_buffer_list *data);
68status_t ice1712Buffer_Exchange(ice1712 *card, multi_buffer_info *data);
69status_t ice1712Buffer_Stop(ice1712 *card);
70
71#endif //_ICE1712_MULTI_H_
72
73