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