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