18cc72361SWai Yew CHAY /** 28cc72361SWai Yew CHAY * Copyright (C) 2008, Creative Technology Ltd. All Rights Reserved. 38cc72361SWai Yew CHAY * 48cc72361SWai Yew CHAY * This source file is released under GPL v2 license (no other versions). 58cc72361SWai Yew CHAY * See the COPYING file included in the main directory of this source 68cc72361SWai Yew CHAY * distribution for the license terms and conditions. 78cc72361SWai Yew CHAY * 88cc72361SWai Yew CHAY * @File ctmixer.h 98cc72361SWai Yew CHAY * 108cc72361SWai Yew CHAY * @Brief 118cc72361SWai Yew CHAY * This file contains the definition of the mixer device functions. 128cc72361SWai Yew CHAY * 138cc72361SWai Yew CHAY * @Author Liu Chun 148cc72361SWai Yew CHAY * @Date Mar 28 2008 158cc72361SWai Yew CHAY * 168cc72361SWai Yew CHAY */ 178cc72361SWai Yew CHAY 188cc72361SWai Yew CHAY #ifndef CTMIXER_H 198cc72361SWai Yew CHAY #define CTMIXER_H 208cc72361SWai Yew CHAY 218cc72361SWai Yew CHAY #include "ctatc.h" 228cc72361SWai Yew CHAY #include "ctresource.h" 238cc72361SWai Yew CHAY 248cc72361SWai Yew CHAY #define INIT_VOL 0x1c00 258cc72361SWai Yew CHAY 268cc72361SWai Yew CHAY enum MIXER_PORT_T { 278cc72361SWai Yew CHAY MIX_WAVE_FRONT, 288cc72361SWai Yew CHAY MIX_WAVE_REAR, 298cc72361SWai Yew CHAY MIX_WAVE_CENTLFE, 308cc72361SWai Yew CHAY MIX_WAVE_SURROUND, 318cc72361SWai Yew CHAY MIX_SPDIF_OUT, 328cc72361SWai Yew CHAY MIX_PCMO_FRONT, 338cc72361SWai Yew CHAY MIX_MIC_IN, 348cc72361SWai Yew CHAY MIX_LINE_IN, 358cc72361SWai Yew CHAY MIX_SPDIF_IN, 368cc72361SWai Yew CHAY MIX_PCMI_FRONT, 378cc72361SWai Yew CHAY MIX_PCMI_REAR, 388cc72361SWai Yew CHAY MIX_PCMI_CENTLFE, 398cc72361SWai Yew CHAY MIX_PCMI_SURROUND, 408cc72361SWai Yew CHAY 418cc72361SWai Yew CHAY NUM_MIX_PORTS 428cc72361SWai Yew CHAY }; 438cc72361SWai Yew CHAY 448cc72361SWai Yew CHAY /* alsa mixer descriptor */ 458cc72361SWai Yew CHAY struct ct_mixer { 468cc72361SWai Yew CHAY struct ct_atc *atc; 478cc72361SWai Yew CHAY 488cc72361SWai Yew CHAY void **amixers; /* amixer resources for volume control */ 498cc72361SWai Yew CHAY void **sums; /* sum resources for signal collection */ 508cc72361SWai Yew CHAY unsigned int switch_state; /* A bit-map to indicate state of switches */ 518cc72361SWai Yew CHAY 528cc72361SWai Yew CHAY int (*get_output_ports)(struct ct_mixer *mixer, enum MIXER_PORT_T type, 538cc72361SWai Yew CHAY struct rsc **rleft, struct rsc **rright); 548cc72361SWai Yew CHAY 558cc72361SWai Yew CHAY int (*set_input_left)(struct ct_mixer *mixer, 568cc72361SWai Yew CHAY enum MIXER_PORT_T type, struct rsc *rsc); 578cc72361SWai Yew CHAY int (*set_input_right)(struct ct_mixer *mixer, 588cc72361SWai Yew CHAY enum MIXER_PORT_T type, struct rsc *rsc); 59*c7561cd8STakashi Iwai #ifdef CONFIG_PM_SLEEP 6029959a09SWai Yew CHAY int (*resume)(struct ct_mixer *mixer); 6129959a09SWai Yew CHAY #endif 628cc72361SWai Yew CHAY }; 638cc72361SWai Yew CHAY 648cc72361SWai Yew CHAY int ct_alsa_mix_create(struct ct_atc *atc, 658cc72361SWai Yew CHAY enum CTALSADEVS device, 668cc72361SWai Yew CHAY const char *device_name); 678cc72361SWai Yew CHAY int ct_mixer_create(struct ct_atc *atc, struct ct_mixer **rmixer); 688cc72361SWai Yew CHAY int ct_mixer_destroy(struct ct_mixer *mixer); 698cc72361SWai Yew CHAY 708cc72361SWai Yew CHAY #endif /* CTMIXER_H */ 71