xref: /haiku/src/add-ons/kernel/drivers/audio/ice1712/multi.h (revision 7a74a5df454197933bc6e80a542102362ee98703)
1 /*
2  * ice1712 BeOS/Haiku Driver for VIA - VT1712 Multi Channel Audio Controller
3  *
4  * Copyright (c) 2002, Jerome Duval		(jerome.duval@free.fr)
5  * Copyright (c) 2003, Marcus Overhagen	(marcus@overhagen.de)
6  * Copyright (c) 2007, Jerome Leveque	(leveque.jerome@neuf.fr)
7  *
8  * All rights reserved
9  * Distributed under the terms of the MIT license.
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 ice1712_get_description(ice1712 *card, multi_description *data);
55 status_t ice1712_get_enabled_channels(ice1712 *card,
56 			multi_channel_enable *data);
57 status_t ice1712_set_enabled_channels(ice1712 *card,
58 			multi_channel_enable *data);
59 status_t ice1712_get_global_format(ice1712 *card, multi_format_info *data);
60 status_t ice1712_set_global_format(ice1712 *card, multi_format_info *data);
61 status_t ice1712_get_mix(ice1712 *card, multi_mix_value_info *data);
62 status_t ice1712_set_mix(ice1712 *card, multi_mix_value_info *data);
63 status_t ice1712_list_mix_channels(ice1712 *card,
64 			multi_mix_channel_info *data);
65 status_t ice1712_list_mix_controls(ice1712 *card,
66 			multi_mix_control_info *data);
67 status_t ice1712_list_mix_connections(ice1712 *card,
68 			multi_mix_connection_info *data);
69 status_t ice1712_get_buffers(ice1712 *card, multi_buffer_list *data);
70 status_t ice1712_buffer_exchange(ice1712 *card, multi_buffer_info *data);
71 status_t ice1712_buffer_force_stop(ice1712 *card);
72 
73 
74 #endif //_ICE1712_MULTI_H_
75 
76