1 /** 2 * Copyright (C) 2008, Creative Technology Ltd. All Rights Reserved. 3 * 4 * This source file is released under GPL v2 license (no other versions). 5 * See the COPYING file included in the main directory of this source 6 * distribution for the license terms and conditions. 7 * 8 * @File ctmixer.h 9 * 10 * @Brief 11 * This file contains the definition of the mixer device functions. 12 * 13 * @Author Liu Chun 14 * @Date Mar 28 2008 15 * 16 */ 17 18 #ifndef CTMIXER_H 19 #define CTMIXER_H 20 21 #include "ctatc.h" 22 #include "ctresource.h" 23 24 #define INIT_VOL 0x1c00 25 26 enum MIXER_PORT_T { 27 MIX_WAVE_FRONT, 28 MIX_WAVE_REAR, 29 MIX_WAVE_CENTLFE, 30 MIX_WAVE_SURROUND, 31 MIX_SPDIF_OUT, 32 MIX_PCMO_FRONT, 33 MIX_MIC_IN, 34 MIX_LINE_IN, 35 MIX_SPDIF_IN, 36 MIX_PCMI_FRONT, 37 MIX_PCMI_REAR, 38 MIX_PCMI_CENTLFE, 39 MIX_PCMI_SURROUND, 40 41 NUM_MIX_PORTS 42 }; 43 44 /* alsa mixer descriptor */ 45 struct ct_mixer { 46 struct ct_atc *atc; 47 48 void **amixers; /* amixer resources for volume control */ 49 void **sums; /* sum resources for signal collection */ 50 unsigned int switch_state; /* A bit-map to indicate state of switches */ 51 52 int (*get_output_ports)(struct ct_mixer *mixer, enum MIXER_PORT_T type, 53 struct rsc **rleft, struct rsc **rright); 54 55 int (*set_input_left)(struct ct_mixer *mixer, 56 enum MIXER_PORT_T type, struct rsc *rsc); 57 int (*set_input_right)(struct ct_mixer *mixer, 58 enum MIXER_PORT_T type, struct rsc *rsc); 59 }; 60 61 int ct_alsa_mix_create(struct ct_atc *atc, 62 enum CTALSADEVS device, 63 const char *device_name); 64 int ct_mixer_create(struct ct_atc *atc, struct ct_mixer **rmixer); 65 int ct_mixer_destroy(struct ct_mixer *mixer); 66 67 #endif /* CTMIXER_H */ 68