xref: /haiku/src/add-ons/kernel/drivers/audio/ice1712/multi.h (revision fce4895d1884da5ae6fb299d23c735c598e690b1)
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 
54 status_t ice1712Get_Description(ice1712 *card, multi_description *data);
55 status_t ice1712Get_Channel(ice1712 *card, multi_channel_enable *data);
56 status_t ice1712Set_Channel(ice1712 *card, multi_channel_enable *data);
57 status_t ice1712Get_Format(ice1712 *card, multi_format_info *data);
58 status_t ice1712Set_Format(ice1712 *card, multi_format_info *data);
59 status_t ice1712Get_MixValue(ice1712 *card, multi_mix_value_info *data);
60 status_t ice1712Set_MixValue(ice1712 *card, multi_mix_value_info *data);
61 status_t ice1712Get_MixValueChannel(ice1712 *card,
62 	multi_mix_channel_info *data);
63 status_t ice1712Get_MixValueControls(ice1712 *card,
64 	multi_mix_control_info *data);
65 status_t ice1712Get_MixValueConnections(ice1712 *card,
66 	multi_mix_connection_info *data);
67 status_t ice1712Buffer_Get(ice1712 *card, multi_buffer_list *data);
68 status_t ice1712Buffer_Exchange(ice1712 *card, multi_buffer_info *data);
69 status_t ice1712Buffer_Stop(ice1712 *card);
70 
71 #endif //_ICE1712_MULTI_H_
72 
73