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